Compare commits
232 Commits
jazz-nodej
...
jazz-react
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3baa951bb9 | ||
|
|
b726e31669 | ||
|
|
63bb31e0ad | ||
|
|
d059460abd | ||
|
|
ba81951331 | ||
|
|
bd132bb9ad | ||
|
|
1ee435ad95 | ||
|
|
646ad330ae | ||
|
|
af8e6e3f82 | ||
|
|
f247525dfe | ||
|
|
012022db2b | ||
|
|
da92891498 | ||
|
|
b0c55720f8 | ||
|
|
a3d825fc6f | ||
|
|
29ca2e6f65 | ||
|
|
07a683c13d | ||
|
|
e53f02d6d7 | ||
|
|
4915bfa26d | ||
|
|
af45aac5f2 | ||
|
|
1136d9b744 | ||
|
|
92e78dc262 | ||
|
|
bf76d798c4 | ||
|
|
627f8c4c28 | ||
|
|
a1e0410863 | ||
|
|
03897a2689 | ||
|
|
823f546028 | ||
|
|
9bc54d1939 | ||
|
|
30780c05f0 | ||
|
|
118b6294ac | ||
|
|
6dc9b9d2ec | ||
|
|
ccbcee5102 | ||
|
|
0ae2067c3c | ||
|
|
2137938ead | ||
|
|
d14bb57ff5 | ||
|
|
3f42a4ddf9 | ||
|
|
0eed228170 | ||
|
|
a519537701 | ||
|
|
43c79cac2a | ||
|
|
44dbaa00d4 | ||
|
|
a0df32e81a | ||
|
|
236d8226d8 | ||
|
|
1220fa5d97 | ||
|
|
f3a5f83f25 | ||
|
|
a1bd6fc79b | ||
|
|
0f83320222 | ||
|
|
a3c4067de3 | ||
|
|
3042627748 | ||
|
|
8cea1e96cf | ||
|
|
64bb9ba90e | ||
|
|
f136dfe39b | ||
|
|
b32ae6240c | ||
|
|
fc4a89f77f | ||
|
|
7a6f8db509 | ||
|
|
086b9af565 | ||
|
|
5e95d8b76e | ||
|
|
47e0b68c2e | ||
|
|
5cc58c8e02 | ||
|
|
9df644c578 | ||
|
|
a20e430e7f | ||
|
|
1e625f3c12 | ||
|
|
8b3686c7ce | ||
|
|
bce04ee06d | ||
|
|
f2e9115f4c | ||
|
|
6854f9930c | ||
|
|
ee0897d9a8 | ||
|
|
243ab074eb | ||
|
|
385659b243 | ||
|
|
938f9256db | ||
|
|
88521721bf | ||
|
|
2701630582 | ||
|
|
07ce619fa2 | ||
|
|
895de1a470 | ||
|
|
4450761a7b | ||
|
|
08b3d65c0b | ||
|
|
5dac731f26 | ||
|
|
e99308cda2 | ||
|
|
88e314d980 | ||
|
|
62e0e5d721 | ||
|
|
aa16ad9c1c | ||
|
|
ada802bff8 | ||
|
|
44e1d140ca | ||
|
|
e0ef3fc1de | ||
|
|
a31ac66213 | ||
|
|
b444b2e96a | ||
|
|
8fcc4b5e50 | ||
|
|
33bfbee9cf | ||
|
|
d08e4e263b | ||
|
|
471b8c6a15 | ||
|
|
7dd080d907 | ||
|
|
69c81a3e90 | ||
|
|
d8ed987461 | ||
|
|
beb45c2656 | ||
|
|
e6241dfb5a | ||
|
|
1d71ca1511 | ||
|
|
65941c7f87 | ||
|
|
a37dc1c22f | ||
|
|
774f232390 | ||
|
|
12c19fc940 | ||
|
|
f0ae3ace13 | ||
|
|
cc973137b7 | ||
|
|
7fff0e0b36 | ||
|
|
6909357f64 | ||
|
|
59ff77e0dc | ||
|
|
338f5421f4 | ||
|
|
a7590d14d6 | ||
|
|
e0daca300b | ||
|
|
a5347b613b | ||
|
|
9de58bb098 | ||
|
|
de1be9ac18 | ||
|
|
43df7f2b48 | ||
|
|
5f4f70d06d | ||
|
|
a9aa61c2c0 | ||
|
|
bc0d2fcd23 | ||
|
|
f5675c49a2 | ||
|
|
da13e9cf7c | ||
|
|
ab2546ca71 | ||
|
|
43c36a8c20 | ||
|
|
24ad5f42b5 | ||
|
|
c620d9c87c | ||
|
|
59121a1f52 | ||
|
|
f766de8d9e | ||
|
|
eb8621550a | ||
|
|
5d28413648 | ||
|
|
d0ed7177a3 | ||
|
|
091d753ab4 | ||
|
|
87f917d297 | ||
|
|
88acea362a | ||
|
|
0107f4939d | ||
|
|
f468b89994 | ||
|
|
617ea91a13 | ||
|
|
b0ef1259ae | ||
|
|
a0ba4f235f | ||
|
|
e197900fc5 | ||
|
|
1af6072299 | ||
|
|
510e8874e1 | ||
|
|
ed7ee85304 | ||
|
|
ac726421d2 | ||
|
|
585b22941e | ||
|
|
5d557a830a | ||
|
|
f0188df13b | ||
|
|
4c8ce0a24f | ||
|
|
8645f8ce86 | ||
|
|
d01d467136 | ||
|
|
ad4fcbafa4 | ||
|
|
05c51d5a85 | ||
|
|
ab20a81751 | ||
|
|
adad802ceb | ||
|
|
32b1cc9dab | ||
|
|
5c236e5c3c | ||
|
|
7616d5789b | ||
|
|
631486e235 | ||
|
|
5e0d63a4d6 | ||
|
|
ba988cbb90 | ||
|
|
6f6800bcd8 | ||
|
|
90290902e8 | ||
|
|
d8582fc9ed | ||
|
|
5c76e37f14 | ||
|
|
0117d0c9b9 | ||
|
|
b90c766c05 | ||
|
|
262a36e456 | ||
|
|
cb1df65beb | ||
|
|
ea91e63ff2 | ||
|
|
8eae2eb31e | ||
|
|
c9044f5123 | ||
|
|
24340173fa | ||
|
|
53e88993a0 | ||
|
|
ece168878b | ||
|
|
cad84db52b | ||
|
|
342a385111 | ||
|
|
f87ba7d927 | ||
|
|
7c7f55b85c | ||
|
|
0e5b9f5292 | ||
|
|
2f5af3dece | ||
|
|
2c35e2ba85 | ||
|
|
0a4f79d5a4 | ||
|
|
43cb7abba7 | ||
|
|
25f76f6b02 | ||
|
|
6a56561c98 | ||
|
|
2ac31e7c51 | ||
|
|
1bbefab5a9 | ||
|
|
1143b32cf3 | ||
|
|
51ada27810 | ||
|
|
954ecb3984 | ||
|
|
05089270d9 | ||
|
|
fecc81111a | ||
|
|
4d3e7dbcd5 | ||
|
|
ee65f18fd9 | ||
|
|
bcbc4636ed | ||
|
|
8c323c4513 | ||
|
|
4103ea0c88 | ||
|
|
58905ae8f4 | ||
|
|
733ebec902 | ||
|
|
10a3834668 | ||
|
|
593c3aeb6e | ||
|
|
a55d71c28d | ||
|
|
c030c7a57e | ||
|
|
e5b4c0448a | ||
|
|
0d516a3c6a | ||
|
|
271ff3eb40 | ||
|
|
dcc836ff98 | ||
|
|
65f630fb44 | ||
|
|
b68f85542b | ||
|
|
f122a9f938 | ||
|
|
22da4ea136 | ||
|
|
80e86c92b2 | ||
|
|
e15d994df6 | ||
|
|
48ac92bc67 | ||
|
|
226b1171e6 | ||
|
|
29228e21fe | ||
|
|
302a1e6660 | ||
|
|
d3603625fd | ||
|
|
fa94d8c171 | ||
|
|
aeb094baa1 | ||
|
|
18f3497397 | ||
|
|
8be7158d1f | ||
|
|
cae3a9ee32 | ||
|
|
6260045140 | ||
|
|
466d79d9a6 | ||
|
|
67776c77a0 | ||
|
|
e6868d3030 | ||
|
|
c8ae3a36ca | ||
|
|
bf9c158455 | ||
|
|
1301112a6b | ||
|
|
c447f08029 | ||
|
|
5a63cbae9b | ||
|
|
7d06f1dbf4 | ||
|
|
e48a3e4c27 | ||
|
|
a326ed971c | ||
|
|
6139803679 | ||
|
|
bb2052e1f2 | ||
|
|
40af02acb3 | ||
|
|
3bdb753b78 |
39
.github/actions/android-emulator/action.yml
vendored
Normal file
39
.github/actions/android-emulator/action.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
name: Setup Android Emulator
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
api-level:
|
||||||
|
description: 'API level to use for the emulator'
|
||||||
|
required: true
|
||||||
|
default: '29'
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Enable KVM
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
|
||||||
|
sudo udevadm control --reload-rules
|
||||||
|
sudo udevadm trigger --name-match=kvm
|
||||||
|
|
||||||
|
- name: Gradle cache
|
||||||
|
uses: gradle/actions/setup-gradle@v4
|
||||||
|
|
||||||
|
- name: AVD cache
|
||||||
|
uses: useblacksmith/cache@v5
|
||||||
|
id: avd-cache
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.android/avd/*
|
||||||
|
~/.android/adb*
|
||||||
|
key: avd-${{ inputs.api-level }}
|
||||||
|
|
||||||
|
- name: Create AVD and Generate Snapshot for Caching
|
||||||
|
if: steps.avd-cache.outputs.cache-hit != 'true'
|
||||||
|
uses: reactivecircus/android-emulator-runner@v2
|
||||||
|
with:
|
||||||
|
api-level: ${{ inputs.api-level }}
|
||||||
|
force-avd-creation: false
|
||||||
|
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -no-metrics
|
||||||
|
disable-animations: false
|
||||||
|
script: echo "Generated AVD snapshot for caching."
|
||||||
1
.github/workflows/build-examples.yaml
vendored
1
.github/workflows/build-examples.yaml
vendored
@@ -19,7 +19,6 @@ jobs:
|
|||||||
"pets",
|
"pets",
|
||||||
"reactions",
|
"reactions",
|
||||||
"todo",
|
"todo",
|
||||||
"onboarding",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
2
.github/workflows/build-starters.yaml
vendored
2
.github/workflows/build-starters.yaml
vendored
@@ -9,7 +9,7 @@ jobs:
|
|||||||
runs-on: blacksmith-4vcpu-ubuntu-2204
|
runs-on: blacksmith-4vcpu-ubuntu-2204
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
starter: ["react-demo-auth-tailwind"]
|
starter: ["react-passkey-auth"]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|||||||
64
.github/workflows/e2e-rn-test.yml
vendored
64
.github/workflows/e2e-rn-test.yml
vendored
@@ -4,14 +4,16 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
types: [opened, synchronize, reopened]
|
types: [opened, synchronize, reopened]
|
||||||
paths:
|
paths:
|
||||||
|
- ".github/actions/android-emulator/**"
|
||||||
|
- ".github/actions/source-code/**"
|
||||||
- ".github/workflows/e2e-rn-test.yml"
|
- ".github/workflows/e2e-rn-test.yml"
|
||||||
- "examples/chat-rn/**"
|
- "examples/chat-rn/**"
|
||||||
- "examples/chat-rn-clerk/**"
|
- "examples/chat-rn-clerk/**"
|
||||||
- "packages/jazz-react-native*/**"
|
- "packages/**"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
e2e-tests:
|
e2e-tests:
|
||||||
runs-on: macos-latest
|
runs-on: blacksmith-4vcpu-ubuntu-2204
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@@ -24,55 +26,47 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
mkdir -p ~/output
|
mkdir -p ~/output
|
||||||
|
|
||||||
|
- name: Setup JDK
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: corretto
|
||||||
|
java-version: 22
|
||||||
|
cache: gradle
|
||||||
|
|
||||||
- name: Pnpm Build
|
- name: Pnpm Build
|
||||||
run: pnpm turbo build --filter="./packages/*"
|
run: pnpm turbo build --filter="./packages/*"
|
||||||
|
|
||||||
- name: iOS Simulator
|
|
||||||
id: ios-simulator
|
|
||||||
uses: futureware-tech/simulator-action@v4
|
|
||||||
with:
|
|
||||||
os: iOS
|
|
||||||
wait_for_boot: true
|
|
||||||
|
|
||||||
- name: chat-rn App Pre Build
|
- name: chat-rn App Pre Build
|
||||||
working-directory: ./examples/chat-rn
|
working-directory: ./examples/chat-rn
|
||||||
run: |
|
run: |
|
||||||
pnpm build
|
pnpm build
|
||||||
pnpm expo prebuild --clean
|
pnpm expo prebuild --clean
|
||||||
|
|
||||||
- name: chat-rn App Build
|
|
||||||
working-directory: ./examples/chat-rn/ios
|
|
||||||
run: |
|
|
||||||
xcodebuild -scheme "jazzchatrn" \
|
|
||||||
-workspace jazzchatrn.xcworkspace \
|
|
||||||
-archivePath $RUNNER_TEMP/jazzchatrn.xcarchive \
|
|
||||||
-derivedDataPath $RUNNER_TEMP/build \
|
|
||||||
-destination "id=${{ steps.ios-simulator.outputs.udid }}" \
|
|
||||||
-configuration Release \
|
|
||||||
-sdk iphonesimulator \
|
|
||||||
build
|
|
||||||
xcrun simctl install booted $RUNNER_TEMP/build/Build/Products/Release-iphonesimulator/jazzchatrn.app
|
|
||||||
xcrun simctl spawn booted log stream --level debug | tee ~/output/sim.log &
|
|
||||||
|
|
||||||
|
|
||||||
- name: Install Maestro
|
- name: Install Maestro
|
||||||
run: |
|
run: |
|
||||||
curl -fsSL "https://get.maestro.mobile.dev" | bash
|
curl -fsSL "https://get.maestro.mobile.dev" | bash
|
||||||
|
|
||||||
- name: chat-rn App Test
|
- name: Setup Android Emulator
|
||||||
id: e2e_test
|
id: android-emulator
|
||||||
working-directory: ./examples/chat-rn
|
uses: ./.github/actions/android-emulator/
|
||||||
continue-on-error: true
|
with:
|
||||||
run: |
|
api-level: 29
|
||||||
export PATH="$PATH":"$HOME/.maestro/bin"
|
|
||||||
export MAESTRO_DRIVER_STARTUP_TIMEOUT=300000 # setting to 5 mins 👀
|
|
||||||
export MAESTRO_CLI_NO_ANALYTICS=1
|
|
||||||
maestro test test/e2e/flow.yml
|
|
||||||
|
|
||||||
- name: Copy Maestro and Diagnostic Files
|
- name: Test App
|
||||||
|
uses: reactivecircus/android-emulator-runner@v2
|
||||||
|
id: e2e_test
|
||||||
|
continue-on-error: true
|
||||||
|
with:
|
||||||
|
api-level: 29
|
||||||
|
force-avd-creation: false
|
||||||
|
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -no-metrics
|
||||||
|
disable-animations: true
|
||||||
|
working-directory: ./examples/chat-rn/
|
||||||
|
script: ./test/e2e/run.sh
|
||||||
|
|
||||||
|
- name: Copy Maestro Output
|
||||||
if: steps.e2e_test.outcome != 'success'
|
if: steps.e2e_test.outcome != 'success'
|
||||||
run: |
|
run: |
|
||||||
cp -r ~/Library/Logs/DiagnosticReports/* ~/output
|
|
||||||
cp -r ~/.maestro/tests/* ~/output
|
cp -r ~/.maestro/tests/* ~/output
|
||||||
|
|
||||||
- name: Upload Output Files
|
- name: Upload Output Files
|
||||||
|
|||||||
2
.github/workflows/playwright.yml
vendored
2
.github/workflows/playwright.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
|||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
project: ["tests/e2e", "examples/chat", "examples/file-share-svelte", "examples/form", "examples/music-player", "examples/pets", "examples/onboarding", "starters/react-demo-auth-tailwind"]
|
project: ["tests/e2e", "examples/chat", "examples/file-share-svelte", "examples/form", "examples/music-player", "examples/pets", "starters/react-passkey-auth"]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|||||||
82
.github/workflows/pre-release.yml
vendored
82
.github/workflows/pre-release.yml
vendored
@@ -19,4 +19,84 @@ jobs:
|
|||||||
run: pnpm turbo build --filter="./packages/*"
|
run: pnpm turbo build --filter="./packages/*"
|
||||||
|
|
||||||
- name: Pre publish
|
- name: Pre publish
|
||||||
run: pnpm exec pkg-pr-new publish "./packages/*"
|
run: pnpm exec pkg-pr-new publish --json output.json --comment=off "./packages/*"
|
||||||
|
|
||||||
|
- name: Post or update comment
|
||||||
|
uses: actions/github-script@v6
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
script: |
|
||||||
|
const fs = require('fs');
|
||||||
|
const output = JSON.parse(fs.readFileSync('output.json', 'utf8'));
|
||||||
|
|
||||||
|
const packages = output.packages
|
||||||
|
.map((p) => `- ${p.name}: ${p.url}`)
|
||||||
|
.join('\n');
|
||||||
|
|
||||||
|
const sha =
|
||||||
|
context.event_name === 'pull_request'
|
||||||
|
? context.payload.pull_request.head.sha
|
||||||
|
: context.payload.after;
|
||||||
|
|
||||||
|
const resolutions = Object.fromEntries(
|
||||||
|
output.packages.map((p) => [p.name, p.url])
|
||||||
|
);
|
||||||
|
|
||||||
|
const commitUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/commit/${sha}`;
|
||||||
|
|
||||||
|
const body = `## Jazz pre-release
|
||||||
|
|
||||||
|
### Packages:
|
||||||
|
|
||||||
|
\`\`\`json
|
||||||
|
${JSON.stringify(resolutions, null, 4)}
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
[View Commit](${commitUrl})`;
|
||||||
|
|
||||||
|
async function logPublishInfo() {
|
||||||
|
console.log('\n' + '='.repeat(50));
|
||||||
|
console.log('Publish Information');
|
||||||
|
console.log('='.repeat(50));
|
||||||
|
console.log('\nPublished Packages:');
|
||||||
|
console.log(output.packages);
|
||||||
|
console.log('\nTemplates:');
|
||||||
|
console.log(templates);
|
||||||
|
console.log(`\nCommit URL: ${commitUrl}`);
|
||||||
|
console.log('\n' + '='.repeat(50));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (context.eventName === 'pull_request') {
|
||||||
|
if (context.issue.number) {
|
||||||
|
await github.rest.issues.createComment({
|
||||||
|
issue_number: context.issue.number,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
body: body,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else if (context.eventName === 'push') {
|
||||||
|
const pullRequests = await github.rest.pulls.list({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
state: 'open',
|
||||||
|
head: `${context.repo.owner}:${context.ref.replace(
|
||||||
|
'refs/heads/',
|
||||||
|
''
|
||||||
|
)}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (pullRequests.data.length > 0) {
|
||||||
|
await github.rest.issues.createComment({
|
||||||
|
issue_number: pullRequests.data[0].number,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
body: body,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log(
|
||||||
|
'No open pull request found for this push. Logging publish information to console:'
|
||||||
|
);
|
||||||
|
await logPublishInfo();
|
||||||
|
}
|
||||||
|
}
|
||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -7,11 +7,15 @@ docsTmp
|
|||||||
coverage
|
coverage
|
||||||
.direnv
|
.direnv
|
||||||
|
|
||||||
|
# Typescript
|
||||||
|
**/*.tsbuildinfo
|
||||||
|
|
||||||
# Next.js
|
# Next.js
|
||||||
**/.next
|
**/.next
|
||||||
|
|
||||||
# Vite output
|
# Vite output
|
||||||
**/dist
|
**/dist
|
||||||
|
__screenshots__
|
||||||
|
|
||||||
# Playwright
|
# Playwright
|
||||||
test-results
|
test-results
|
||||||
|
|||||||
@@ -48,7 +48,19 @@ You'll need Node.js 20.x or 22.x installed (we're working on support for 23.x),
|
|||||||
pnpm install
|
pnpm install
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Run tests** to verify everything is working:
|
3. **Install homepage dependencies**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd homepage && pnpm install
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Build the packages**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm build
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Run tests** to verify everything is working:
|
||||||
```bash
|
```bash
|
||||||
pnpm test
|
pnpm test
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,5 +1,74 @@
|
|||||||
# chat-rn-clerk
|
# chat-rn-clerk
|
||||||
|
|
||||||
|
## 1.0.72
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react-native@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
- jazz-react-native-auth-clerk@0.10.7
|
||||||
|
- jazz-react-native-media-images@0.10.7
|
||||||
|
|
||||||
|
## 1.0.71
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
- jazz-react-native@0.10.6
|
||||||
|
- jazz-react-native-auth-clerk@0.10.6
|
||||||
|
- jazz-react-native-media-images@0.10.6
|
||||||
|
|
||||||
|
## 1.0.70
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-react-native@0.10.5
|
||||||
|
- jazz-react-native-auth-clerk@0.10.5
|
||||||
|
- jazz-react-native-media-images@0.10.5
|
||||||
|
|
||||||
|
## 1.0.69
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react-native@0.10.4
|
||||||
|
- jazz-react-native-auth-clerk@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
- jazz-react-native-media-images@0.10.4
|
||||||
|
|
||||||
|
## 1.0.68
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-react-native@0.10.3
|
||||||
|
- jazz-react-native-auth-clerk@0.10.3
|
||||||
|
- jazz-react-native-media-images@0.10.3
|
||||||
|
|
||||||
|
## 1.0.67
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react-native@0.10.2
|
||||||
|
- jazz-react-native-auth-clerk@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
- jazz-react-native-media-images@0.10.2
|
||||||
|
|
||||||
|
## 1.0.66
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-react-native@0.10.1
|
||||||
|
- jazz-react-native-auth-clerk@0.10.1
|
||||||
|
- jazz-react-native-media-images@0.10.1
|
||||||
|
|
||||||
## 1.0.65
|
## 1.0.65
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ config.resolver.nodeModulesPaths = [
|
|||||||
path.resolve(workspaceRoot, "node_modules"),
|
path.resolve(workspaceRoot, "node_modules"),
|
||||||
];
|
];
|
||||||
config.resolver.sourceExts = ["mjs", "js", "json", "ts", "tsx"];
|
config.resolver.sourceExts = ["mjs", "js", "json", "ts", "tsx"];
|
||||||
config.resolver.unstable_enablePackageExports = true;
|
|
||||||
config.resolver.requireCycleIgnorePatterns = [
|
config.resolver.requireCycleIgnorePatterns = [
|
||||||
/(^|\/|\\)node_modules($|\/|\\)/,
|
/(^|\/|\\)node_modules($|\/|\\)/,
|
||||||
/(^|\/|\\)packages($|\/|\\)/,
|
/(^|\/|\\)packages($|\/|\\)/,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "chat-rn-clerk",
|
"name": "chat-rn-clerk",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"version": "1.0.65",
|
"version": "1.0.72",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "expo export -p ios",
|
"build": "expo export -p ios",
|
||||||
"start": "expo start",
|
"start": "expo start",
|
||||||
@@ -9,23 +9,22 @@
|
|||||||
"format-and-lint:fix": "biome check . --write",
|
"format-and-lint:fix": "biome check . --write",
|
||||||
"android": "expo run:android",
|
"android": "expo run:android",
|
||||||
"ios": "expo run:ios",
|
"ios": "expo run:ios",
|
||||||
"web": "expo start --web",
|
"web": "expo start --web"
|
||||||
"test": "jest --watchAll"
|
|
||||||
},
|
},
|
||||||
"jest": {
|
"jest": {
|
||||||
"preset": "jest-expo"
|
"preset": "jest-expo"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@azure/core-asynciterator-polyfill": "^1.0.2",
|
"@azure/core-asynciterator-polyfill": "^1.0.2",
|
||||||
|
"@bacons/text-decoder": "0.0.0",
|
||||||
"@bam.tech/react-native-image-resizer": "^3.0.11",
|
"@bam.tech/react-native-image-resizer": "^3.0.11",
|
||||||
|
"@craftzdog/react-native-buffer": "6.0.5",
|
||||||
"@clerk/clerk-expo": "^2.2.21",
|
"@clerk/clerk-expo": "^2.2.21",
|
||||||
"@expo/vector-icons": "^14.0.2",
|
"@expo/vector-icons": "^14.0.2",
|
||||||
"@op-engineering/op-sqlite": "^11.2.12",
|
"@op-engineering/op-sqlite": "^11.2.12",
|
||||||
"@react-native-community/netinfo": "^11.4.1",
|
"@react-native-community/netinfo": "^11.4.1",
|
||||||
"@react-navigation/native": "^7.0.13",
|
"@react-navigation/native": "^7.0.13",
|
||||||
"@react-navigation/native-stack": "^7.1.14",
|
"@react-navigation/native-stack": "^7.1.14",
|
||||||
"base-64": "^1.0.0",
|
|
||||||
"buffer": "^6.0.3",
|
|
||||||
"clsx": "^2.0.0",
|
"clsx": "^2.0.0",
|
||||||
"expo": "^52.0.0",
|
"expo": "^52.0.0",
|
||||||
"expo-build-properties": "~0.13.1",
|
"expo-build-properties": "~0.13.1",
|
||||||
@@ -51,18 +50,14 @@
|
|||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^18.3.1",
|
||||||
"react-native": "~0.76.3",
|
"react-native": "~0.76.3",
|
||||||
"react-native-fetch-api": "^3.0.0",
|
|
||||||
"react-native-gesture-handler": "~2.20.2",
|
"react-native-gesture-handler": "~2.20.2",
|
||||||
"react-native-get-random-values": "^1.11.0",
|
"react-native-get-random-values": "^1.11.0",
|
||||||
"react-native-polyfill-globals": "^3.1.0",
|
|
||||||
"react-native-quick-base64": "^2.1.2",
|
|
||||||
"react-native-reanimated": "~3.16.3",
|
"react-native-reanimated": "~3.16.3",
|
||||||
"react-native-safe-area-context": "4.12.0",
|
"react-native-safe-area-context": "4.12.0",
|
||||||
"react-native-screens": "4.1.0",
|
"react-native-screens": "4.1.0",
|
||||||
"react-native-url-polyfill": "^2.0.0",
|
"react-native-url-polyfill": "^2.0.0",
|
||||||
"react-native-web": "~0.19.13",
|
"react-native-web": "~0.19.13",
|
||||||
"text-encoding": "^0.7.0",
|
"readable-stream": "4.7.0"
|
||||||
"web-streams-polyfill": "^3.2.1"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.20.0",
|
"@babel/core": "^7.20.0",
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
import "react-native-polyfill-globals/auto";
|
/* eslint-disable import/order */
|
||||||
import "@azure/core-asynciterator-polyfill";
|
|
||||||
import { Buffer } from "buffer";
|
|
||||||
import { polyfillGlobal } from "react-native/Libraries/Utilities/PolyfillFunctions";
|
|
||||||
import { ReadableStream } from "web-streams-polyfill/ponyfill/es6";
|
|
||||||
|
|
||||||
|
// @ts-expect-error - @types/react-native doesn't cover this file
|
||||||
|
import { polyfillGlobal } from "react-native/Libraries/Utilities/PolyfillFunctions";
|
||||||
|
|
||||||
|
import { Buffer } from "@craftzdog/react-native-buffer";
|
||||||
polyfillGlobal("Buffer", () => Buffer);
|
polyfillGlobal("Buffer", () => Buffer);
|
||||||
|
|
||||||
|
// @ts-expect-error - @types/readable-stream doesn't have ReadableStream type
|
||||||
|
import { ReadableStream } from "readable-stream";
|
||||||
polyfillGlobal("ReadableStream", () => ReadableStream);
|
polyfillGlobal("ReadableStream", () => ReadableStream);
|
||||||
|
|
||||||
|
import "@azure/core-asynciterator-polyfill";
|
||||||
|
|
||||||
|
import "@bacons/text-decoder/install";
|
||||||
|
|
||||||
|
import "react-native-get-random-values";
|
||||||
|
|||||||
@@ -1,5 +1,60 @@
|
|||||||
# chat-rn
|
# chat-rn
|
||||||
|
|
||||||
|
## 1.0.69
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react-native@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
|
||||||
|
## 1.0.68
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
- jazz-react-native@0.10.6
|
||||||
|
|
||||||
|
## 1.0.67
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-react-native@0.10.5
|
||||||
|
|
||||||
|
## 1.0.66
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react-native@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
|
||||||
|
## 1.0.65
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-react-native@0.10.3
|
||||||
|
|
||||||
|
## 1.0.64
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react-native@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
|
||||||
|
## 1.0.63
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-react-native@0.10.1
|
||||||
|
|
||||||
## 1.0.62
|
## 1.0.62
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ config.resolver.nodeModulesPaths = [
|
|||||||
path.resolve(workspaceRoot, "node_modules"),
|
path.resolve(workspaceRoot, "node_modules"),
|
||||||
];
|
];
|
||||||
config.resolver.sourceExts = ["mjs", "js", "json", "ts", "tsx"];
|
config.resolver.sourceExts = ["mjs", "js", "json", "ts", "tsx"];
|
||||||
config.resolver.unstable_enablePackageExports = true;
|
|
||||||
config.resolver.requireCycleIgnorePatterns = [
|
config.resolver.requireCycleIgnorePatterns = [
|
||||||
/(^|\/|\\)node_modules($|\/|\\)/,
|
/(^|\/|\\)node_modules($|\/|\\)/,
|
||||||
/(^|\/|\\)packages($|\/|\\)/,
|
/(^|\/|\\)packages($|\/|\\)/,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "chat-rn",
|
"name": "chat-rn",
|
||||||
"version": "1.0.62",
|
"version": "1.0.69",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "expo export -p ios",
|
"build": "expo export -p ios",
|
||||||
@@ -13,17 +13,17 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@azure/core-asynciterator-polyfill": "^1.0.2",
|
"@azure/core-asynciterator-polyfill": "^1.0.2",
|
||||||
|
"@bacons/text-decoder": "0.0.0",
|
||||||
|
"@craftzdog/react-native-buffer": "6.0.5",
|
||||||
"@op-engineering/op-sqlite": "^11.2.12",
|
"@op-engineering/op-sqlite": "^11.2.12",
|
||||||
"@react-native-community/netinfo": "^11.4.1",
|
"@react-native-community/netinfo": "^11.4.1",
|
||||||
"@react-navigation/native": "^7.0.13",
|
"@react-navigation/native": "^7.0.13",
|
||||||
"@react-navigation/native-stack": "^7.1.14",
|
"@react-navigation/native-stack": "^7.1.14",
|
||||||
"base-64": "^1.0.0",
|
|
||||||
"clsx": "^2.0.0",
|
"clsx": "^2.0.0",
|
||||||
"expo": "^52.0.0",
|
"expo": "^52.0.0",
|
||||||
"expo-build-properties": "~0.13.1",
|
"expo-build-properties": "~0.13.1",
|
||||||
"expo-clipboard": "~7.0.0",
|
"expo-clipboard": "~7.0.0",
|
||||||
"expo-constants": "~17.0.3",
|
"expo-constants": "~17.0.3",
|
||||||
"expo-crypto": "~14.0.1",
|
|
||||||
"expo-dev-client": "~5.0.5",
|
"expo-dev-client": "~5.0.5",
|
||||||
"expo-linking": "~7.0.3",
|
"expo-linking": "~7.0.3",
|
||||||
"expo-secure-store": "~14.0.0",
|
"expo-secure-store": "~14.0.0",
|
||||||
@@ -34,14 +34,13 @@
|
|||||||
"nativewind": "^4.1.21",
|
"nativewind": "^4.1.21",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-native": "~0.76.3",
|
"react-native": "~0.76.3",
|
||||||
"react-native-fetch-api": "^3.0.0",
|
|
||||||
"react-native-get-random-values": "^1.11.0",
|
"react-native-get-random-values": "^1.11.0",
|
||||||
"react-native-polyfill-globals": "^3.1.0",
|
"react-native-nitro-modules": "0.21.0",
|
||||||
|
"react-native-quick-crypto": "1.0.0-beta.12",
|
||||||
"react-native-safe-area-context": "4.12.0",
|
"react-native-safe-area-context": "4.12.0",
|
||||||
"react-native-screens": "4.1.0",
|
"react-native-screens": "4.1.0",
|
||||||
"react-native-url-polyfill": "^2.0.0",
|
"react-native-url-polyfill": "^2.0.0",
|
||||||
"text-encoding": "^0.7.0",
|
"readable-stream": "4.7.0"
|
||||||
"web-streams-polyfill": "^3.2.1"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.20.0",
|
"@babel/core": "^7.20.0",
|
||||||
|
|||||||
@@ -1,6 +1,17 @@
|
|||||||
import "react-native-polyfill-globals/auto";
|
/* eslint-disable import/order */
|
||||||
import "@azure/core-asynciterator-polyfill";
|
|
||||||
import { polyfillGlobal } from "react-native/Libraries/Utilities/PolyfillFunctions";
|
|
||||||
import { ReadableStream } from "web-streams-polyfill/ponyfill/es6";
|
|
||||||
|
|
||||||
|
// @ts-expect-error - @types/react-native doesn't cover this file
|
||||||
|
import { polyfillGlobal } from "react-native/Libraries/Utilities/PolyfillFunctions";
|
||||||
|
|
||||||
|
import { Buffer } from "@craftzdog/react-native-buffer";
|
||||||
|
polyfillGlobal("Buffer", () => Buffer);
|
||||||
|
|
||||||
|
// @ts-expect-error - @types/readable-stream doesn't have ReadableStream type
|
||||||
|
import { ReadableStream } from "readable-stream";
|
||||||
polyfillGlobal("ReadableStream", () => ReadableStream);
|
polyfillGlobal("ReadableStream", () => ReadableStream);
|
||||||
|
|
||||||
|
import "@azure/core-asynciterator-polyfill";
|
||||||
|
|
||||||
|
import "@bacons/text-decoder/install";
|
||||||
|
|
||||||
|
import "react-native-get-random-values";
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import * as Linking from "expo-linking";
|
|||||||
import React, { StrictMode, useEffect, useState } from "react";
|
import React, { StrictMode, useEffect, useState } from "react";
|
||||||
import HandleInviteScreen from "./invite";
|
import HandleInviteScreen from "./invite";
|
||||||
|
|
||||||
import { JazzProvider } from "jazz-react-native";
|
import { JazzProvider, RNQuickCrypto } from "jazz-react-native";
|
||||||
import { apiKey } from "./apiKey";
|
import { apiKey } from "./apiKey";
|
||||||
import ChatScreen from "./chat";
|
import ChatScreen from "./chat";
|
||||||
|
|
||||||
@@ -50,6 +50,7 @@ function App() {
|
|||||||
sync={{
|
sync={{
|
||||||
peer: `wss://cloud.jazz.tools/?key=${apiKey}`,
|
peer: `wss://cloud.jazz.tools/?key=${apiKey}`,
|
||||||
}}
|
}}
|
||||||
|
CryptoProvider={RNQuickCrypto}
|
||||||
>
|
>
|
||||||
<NavigationContainer linking={linking} ref={navigationRef}>
|
<NavigationContainer linking={linking} ref={navigationRef}>
|
||||||
<Stack.Navigator initialRouteName={initialRoute}>
|
<Stack.Navigator initialRouteName={initialRoute}>
|
||||||
|
|||||||
@@ -44,4 +44,5 @@ appId: com.jazz.chatrn
|
|||||||
|
|
||||||
# logout
|
# logout
|
||||||
- tapOn: "Logout"
|
- tapOn: "Logout"
|
||||||
- assertVisible: "Anonymous user"
|
- assertVisible: "boorad"
|
||||||
|
- assertVisible: "bro, low key, it do be like that tho"
|
||||||
|
|||||||
20
examples/chat-rn/test/e2e/run.sh
Executable file
20
examples/chat-rn/test/e2e/run.sh
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# This script is necessary, because unlike ios, the android emulator action
|
||||||
|
# accepts a script, runs it as your tests, then terminates.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# build and install the app
|
||||||
|
echo "Building and installing Android app."
|
||||||
|
echo "If it fails, its output will be in artifact: android-install.log..."
|
||||||
|
cd ./android/
|
||||||
|
./gradlew installRelease >> ~/output/android-install.log 2>&1
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# run the e2e tests
|
||||||
|
export PATH="$PATH":"$HOME/.maestro/bin"
|
||||||
|
export MAESTRO_DRIVER_STARTUP_TIMEOUT=300000 # setting to 5 mins 👀
|
||||||
|
export MAESTRO_CLI_NO_ANALYTICS=1
|
||||||
|
export MAESTRO_CLI_ANALYSIS_NOTIFICATION_DISABLED=true
|
||||||
|
maestro test test/e2e/flow.yml
|
||||||
@@ -1,5 +1,68 @@
|
|||||||
# chat-vue
|
# chat-vue
|
||||||
|
|
||||||
|
## 0.0.56
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [bf76d79]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-browser@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
- jazz-vue@0.10.7
|
||||||
|
|
||||||
|
## 0.0.55
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
- jazz-browser@0.10.6
|
||||||
|
- jazz-vue@0.10.6
|
||||||
|
|
||||||
|
## 0.0.54
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-browser@0.10.5
|
||||||
|
- jazz-vue@0.10.5
|
||||||
|
|
||||||
|
## 0.0.53
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-browser@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
- jazz-vue@0.10.4
|
||||||
|
|
||||||
|
## 0.0.52
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-browser@0.10.3
|
||||||
|
- jazz-vue@0.10.3
|
||||||
|
|
||||||
|
## 0.0.51
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-browser@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
- jazz-vue@0.10.2
|
||||||
|
|
||||||
|
## 0.0.50
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-browser@0.10.1
|
||||||
|
- jazz-vue@0.10.1
|
||||||
|
|
||||||
## 0.0.49
|
## 0.0.49
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "chat-vue",
|
"name": "chat-vue",
|
||||||
"version": "0.0.49",
|
"version": "0.0.56",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1,5 +1,69 @@
|
|||||||
# jazz-example-chat
|
# jazz-example-chat
|
||||||
|
|
||||||
|
## 0.0.152
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
- jazz-browser-media-images@0.10.7
|
||||||
|
|
||||||
|
## 0.0.151
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1d71ca1]
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- hash-slash@0.2.2
|
||||||
|
- jazz-react@0.10.6
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
- jazz-browser-media-images@0.10.6
|
||||||
|
|
||||||
|
## 0.0.150
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-browser-media-images@0.10.5
|
||||||
|
- jazz-react@0.10.5
|
||||||
|
|
||||||
|
## 0.0.149
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
- jazz-browser-media-images@0.10.4
|
||||||
|
|
||||||
|
## 0.0.148
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-browser-media-images@0.10.3
|
||||||
|
- jazz-react@0.10.3
|
||||||
|
|
||||||
|
## 0.0.147
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
- jazz-browser-media-images@0.10.2
|
||||||
|
|
||||||
|
## 0.0.146
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-browser-media-images@0.10.1
|
||||||
|
- jazz-react@0.10.1
|
||||||
|
|
||||||
## 0.0.145
|
## 0.0.145
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "jazz-example-chat",
|
"name": "jazz-example-chat",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.145",
|
"version": "0.0.152",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
@@ -9,8 +9,8 @@
|
|||||||
"format-and-lint": "biome check .",
|
"format-and-lint": "biome check .",
|
||||||
"format-and-lint:fix": "biome check . --write",
|
"format-and-lint:fix": "biome check . --write",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"test": "playwright test",
|
"test:e2e": "playwright test",
|
||||||
"test:ui": "playwright test --ui"
|
"test:e2e:ui": "playwright test --ui"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"clsx": "^2.0.0",
|
"clsx": "^2.0.0",
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ export function App() {
|
|||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
value={me?.profile?.name ?? ""}
|
value={me?.profile?.name ?? ""}
|
||||||
|
className="bg-transparent"
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
if (!me?.profile) return;
|
if (!me?.profile) return;
|
||||||
me.profile.name = e.target.value;
|
me.profile.name = e.target.value;
|
||||||
|
|||||||
@@ -1,5 +1,68 @@
|
|||||||
# minimal-auth-clerk
|
# minimal-auth-clerk
|
||||||
|
|
||||||
|
## 0.0.51
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react-auth-clerk@0.10.7
|
||||||
|
- jazz-react@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
|
||||||
|
## 0.0.50
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1d71ca1]
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-react-auth-clerk@0.10.6
|
||||||
|
- jazz-react@0.10.6
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
|
||||||
|
## 0.0.49
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-react@0.10.5
|
||||||
|
- jazz-react-auth-clerk@0.10.5
|
||||||
|
|
||||||
|
## 0.0.48
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.4
|
||||||
|
- jazz-react-auth-clerk@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
|
||||||
|
## 0.0.47
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-react@0.10.3
|
||||||
|
- jazz-react-auth-clerk@0.10.3
|
||||||
|
|
||||||
|
## 0.0.46
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.2
|
||||||
|
- jazz-react-auth-clerk@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
|
||||||
|
## 0.0.45
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-react@0.10.1
|
||||||
|
- jazz-react-auth-clerk@0.10.1
|
||||||
|
|
||||||
## 0.0.44
|
## 0.0.44
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "clerk",
|
"name": "clerk",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.44",
|
"version": "0.0.51",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@clerk/clerk-react": "^5.4.1",
|
"@clerk/clerk-react": "^5.4.1",
|
||||||
"jazz-react": "workspace:*",
|
"jazz-react": "workspace:*",
|
||||||
"jazz-react-auth-clerk": "workspace:0.10.0",
|
"jazz-react-auth-clerk": "workspace:0.10.7",
|
||||||
"jazz-tools": "workspace:*",
|
"jazz-tools": "workspace:*",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-dom": "^18.3.1"
|
"react-dom": "^18.3.1"
|
||||||
|
|||||||
@@ -1,5 +1,60 @@
|
|||||||
# file-share-svelte
|
# file-share-svelte
|
||||||
|
|
||||||
|
## 0.0.36
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-svelte@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
|
||||||
|
## 0.0.35
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
- jazz-svelte@0.10.6
|
||||||
|
|
||||||
|
## 0.0.34
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-svelte@0.10.5
|
||||||
|
|
||||||
|
## 0.0.33
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-svelte@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
|
||||||
|
## 0.0.32
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-svelte@0.10.3
|
||||||
|
|
||||||
|
## 0.0.31
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-svelte@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
|
||||||
|
## 0.0.30
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-svelte@0.10.1
|
||||||
|
|
||||||
## 0.0.29
|
## 0.0.29
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "file-share-svelte",
|
"name": "file-share-svelte",
|
||||||
"version": "0.0.29",
|
"version": "0.0.36",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -13,8 +13,8 @@
|
|||||||
"lint": "prettier --check . && eslint .",
|
"lint": "prettier --check . && eslint .",
|
||||||
"format-and-lint": "pnpm run format && pnpm run lint",
|
"format-and-lint": "pnpm run format && pnpm run lint",
|
||||||
"format-and-lint:fix": "pnpm run format --write && pnpm run lint --fix",
|
"format-and-lint:fix": "pnpm run format --write && pnpm run lint --fix",
|
||||||
"test": "playwright test",
|
"test:e2e": "playwright test",
|
||||||
"test:ui": "playwright test --ui"
|
"test:e2e:ui": "playwright test --ui"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@sveltejs/adapter-vercel": "^5.5.0",
|
"@sveltejs/adapter-vercel": "^5.5.0",
|
||||||
|
|||||||
@@ -1,5 +1,69 @@
|
|||||||
# form
|
# form
|
||||||
|
|
||||||
|
## 0.0.47
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
- jazz-browser-media-images@0.10.7
|
||||||
|
|
||||||
|
## 0.0.46
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1d71ca1]
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- hash-slash@0.2.2
|
||||||
|
- jazz-react@0.10.6
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
- jazz-browser-media-images@0.10.6
|
||||||
|
|
||||||
|
## 0.0.45
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-browser-media-images@0.10.5
|
||||||
|
- jazz-react@0.10.5
|
||||||
|
|
||||||
|
## 0.0.44
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
- jazz-browser-media-images@0.10.4
|
||||||
|
|
||||||
|
## 0.0.43
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-browser-media-images@0.10.3
|
||||||
|
- jazz-react@0.10.3
|
||||||
|
|
||||||
|
## 0.0.42
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
- jazz-browser-media-images@0.10.2
|
||||||
|
|
||||||
|
## 0.0.41
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-browser-media-images@0.10.1
|
||||||
|
- jazz-react@0.10.1
|
||||||
|
|
||||||
## 0.0.40
|
## 0.0.40
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "form",
|
"name": "form",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.40",
|
"version": "0.0.47",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { useIframeHashRouter } from "hash-slash";
|
import { useIframeHashRouter } from "hash-slash";
|
||||||
import { useAccount } from "jazz-react";
|
|
||||||
import { ID } from "jazz-tools";
|
import { ID } from "jazz-tools";
|
||||||
import { CreateOrder } from "./CreateOrder.tsx";
|
import { CreateOrder } from "./CreateOrder.tsx";
|
||||||
import { EditOrder } from "./EditOrder.tsx";
|
import { EditOrder } from "./EditOrder.tsx";
|
||||||
@@ -7,25 +6,10 @@ import { Orders } from "./Orders.tsx";
|
|||||||
import { BubbleTeaOrder } from "./schema.ts";
|
import { BubbleTeaOrder } from "./schema.ts";
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
const { me, logOut } = useAccount();
|
|
||||||
const router = useIframeHashRouter();
|
const router = useIframeHashRouter();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<header>
|
|
||||||
<nav className="container py-2 border-b flex items-center justify-between">
|
|
||||||
<span>
|
|
||||||
You're logged in as <strong>{me?.profile?.name}</strong>
|
|
||||||
</span>
|
|
||||||
<button
|
|
||||||
className="bg-stone-100 py-1.5 px-3 text-sm rounded-md dark:bg-stone-900 dark:text-white"
|
|
||||||
onClick={() => logOut()}
|
|
||||||
>
|
|
||||||
Log out
|
|
||||||
</button>
|
|
||||||
</nav>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main className="container py-8 space-y-8">
|
<main className="container py-8 space-y-8">
|
||||||
{router.route({
|
{router.route({
|
||||||
"/": () => <Orders />,
|
"/": () => <Orders />,
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
{"root":["./src/app.tsx","./src/createorder.tsx","./src/draftindicator.tsx","./src/editorder.tsx","./src/errors.tsx","./src/linktohome.tsx","./src/orderform.tsx","./src/orderthumbnail.tsx","./src/orders.tsx","./src/main.tsx","./src/schema.ts","./src/vite-env.d.ts"],"version":"5.6.3"}
|
|
||||||
@@ -1,5 +1,68 @@
|
|||||||
# image-upload
|
# image-upload
|
||||||
|
|
||||||
|
## 0.0.49
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
- jazz-browser-media-images@0.10.7
|
||||||
|
|
||||||
|
## 0.0.48
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1d71ca1]
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-react@0.10.6
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
- jazz-browser-media-images@0.10.6
|
||||||
|
|
||||||
|
## 0.0.47
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-browser-media-images@0.10.5
|
||||||
|
- jazz-react@0.10.5
|
||||||
|
|
||||||
|
## 0.0.46
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
- jazz-browser-media-images@0.10.4
|
||||||
|
|
||||||
|
## 0.0.45
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-browser-media-images@0.10.3
|
||||||
|
- jazz-react@0.10.3
|
||||||
|
|
||||||
|
## 0.0.44
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
- jazz-browser-media-images@0.10.2
|
||||||
|
|
||||||
|
## 0.0.43
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-browser-media-images@0.10.1
|
||||||
|
- jazz-react@0.10.1
|
||||||
|
|
||||||
## 0.0.42
|
## 0.0.42
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "image-upload",
|
"name": "image-upload",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.42",
|
"version": "0.0.49",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -1,19 +1,8 @@
|
|||||||
import { useAccount } from "jazz-react";
|
|
||||||
import ImageUpload from "./ImageUpload.tsx";
|
import ImageUpload from "./ImageUpload.tsx";
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
const { me, logOut } = useAccount();
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<header>
|
|
||||||
<nav className="container">
|
|
||||||
<span>
|
|
||||||
You're logged in as <strong>{me?.profile?.name}</strong>
|
|
||||||
</span>
|
|
||||||
<button onClick={() => logOut()}>Log out</button>
|
|
||||||
</nav>
|
|
||||||
</header>
|
|
||||||
<main className="container">
|
<main className="container">
|
||||||
<ImageUpload />
|
<ImageUpload />
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -46,7 +46,12 @@ export default function ImageUpload() {
|
|||||||
) : (
|
) : (
|
||||||
<div>
|
<div>
|
||||||
<label>Upload image</label>
|
<label>Upload image</label>
|
||||||
<input ref={inputRef} type="file" onChange={onImageChange} />
|
<input
|
||||||
|
ref={inputRef}
|
||||||
|
type="file"
|
||||||
|
accept="image/png, image/jpeg, image/gif"
|
||||||
|
onChange={onImageChange}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -72,8 +72,7 @@ nav {
|
|||||||
.container {
|
.container {
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
padding-right: 0.75rem;
|
padding: 2rem 0.75rem;
|
||||||
padding-left: 0.75rem;
|
|
||||||
max-width: 800px;
|
max-width: 800px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,48 @@
|
|||||||
# jazz-example-inspector
|
# jazz-example-inspector
|
||||||
|
|
||||||
|
## 0.0.108
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [0f83320]
|
||||||
|
- Updated dependencies [012022d]
|
||||||
|
- cojson@0.10.7
|
||||||
|
- cojson-transport-ws@0.10.7
|
||||||
|
|
||||||
|
## 0.0.107
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1d71ca1]
|
||||||
|
- Updated dependencies [5c76e37]
|
||||||
|
- hash-slash@0.2.2
|
||||||
|
- cojson@0.10.6
|
||||||
|
- cojson-transport-ws@0.10.6
|
||||||
|
|
||||||
|
## 0.0.106
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1af6072]
|
||||||
|
- cojson@0.10.4
|
||||||
|
- cojson-transport-ws@0.10.4
|
||||||
|
|
||||||
|
## 0.0.105
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [cae3a9e]
|
||||||
|
- cojson@0.10.2
|
||||||
|
- cojson-transport-ws@0.10.2
|
||||||
|
|
||||||
|
## 0.0.104
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- cojson@0.10.1
|
||||||
|
- cojson-transport-ws@0.10.1
|
||||||
|
|
||||||
## 0.0.103
|
## 0.0.103
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "jazz-inspector-app",
|
"name": "jazz-inspector-app",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.103",
|
"version": "0.0.108",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
@@ -16,9 +16,9 @@
|
|||||||
"@radix-ui/react-toast": "^1.1.4",
|
"@radix-ui/react-toast": "^1.1.4",
|
||||||
"class-variance-authority": "^0.7.0",
|
"class-variance-authority": "^0.7.0",
|
||||||
"clsx": "^2.0.0",
|
"clsx": "^2.0.0",
|
||||||
"cojson": "workspace:0.10.0",
|
"cojson": "workspace:0.10.7",
|
||||||
"cojson-transport-ws": "workspace:0.10.0",
|
"cojson-transport-ws": "workspace:0.10.7",
|
||||||
"hash-slash": "workspace:0.2.1",
|
"hash-slash": "workspace:0.2.2",
|
||||||
"lucide-react": "^0.274.0",
|
"lucide-react": "^0.274.0",
|
||||||
"qrcode": "^1.5.3",
|
"qrcode": "^1.5.3",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
|
|||||||
@@ -5,13 +5,9 @@ import {
|
|||||||
RawCoStream,
|
RawCoStream,
|
||||||
RawCoValue,
|
RawCoValue,
|
||||||
} from "cojson";
|
} from "cojson";
|
||||||
import { base64URLtoBytes } from "cojson/src/base64url.ts";
|
import { base64URLtoBytes } from "cojson";
|
||||||
import {
|
import { BinaryStreamItem, BinaryStreamStart, CoStreamItem } from "cojson";
|
||||||
BinaryStreamItem,
|
import { JsonObject, JsonValue } from "cojson";
|
||||||
BinaryStreamStart,
|
|
||||||
CoStreamItem,
|
|
||||||
} from "cojson/src/coValues/coStream.ts";
|
|
||||||
import { JsonObject, JsonValue } from "cojson/src/jsonValue.ts";
|
|
||||||
import { ArrowDownToLine } from "lucide-react";
|
import { ArrowDownToLine } from "lucide-react";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { PageInfo } from "./types";
|
import { PageInfo } from "./types";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import clsx from "clsx";
|
import clsx from "clsx";
|
||||||
import { CoID, LocalNode, RawCoValue } from "cojson";
|
import { CoID, LocalNode, RawCoValue } from "cojson";
|
||||||
import { JsonObject } from "cojson/src/jsonValue.ts";
|
import { JsonObject } from "cojson";
|
||||||
import { ResolveIcon } from "./type-icon";
|
import { ResolveIcon } from "./type-icon";
|
||||||
import { PageInfo, isCoId } from "./types";
|
import { PageInfo, isCoId } from "./types";
|
||||||
import { CoMapPreview, ValueRenderer } from "./value-renderer";
|
import { CoMapPreview, ValueRenderer } from "./value-renderer";
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import {
|
|||||||
RawAccount,
|
RawAccount,
|
||||||
RawAccountID,
|
RawAccountID,
|
||||||
RawCoValue,
|
RawCoValue,
|
||||||
WasmCrypto,
|
|
||||||
} from "cojson";
|
} from "cojson";
|
||||||
import { createWebSocketPeer } from "cojson-transport-ws";
|
import { createWebSocketPeer } from "cojson-transport-ws";
|
||||||
|
import { WasmCrypto } from "cojson/crypto/WasmCrypto";
|
||||||
import { Trash2 } from "lucide-react";
|
import { Trash2 } from "lucide-react";
|
||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import { Breadcrumbs } from "./breadcrumbs";
|
import { Breadcrumbs } from "./breadcrumbs";
|
||||||
@@ -102,6 +102,7 @@ export default function CoJsonViewerApp() {
|
|||||||
if (coValueId) {
|
if (coValueId) {
|
||||||
setPage(coValueId);
|
setPage(coValueId);
|
||||||
}
|
}
|
||||||
|
setCoValueId("");
|
||||||
};
|
};
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@@ -118,8 +119,22 @@ export default function CoJsonViewerApp() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="w-full h-screen bg-gray-100 p-4 overflow-hidden flex flex-col">
|
<div className="w-full h-screen bg-gray-100 p-4 overflow-hidden flex flex-col">
|
||||||
<div className="flex justify-between items-center mb-4">
|
<div className="flex items-center mb-4 gap-4">
|
||||||
<Breadcrumbs path={path} onBreadcrumbClick={goToIndex} />
|
<Breadcrumbs path={path} onBreadcrumbClick={goToIndex} />
|
||||||
|
<div className="flex-1">
|
||||||
|
<form onSubmit={handleCoValueIdSubmit}>
|
||||||
|
{path.length !== 0 && (
|
||||||
|
<input
|
||||||
|
className="border p-2 rounded-lg min-w-[21rem] font-mono"
|
||||||
|
placeholder="co_z1234567890abcdef123456789"
|
||||||
|
value={coValueId}
|
||||||
|
onChange={(e) =>
|
||||||
|
setCoValueId(e.target.value as CoID<RawCoValue>)
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
<AccountSwitcher
|
<AccountSwitcher
|
||||||
accounts={accounts}
|
accounts={accounts}
|
||||||
currentAccount={currentAccount}
|
currentAccount={currentAccount}
|
||||||
@@ -172,7 +187,6 @@ export default function CoJsonViewerApp() {
|
|||||||
type="button"
|
type="button"
|
||||||
className="border inline-block px-2 py-1.5 text-black rounded"
|
className="border inline-block px-2 py-1.5 text-black rounded"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setCoValueId(currentAccount.id);
|
|
||||||
setPage(currentAccount.id);
|
setPage(currentAccount.id);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { CoID, LocalNode, RawCoValue } from "cojson";
|
import { CoID, LocalNode, RawCoValue } from "cojson";
|
||||||
import { JsonObject } from "cojson/src/jsonValue.ts";
|
import { JsonObject } from "cojson";
|
||||||
import { useMemo, useState } from "react";
|
import { useMemo, useState } from "react";
|
||||||
import { LinkIcon } from "../link-icon";
|
import { LinkIcon } from "../link-icon";
|
||||||
import { PageInfo } from "./types";
|
import { PageInfo } from "./types";
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ export function ValueRenderer({
|
|||||||
compact?: boolean;
|
compact?: boolean;
|
||||||
onCoIDClick?: (childNode: CoID<RawCoValue>) => void;
|
onCoIDClick?: (childNode: CoID<RawCoValue>) => void;
|
||||||
}) {
|
}) {
|
||||||
|
const [isExpanded, setIsExpanded] = useState(false);
|
||||||
|
|
||||||
if (typeof json === "undefined" || json === undefined) {
|
if (typeof json === "undefined" || json === undefined) {
|
||||||
return <span className="text-gray-400">undefined</span>;
|
return <span className="text-gray-400">undefined</span>;
|
||||||
}
|
}
|
||||||
@@ -85,15 +87,31 @@ export function ValueRenderer({
|
|||||||
return (
|
return (
|
||||||
<span
|
<span
|
||||||
title={JSON.stringify(json, null, 2)}
|
title={JSON.stringify(json, null, 2)}
|
||||||
className="inline-block max-w-64 truncate"
|
className="inline-block max-w-64"
|
||||||
>
|
>
|
||||||
{compact ? (
|
{compact ? (
|
||||||
<span>
|
<span>
|
||||||
Object{" "}
|
Object{" "}
|
||||||
<span className="text-gray-500">({Object.keys(json).length})</span>
|
<span className="text-gray-500">({Object.keys(json).length})</span>
|
||||||
|
<pre className="mt-1 text-sm whitespace-pre-wrap">
|
||||||
|
{isExpanded
|
||||||
|
? JSON.stringify(json, null, 2)
|
||||||
|
: JSON.stringify(json, null, 2)
|
||||||
|
.split("\n")
|
||||||
|
.slice(0, 3)
|
||||||
|
.join("\n") + (Object.keys(json).length > 2 ? "\n..." : "")}
|
||||||
|
</pre>
|
||||||
|
<button
|
||||||
|
onClick={() => setIsExpanded(!isExpanded)}
|
||||||
|
className="text-xs text-gray-500 hover:text-gray-700"
|
||||||
|
>
|
||||||
|
{isExpanded ? "Show less" : "Show more"}
|
||||||
|
</button>
|
||||||
</span>
|
</span>
|
||||||
) : (
|
) : (
|
||||||
JSON.stringify(json, null, 2)
|
<pre className="whitespace-pre-wrap">
|
||||||
|
{JSON.stringify(json, null, 2)}
|
||||||
|
</pre>
|
||||||
)}
|
)}
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,5 +1,68 @@
|
|||||||
# jazz-example-musicplayer
|
# jazz-example-musicplayer
|
||||||
|
|
||||||
|
## 0.0.73
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
- jazz-inspector@0.10.7
|
||||||
|
|
||||||
|
## 0.0.72
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1d71ca1]
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-react@0.10.6
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
- jazz-inspector@0.10.6
|
||||||
|
|
||||||
|
## 0.0.71
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-inspector@0.10.5
|
||||||
|
- jazz-react@0.10.5
|
||||||
|
|
||||||
|
## 0.0.70
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-inspector@0.10.4
|
||||||
|
- jazz-react@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
|
||||||
|
## 0.0.69
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-inspector@0.10.3
|
||||||
|
- jazz-react@0.10.3
|
||||||
|
|
||||||
|
## 0.0.68
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-inspector@0.10.2
|
||||||
|
- jazz-react@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
|
||||||
|
## 0.0.67
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-inspector@0.10.1
|
||||||
|
- jazz-react@0.10.1
|
||||||
|
|
||||||
## 0.0.66
|
## 0.0.66
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "jazz-example-music-player",
|
"name": "jazz-example-music-player",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.66",
|
"version": "0.0.73",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
@@ -9,8 +9,8 @@
|
|||||||
"format-and-lint": "biome check .",
|
"format-and-lint": "biome check .",
|
||||||
"format-and-lint:fix": "biome check . --write",
|
"format-and-lint:fix": "biome check . --write",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"test": "playwright test",
|
"test:e2e": "playwright test",
|
||||||
"test:ui": "playwright test --ui"
|
"test:e2e:ui": "playwright test --ui"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@radix-ui/react-dialog": "^1.1.4",
|
"@radix-ui/react-dialog": "^1.1.4",
|
||||||
@@ -22,8 +22,8 @@
|
|||||||
"class-variance-authority": "^0.7.0",
|
"class-variance-authority": "^0.7.0",
|
||||||
"clsx": "^2.0.0",
|
"clsx": "^2.0.0",
|
||||||
"jazz-inspector": "workspace:*",
|
"jazz-inspector": "workspace:*",
|
||||||
"jazz-react": "workspace:0.10.0",
|
"jazz-react": "workspace:0.10.7",
|
||||||
"jazz-tools": "workspace:0.10.0",
|
"jazz-tools": "workspace:0.10.7",
|
||||||
"lucide-react": "^0.274.0",
|
"lucide-react": "^0.274.0",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^18.3.1",
|
||||||
|
|||||||
26
examples/onboarding/.gitignore
vendored
26
examples/onboarding/.gitignore
vendored
@@ -1,26 +0,0 @@
|
|||||||
# Logs
|
|
||||||
logs
|
|
||||||
*.log
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
pnpm-debug.log*
|
|
||||||
lerna-debug.log*
|
|
||||||
|
|
||||||
node_modules
|
|
||||||
dist
|
|
||||||
dist-ssr
|
|
||||||
*.local
|
|
||||||
|
|
||||||
# Editor directories and files
|
|
||||||
.vscode/*
|
|
||||||
!.vscode/extensions.json
|
|
||||||
.idea
|
|
||||||
.DS_Store
|
|
||||||
*.suo
|
|
||||||
*.ntvs*
|
|
||||||
*.njsproj
|
|
||||||
*.sln
|
|
||||||
*.sw?
|
|
||||||
|
|
||||||
playwright-report
|
|
||||||
@@ -1,386 +0,0 @@
|
|||||||
# jazz-example-onboarding
|
|
||||||
|
|
||||||
## 0.0.46
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [498954f]
|
|
||||||
- Updated dependencies [d42c2aa]
|
|
||||||
- Updated dependencies [dd03464]
|
|
||||||
- Updated dependencies [b426342]
|
|
||||||
- jazz-react@0.10.0
|
|
||||||
- jazz-tools@0.10.0
|
|
||||||
- jazz-browser-media-images@0.10.0
|
|
||||||
|
|
||||||
## 0.0.45
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.9.23
|
|
||||||
- jazz-tools@0.9.23
|
|
||||||
- jazz-browser-media-images@0.9.23
|
|
||||||
|
|
||||||
## 0.0.44
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-browser-media-images@0.9.22
|
|
||||||
- jazz-react@0.9.22
|
|
||||||
|
|
||||||
## 0.0.43
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [1be017d]
|
|
||||||
- jazz-tools@0.9.21
|
|
||||||
- jazz-browser-media-images@0.9.21
|
|
||||||
- jazz-react@0.9.21
|
|
||||||
|
|
||||||
## 0.0.42
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [b01cc1f]
|
|
||||||
- jazz-tools@0.9.20
|
|
||||||
- jazz-browser-media-images@0.9.20
|
|
||||||
- jazz-react@0.9.20
|
|
||||||
|
|
||||||
## 0.0.41
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.9.19
|
|
||||||
- jazz-tools@0.9.19
|
|
||||||
- jazz-browser-media-images@0.9.19
|
|
||||||
|
|
||||||
## 0.0.40
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.9.18
|
|
||||||
- jazz-tools@0.9.18
|
|
||||||
- jazz-browser-media-images@0.9.18
|
|
||||||
|
|
||||||
## 0.0.39
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [c2ca1fe]
|
|
||||||
- Updated dependencies [1227047]
|
|
||||||
- jazz-tools@0.9.17
|
|
||||||
- jazz-browser-media-images@0.9.17
|
|
||||||
- jazz-react@0.9.17
|
|
||||||
|
|
||||||
## 0.0.38
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [24b3b6a]
|
|
||||||
- jazz-tools@0.9.16
|
|
||||||
- jazz-browser-media-images@0.9.16
|
|
||||||
- jazz-react@0.9.16
|
|
||||||
|
|
||||||
## 0.0.37
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [7491711]
|
|
||||||
- jazz-tools@0.9.15
|
|
||||||
- jazz-browser-media-images@0.9.15
|
|
||||||
- jazz-react@0.9.15
|
|
||||||
|
|
||||||
## 0.0.36
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [3df93cc]
|
|
||||||
- jazz-tools@0.9.14
|
|
||||||
- jazz-browser-media-images@0.9.14
|
|
||||||
- jazz-react@0.9.14
|
|
||||||
|
|
||||||
## 0.0.35
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.9.13
|
|
||||||
- jazz-tools@0.9.13
|
|
||||||
- jazz-browser-media-images@0.9.13
|
|
||||||
|
|
||||||
## 0.0.34
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.9.12
|
|
||||||
- jazz-tools@0.9.12
|
|
||||||
- jazz-browser-media-images@0.9.12
|
|
||||||
|
|
||||||
## 0.0.33
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.9.11
|
|
||||||
- jazz-tools@0.9.11
|
|
||||||
- jazz-browser-media-images@0.9.11
|
|
||||||
|
|
||||||
## 0.0.32
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [5e83864]
|
|
||||||
- jazz-react@0.9.10
|
|
||||||
- jazz-tools@0.9.10
|
|
||||||
- jazz-browser-media-images@0.9.10
|
|
||||||
|
|
||||||
## 0.0.31
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [8eb9247]
|
|
||||||
- jazz-tools@0.9.9
|
|
||||||
- jazz-browser-media-images@0.9.9
|
|
||||||
- jazz-react@0.9.9
|
|
||||||
|
|
||||||
## 0.0.30
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [d1d773b]
|
|
||||||
- jazz-tools@0.9.8
|
|
||||||
- jazz-react@0.9.8
|
|
||||||
- jazz-browser-media-images@0.9.8
|
|
||||||
|
|
||||||
## 0.0.29
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.9.4
|
|
||||||
|
|
||||||
## 0.0.28
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [1b71969]
|
|
||||||
- jazz-react@0.9.1
|
|
||||||
- jazz-tools@0.9.1
|
|
||||||
- jazz-browser-media-images@0.9.1
|
|
||||||
|
|
||||||
## 0.0.27
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [956a4d1]
|
|
||||||
- Updated dependencies [8eda792]
|
|
||||||
- jazz-react@0.9.0
|
|
||||||
- jazz-tools@0.9.0
|
|
||||||
- jazz-browser-media-images@0.9.0
|
|
||||||
|
|
||||||
## 0.0.26
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [dc62b95]
|
|
||||||
- Updated dependencies [1de26f8]
|
|
||||||
- jazz-tools@0.8.51
|
|
||||||
- jazz-browser-media-images@0.8.51
|
|
||||||
- jazz-react@0.8.51
|
|
||||||
|
|
||||||
## 0.0.25
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.8.50
|
|
||||||
- jazz-tools@0.8.50
|
|
||||||
- jazz-browser-media-images@0.8.50
|
|
||||||
|
|
||||||
## 0.0.24
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.8.49
|
|
||||||
- jazz-tools@0.8.49
|
|
||||||
- jazz-browser-media-images@0.8.49
|
|
||||||
|
|
||||||
## 0.0.23
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [635e824]
|
|
||||||
- Updated dependencies [0a85982]
|
|
||||||
- jazz-tools@0.8.48
|
|
||||||
- jazz-browser-media-images@0.8.48
|
|
||||||
- jazz-react@0.8.48
|
|
||||||
|
|
||||||
## 0.0.22
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [fa41f8e]
|
|
||||||
- Updated dependencies [88d7d9a]
|
|
||||||
- Updated dependencies [60e35ea]
|
|
||||||
- jazz-tools@0.8.45
|
|
||||||
- jazz-react@0.8.45
|
|
||||||
- jazz-browser-media-images@0.8.45
|
|
||||||
|
|
||||||
## 0.0.21
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.8.44
|
|
||||||
- jazz-tools@0.8.44
|
|
||||||
- jazz-browser-media-images@0.8.44
|
|
||||||
|
|
||||||
## 0.0.20
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.8.41
|
|
||||||
- jazz-tools@0.8.41
|
|
||||||
- jazz-browser-media-images@0.8.41
|
|
||||||
|
|
||||||
## 0.0.19
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-browser-media-images@0.8.40
|
|
||||||
- jazz-react@0.8.40
|
|
||||||
|
|
||||||
## 0.0.18
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [249eecb]
|
|
||||||
- jazz-tools@0.8.39
|
|
||||||
- jazz-browser-media-images@0.8.39
|
|
||||||
- jazz-react@0.8.39
|
|
||||||
|
|
||||||
## 0.0.17
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.8.38
|
|
||||||
- jazz-tools@0.8.38
|
|
||||||
- jazz-browser-media-images@0.8.38
|
|
||||||
|
|
||||||
## 0.0.16
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.8.37
|
|
||||||
- jazz-tools@0.8.37
|
|
||||||
- jazz-browser-media-images@0.8.37
|
|
||||||
|
|
||||||
## 0.0.15
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [441fe27]
|
|
||||||
- jazz-tools@0.8.36
|
|
||||||
- jazz-react@0.8.36
|
|
||||||
- jazz-browser-media-images@0.8.36
|
|
||||||
|
|
||||||
## 0.0.14
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [9212ab8]
|
|
||||||
- Updated dependencies [8b87117]
|
|
||||||
- jazz-react@0.8.35
|
|
||||||
- jazz-tools@0.8.35
|
|
||||||
- jazz-browser-media-images@0.8.35
|
|
||||||
|
|
||||||
## 0.0.13
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.8.34
|
|
||||||
- jazz-tools@0.8.34
|
|
||||||
- jazz-browser-media-images@0.8.34
|
|
||||||
|
|
||||||
## 0.0.12
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-browser-media-images@0.8.33
|
|
||||||
- jazz-react@0.8.33
|
|
||||||
|
|
||||||
## 0.0.11
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [df42b2b]
|
|
||||||
- jazz-tools@0.8.32
|
|
||||||
- jazz-react@0.8.32
|
|
||||||
- jazz-browser-media-images@0.8.32
|
|
||||||
|
|
||||||
## 0.0.10
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.8.31
|
|
||||||
- jazz-tools@0.8.31
|
|
||||||
- jazz-browser-media-images@0.8.31
|
|
||||||
|
|
||||||
## 0.0.9
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.8.30
|
|
||||||
- jazz-tools@0.8.30
|
|
||||||
- jazz-browser-media-images@0.8.30
|
|
||||||
|
|
||||||
## 0.0.8
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.8.29
|
|
||||||
- jazz-tools@0.8.29
|
|
||||||
- jazz-browser-media-images@0.8.29
|
|
||||||
|
|
||||||
## 0.0.7
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.8.28
|
|
||||||
- jazz-tools@0.8.28
|
|
||||||
- jazz-browser-media-images@0.8.28
|
|
||||||
|
|
||||||
## 0.0.6
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-react@0.8.27
|
|
||||||
- jazz-tools@0.8.27
|
|
||||||
- jazz-browser-media-images@0.8.27
|
|
||||||
|
|
||||||
## 0.0.5
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [59d37df]
|
|
||||||
- jazz-react@0.8.26
|
|
||||||
|
|
||||||
## 0.0.4
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- jazz-browser-media-images@0.8.24
|
|
||||||
- jazz-react@0.8.24
|
|
||||||
|
|
||||||
## 0.0.3
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [d348c2d]
|
|
||||||
- Updated dependencies [6902b5b]
|
|
||||||
- Updated dependencies [1a0cd3d]
|
|
||||||
- jazz-tools@0.8.23
|
|
||||||
- jazz-react@0.8.23
|
|
||||||
- jazz-browser-media-images@0.8.23
|
|
||||||
|
|
||||||
## 0.0.2
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- Updated dependencies [59cc64d]
|
|
||||||
- jazz-react@0.8.22
|
|
||||||
- jazz-browser-media-images@0.8.22
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
FROM caddy:2.7.3-alpine
|
|
||||||
LABEL org.opencontainers.image.source="https://github.com/garden-co/jazz"
|
|
||||||
|
|
||||||
COPY ./dist /usr/share/caddy/
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
# Onboarding example with Jazz and React
|
|
||||||
|
|
||||||
## Getting started
|
|
||||||
|
|
||||||
You can either
|
|
||||||
1. Clone the jazz repository, and run the app within the monorepo.
|
|
||||||
2. Or create a new Jazz project using this example as a template.
|
|
||||||
|
|
||||||
|
|
||||||
### Using the example as a template
|
|
||||||
|
|
||||||
Create a new Jazz project, and use this example as a template.
|
|
||||||
```bash
|
|
||||||
npx create-jazz-app@latest --example onboarding --project-name onboarding
|
|
||||||
```
|
|
||||||
|
|
||||||
Go to the new project directory.
|
|
||||||
```bash
|
|
||||||
cd onboarding
|
|
||||||
```
|
|
||||||
|
|
||||||
Run the dev server.
|
|
||||||
```bash
|
|
||||||
npm run dev
|
|
||||||
```
|
|
||||||
|
|
||||||
### Using the monorepo
|
|
||||||
|
|
||||||
This requires `pnpm` to be installed, see [https://pnpm.io/installation](https://pnpm.io/installation).
|
|
||||||
|
|
||||||
Clone the jazz repository.
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/garden-co/jazz.git
|
|
||||||
```
|
|
||||||
|
|
||||||
Install and build dependencies.
|
|
||||||
```bash
|
|
||||||
pnpm i && npx turbo build
|
|
||||||
```
|
|
||||||
|
|
||||||
Go to the example directory.
|
|
||||||
```bash
|
|
||||||
cd jazz/examples/onboarding/
|
|
||||||
```
|
|
||||||
|
|
||||||
Start the dev server.
|
|
||||||
```bash
|
|
||||||
pnpm dev
|
|
||||||
```
|
|
||||||
|
|
||||||
Open [http://localhost:5173](http://localhost:5173) with your browser to see the result.
|
|
||||||
## Questions / problems / feedback
|
|
||||||
|
|
||||||
If you have feedback, let us know on [Discord](https://discord.gg/utDMjHYg42) or open an issue or PR to fix something that seems wrong.
|
|
||||||
|
|
||||||
## Configuration: sync server
|
|
||||||
|
|
||||||
By default, the example app uses [Jazz Cloud](https://jazz.tools/cloud) (`wss://cloud.jazz.tools`) - so cross-device use, invites and collaboration should just work.
|
|
||||||
|
|
||||||
You can also run a local sync server by running `npx cojson-simple-sync` and adding the query param `?sync=ws://localhost:4200` to the URL of the example app (for example: `http://localhost:5173/?peer=ws://localhost:4200`), or by setting the `sync` parameter of the `<JazzProvider>` provider component in [./src/main.tsx](./src/main.tsx).
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Jazz onboarding example</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="root"></div>
|
|
||||||
<script type="module" src="/src/main.tsx"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "jazz-example-onboarding",
|
|
||||||
"private": true,
|
|
||||||
"version": "0.0.46",
|
|
||||||
"type": "module",
|
|
||||||
"scripts": {
|
|
||||||
"dev": "vite",
|
|
||||||
"build": "tsc && vite build",
|
|
||||||
"format-and-lint": "biome check .",
|
|
||||||
"format-and-lint:fix": "biome check . --write",
|
|
||||||
"preview": "vite preview",
|
|
||||||
"test": "playwright test",
|
|
||||||
"test:ui": "playwright test --ui",
|
|
||||||
"sync": "jazz-run sync"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"jazz-browser-media-images": "workspace:*",
|
|
||||||
"jazz-react": "workspace:*",
|
|
||||||
"jazz-tools": "workspace:*",
|
|
||||||
"react": "^18.3.1",
|
|
||||||
"react-dom": "^18.3.1"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@playwright/test": "^1.50.1",
|
|
||||||
"@types/react": "^18.3.12",
|
|
||||||
"@types/react-dom": "^18.3.1",
|
|
||||||
"@vitejs/plugin-react": "^4.3.3",
|
|
||||||
"autoprefixer": "^10.4.20",
|
|
||||||
"is-ci": "^3.0.1",
|
|
||||||
"jazz-run": "workspace:*",
|
|
||||||
"postcss": "^8.4.27",
|
|
||||||
"tailwindcss": "^3.4.17",
|
|
||||||
"typescript": "~5.6.2",
|
|
||||||
"vite": "^6.0.11"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 820 B |
@@ -1,100 +0,0 @@
|
|||||||
import { Button } from "@/components/Button.tsx";
|
|
||||||
import { EmployeeList } from "@/pages/EmployeeList.tsx";
|
|
||||||
import { EmployeeOnboading } from "@/pages/EmployeeOnboarding.tsx";
|
|
||||||
import { NewEmployee } from "@/pages/NewEmployee.tsx";
|
|
||||||
import { CoEmployee, EmployeeCoList } from "@/schema.ts";
|
|
||||||
import { useAcceptInvite, useAccount, useCoState } from "jazz-react";
|
|
||||||
import { ID } from "jazz-tools";
|
|
||||||
import { useEffect } from "react";
|
|
||||||
import {
|
|
||||||
RouterProvider,
|
|
||||||
createHashRouter,
|
|
||||||
useNavigate,
|
|
||||||
useParams,
|
|
||||||
} from "react-router-dom";
|
|
||||||
|
|
||||||
function ImportEmployee({
|
|
||||||
employeeListCoId,
|
|
||||||
}: { employeeListCoId: ID<EmployeeCoList> }) {
|
|
||||||
const { employeeCoId } = useParams();
|
|
||||||
const navigate = useNavigate();
|
|
||||||
|
|
||||||
const employees = useCoState(EmployeeCoList, employeeListCoId, [{}]);
|
|
||||||
const employee = useCoState(CoEmployee, employeeCoId as ID<CoEmployee>, {});
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (!employee || !employees) return;
|
|
||||||
|
|
||||||
const exists = employees.find((employee) => employeeCoId === employee.id);
|
|
||||||
|
|
||||||
if (!exists) {
|
|
||||||
employees.push(employee);
|
|
||||||
}
|
|
||||||
navigate("/");
|
|
||||||
}, [employee, employees, navigate]);
|
|
||||||
|
|
||||||
return <div>Importing Employee ${employeeCoId} ...</div>;
|
|
||||||
}
|
|
||||||
|
|
||||||
function AcceptInvite() {
|
|
||||||
const navigate = useNavigate();
|
|
||||||
|
|
||||||
useAcceptInvite({
|
|
||||||
invitedObjectSchema: CoEmployee,
|
|
||||||
onAccept: (employeeCoId) => {
|
|
||||||
navigate(`/import/${employeeCoId}`);
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
return <p>Accepting invite...</p>;
|
|
||||||
}
|
|
||||||
|
|
||||||
function App() {
|
|
||||||
const { me, logOut } = useAccount();
|
|
||||||
const employeeCoListId = me.profile?._refs.employees.id;
|
|
||||||
|
|
||||||
const router = createHashRouter([
|
|
||||||
{
|
|
||||||
path: "/",
|
|
||||||
element: <EmployeeList employeeListCoId={employeeCoListId} />,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "employee/new",
|
|
||||||
element: <NewEmployee employeeListCoId={employeeCoListId} />,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "/employee/:employeeCoId",
|
|
||||||
element: <EmployeeOnboading />,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "/import/:employeeCoId",
|
|
||||||
element: <ImportEmployee employeeListCoId={employeeCoListId} />,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: "/invite/*",
|
|
||||||
element: <AcceptInvite />,
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<header className="flex flex-wrap space-x-8 max-w-screen-lg m-2">
|
|
||||||
<h1 className="text-3xl font-extrabold">
|
|
||||||
Jazz Onboarding Flow example
|
|
||||||
</h1>
|
|
||||||
<Button
|
|
||||||
onClick={() => {
|
|
||||||
window.location.href = "/";
|
|
||||||
logOut();
|
|
||||||
}}
|
|
||||||
text="Log Out"
|
|
||||||
/>
|
|
||||||
</header>
|
|
||||||
<main className="ml-2">
|
|
||||||
{employeeCoListId && <RouterProvider router={router} />}
|
|
||||||
</main>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default App;
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
export const apiKey = "onboarding-example-jazz@garden.co";
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
const disabledClasses =
|
|
||||||
"text-white bg-gray-400 dark:bg-gray-500 cursor-not-allowed";
|
|
||||||
const regularClasses =
|
|
||||||
"text-white bg-gradient-to-r from-green-400 via-green-500 to-green-600 hover:bg-gradient-to-br focus:ring-4 focus:outline-none focus:ring-green-300 dark:focus:ring-green-800";
|
|
||||||
|
|
||||||
export function Button({
|
|
||||||
text,
|
|
||||||
onClick,
|
|
||||||
disabled,
|
|
||||||
type = "button",
|
|
||||||
...props
|
|
||||||
}: {
|
|
||||||
text: string;
|
|
||||||
type?: "button" | "submit";
|
|
||||||
onClick?: () => void;
|
|
||||||
disabled?: boolean;
|
|
||||||
}) {
|
|
||||||
return (
|
|
||||||
<button
|
|
||||||
{...props}
|
|
||||||
onClick={onClick}
|
|
||||||
type={type}
|
|
||||||
disabled={disabled}
|
|
||||||
className={`${
|
|
||||||
disabled ? disabledClasses : regularClasses
|
|
||||||
} text-base font-medium rounded-lg text-sm px-5 py-2.5 text-center me-2 mb-2`}
|
|
||||||
>
|
|
||||||
{text}
|
|
||||||
</button>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
import React from "react";
|
|
||||||
import { Link } from "react-router-dom";
|
|
||||||
|
|
||||||
export function ButtonLink({
|
|
||||||
to,
|
|
||||||
children,
|
|
||||||
}: {
|
|
||||||
to: string;
|
|
||||||
children: React.ReactNode;
|
|
||||||
}) {
|
|
||||||
return (
|
|
||||||
<Link
|
|
||||||
className="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800"
|
|
||||||
to={to}
|
|
||||||
>
|
|
||||||
{children}
|
|
||||||
</Link>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
import React from "react";
|
|
||||||
import { Link } from "react-router-dom";
|
|
||||||
|
|
||||||
export function NavLink({
|
|
||||||
to,
|
|
||||||
children,
|
|
||||||
}: {
|
|
||||||
to: string;
|
|
||||||
children: React.ReactNode;
|
|
||||||
}) {
|
|
||||||
return (
|
|
||||||
<Link
|
|
||||||
className="font-medium text-blue-600 dark:text-blue-500 hover:underline"
|
|
||||||
to={to}
|
|
||||||
>
|
|
||||||
{children}
|
|
||||||
</Link>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
import { useNavigate } from "react-router-dom";
|
|
||||||
import { Button } from "./Button.tsx";
|
|
||||||
|
|
||||||
export function NavigateBack() {
|
|
||||||
const navigate = useNavigate();
|
|
||||||
const canGoBack = window.history.state.idx !== 0;
|
|
||||||
|
|
||||||
if (!canGoBack) return null;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<Button onClick={() => navigate(-1)} text="< Back" />
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function NavigateButton({ text, to }: { text: string; to: string }) {
|
|
||||||
const navigate = useNavigate();
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<Button onClick={() => navigate(to)} text={text} />
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
import React from "react";
|
|
||||||
|
|
||||||
export function Stack({
|
|
||||||
children,
|
|
||||||
horizontal,
|
|
||||||
}: {
|
|
||||||
children: React.ReactNode;
|
|
||||||
horizontal?: boolean;
|
|
||||||
}) {
|
|
||||||
return (
|
|
||||||
<div
|
|
||||||
className={`container flex ${
|
|
||||||
horizontal ? "flex-row" : "flex-col"
|
|
||||||
} col ${horizontal ? "space-x-4 flex-wrap" : "space-y-4"} p-4`}
|
|
||||||
>
|
|
||||||
{children}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
import { ChangeEvent } from "react";
|
|
||||||
|
|
||||||
export function TextInput({
|
|
||||||
id,
|
|
||||||
value,
|
|
||||||
label,
|
|
||||||
onChange,
|
|
||||||
disabled,
|
|
||||||
}: {
|
|
||||||
id: string;
|
|
||||||
label: string;
|
|
||||||
value: string;
|
|
||||||
onChange: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
||||||
disabled?: boolean;
|
|
||||||
}) {
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<label
|
|
||||||
htmlFor={id}
|
|
||||||
className="block mb-2 font-medium text-gray-900 dark:text-white"
|
|
||||||
>
|
|
||||||
{label}
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
value={value}
|
|
||||||
onChange={onChange}
|
|
||||||
type="text"
|
|
||||||
id={id}
|
|
||||||
disabled={disabled}
|
|
||||||
className="disabled:cursor-not-allowed bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
|
||||||
placeholder="John"
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
import App from "@/App.tsx";
|
|
||||||
import "@/index.css";
|
|
||||||
import { HRAccount } from "@/schema.ts";
|
|
||||||
import { JazzProvider } from "jazz-react";
|
|
||||||
import React from "react";
|
|
||||||
import ReactDOM from "react-dom/client";
|
|
||||||
import { apiKey } from "./apiKey";
|
|
||||||
|
|
||||||
const peer =
|
|
||||||
(new URL(window.location.href).searchParams.get(
|
|
||||||
"peer",
|
|
||||||
) as `ws://${string}`) ?? `wss://cloud.jazz.tools/?key=${apiKey}`;
|
|
||||||
|
|
||||||
declare module "jazz-react" {
|
|
||||||
interface Register {
|
|
||||||
Account: HRAccount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ReactDOM.createRoot(document.getElementById("root")!).render(
|
|
||||||
<React.StrictMode>
|
|
||||||
<JazzProvider
|
|
||||||
AccountSchema={HRAccount}
|
|
||||||
sync={{
|
|
||||||
peer,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<App />
|
|
||||||
</JazzProvider>
|
|
||||||
</React.StrictMode>,
|
|
||||||
);
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
import { NavLink } from "@/components/NavLink.tsx";
|
|
||||||
import { NavigateButton } from "@/components/NavigateBack.tsx";
|
|
||||||
import { Stack } from "@/components/Stack.tsx";
|
|
||||||
import { CoEmployee, EmployeeCoList } from "@/schema.ts";
|
|
||||||
import { useCoState } from "jazz-react";
|
|
||||||
import { ID } from "jazz-tools";
|
|
||||||
|
|
||||||
export function EmployeeList({
|
|
||||||
employeeListCoId,
|
|
||||||
}: {
|
|
||||||
employeeListCoId: ID<EmployeeCoList>;
|
|
||||||
}) {
|
|
||||||
const employees = useCoState(EmployeeCoList, employeeListCoId, [{}]);
|
|
||||||
|
|
||||||
if (!employees) {
|
|
||||||
return <div>Loading...</div>;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Stack>
|
|
||||||
<NavigateButton to="/employee/new" text={"Add New Employee"} />
|
|
||||||
<ul className="max-w-md">
|
|
||||||
{employees.map((employee: CoEmployee) =>
|
|
||||||
employee.deleted ? null : (
|
|
||||||
<li key={employee.id} className="flex flex-row space-x-8 w-full">
|
|
||||||
<span>{employee._owner.myRole()}</span>
|
|
||||||
<span className="w-1/3">
|
|
||||||
<NavLink to={`/employee/${employee.id}`}>
|
|
||||||
{employee.name}
|
|
||||||
</NavLink>
|
|
||||||
</span>
|
|
||||||
{employee.finalStep?.done && <span>✅</span>}
|
|
||||||
{employee._owner.myRole() === "admin" &&
|
|
||||||
!employee.finalStep?.done && (
|
|
||||||
<span
|
|
||||||
onClick={() => {
|
|
||||||
employee.deleted = true;
|
|
||||||
}}
|
|
||||||
className="cursor-pointer"
|
|
||||||
>
|
|
||||||
🗑
|
|
||||||
</span>
|
|
||||||
)}
|
|
||||||
</li>
|
|
||||||
),
|
|
||||||
)}
|
|
||||||
</ul>
|
|
||||||
</Stack>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,240 +0,0 @@
|
|||||||
import { Button } from "@/components/Button.tsx";
|
|
||||||
import { NavigateBack } from "@/components/NavigateBack.tsx";
|
|
||||||
import { Stack } from "@/components/Stack.tsx";
|
|
||||||
import { TextInput } from "@/components/TextInput.tsx";
|
|
||||||
import { createImage } from "jazz-browser-media-images";
|
|
||||||
import { useCoState } from "jazz-react";
|
|
||||||
import { ProgressiveImg, createInviteLink } from "jazz-react";
|
|
||||||
import { CoMap, ID } from "jazz-tools";
|
|
||||||
import { ChangeEvent, ReactNode, useCallback } from "react";
|
|
||||||
import { useParams } from "react-router";
|
|
||||||
import {
|
|
||||||
CoDocUploadStep,
|
|
||||||
CoEmployee,
|
|
||||||
CoFinalStep,
|
|
||||||
CoInitialStep,
|
|
||||||
} from "../schema.ts";
|
|
||||||
|
|
||||||
const Card = ({
|
|
||||||
children,
|
|
||||||
title,
|
|
||||||
isDone,
|
|
||||||
isActive,
|
|
||||||
}: {
|
|
||||||
children: ReactNode;
|
|
||||||
title: string;
|
|
||||||
isDone: boolean;
|
|
||||||
isActive?: boolean;
|
|
||||||
}) => (
|
|
||||||
<div
|
|
||||||
className={`w-full p-4 bg-white border border-gray-200 rounded-lg shadow max-w-md ${
|
|
||||||
isActive ? "border-gray-900 hover:bg-green-50 shadow-xl" : ""
|
|
||||||
}`}
|
|
||||||
>
|
|
||||||
<Stack horizontal={true}>
|
|
||||||
<h5 className="mb-2 text-2xl text-gray-900">{title}</h5>
|
|
||||||
<h6 className="mb-2 text-2xl">
|
|
||||||
{isDone ? "✅" : isActive ? "❓" : "⌛"}
|
|
||||||
</h6>
|
|
||||||
</Stack>
|
|
||||||
{children}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
|
|
||||||
const InfoCard = ({
|
|
||||||
initialStep,
|
|
||||||
canWrite,
|
|
||||||
}: {
|
|
||||||
initialStep: CoInitialStep;
|
|
||||||
canWrite: boolean;
|
|
||||||
}) => {
|
|
||||||
const isDisabled = !initialStep.isCurrentStep() || !canWrite;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Card
|
|
||||||
title="Personal Info"
|
|
||||||
isDone={initialStep?.done}
|
|
||||||
isActive={initialStep.isCurrentStep()}
|
|
||||||
>
|
|
||||||
<Stack>
|
|
||||||
<TextInput
|
|
||||||
disabled={isDisabled}
|
|
||||||
id="ssn"
|
|
||||||
label="Social Security Number"
|
|
||||||
value={initialStep.ssn || ""}
|
|
||||||
onChange={({ target: { value } }) => (initialStep.ssn = value)}
|
|
||||||
/>
|
|
||||||
<TextInput
|
|
||||||
disabled={isDisabled}
|
|
||||||
id="address"
|
|
||||||
label="Address"
|
|
||||||
value={initialStep.address || ""}
|
|
||||||
onChange={({ target: { value } }) => (initialStep.address = value)}
|
|
||||||
/>
|
|
||||||
{!initialStep.done && (
|
|
||||||
<Button
|
|
||||||
text={"Upload step >"}
|
|
||||||
disabled={!initialStep.ssn || !initialStep.address || isDisabled}
|
|
||||||
onClick={() => (initialStep.done = true)}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</Stack>
|
|
||||||
</Card>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
const UploadCard = ({
|
|
||||||
uploadStep,
|
|
||||||
canWrite,
|
|
||||||
}: {
|
|
||||||
uploadStep: CoDocUploadStep;
|
|
||||||
canWrite: boolean;
|
|
||||||
}) => {
|
|
||||||
const isDisabled = !uploadStep.isCurrentStep() || !canWrite;
|
|
||||||
|
|
||||||
const onImageSelected = useCallback(
|
|
||||||
async (event: ChangeEvent<HTMLInputElement>) => {
|
|
||||||
if (!event.target.files) return;
|
|
||||||
|
|
||||||
const image = await createImage(event.target.files[0], {
|
|
||||||
owner: uploadStep._owner,
|
|
||||||
});
|
|
||||||
|
|
||||||
uploadStep.photo = image;
|
|
||||||
},
|
|
||||||
[uploadStep],
|
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Card
|
|
||||||
title="Uploads"
|
|
||||||
isDone={uploadStep?.done}
|
|
||||||
isActive={uploadStep.isCurrentStep()}
|
|
||||||
>
|
|
||||||
<Stack>
|
|
||||||
{uploadStep.photo && (
|
|
||||||
<ProgressiveImg image={uploadStep.photo}>
|
|
||||||
{({ src }) => (
|
|
||||||
<img
|
|
||||||
className="max-h-full max-w-full rounded-l-sm rounded-r-md shadow-lg p-2"
|
|
||||||
src={src}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</ProgressiveImg>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{!uploadStep.done && (
|
|
||||||
<>
|
|
||||||
<input
|
|
||||||
type="file"
|
|
||||||
disabled={isDisabled}
|
|
||||||
onChange={onImageSelected}
|
|
||||||
data-testid="file-upload"
|
|
||||||
/>
|
|
||||||
<Button
|
|
||||||
text={"Confirmation step >"}
|
|
||||||
disabled={isDisabled || !uploadStep.photo}
|
|
||||||
onClick={() => (uploadStep.done = true)}
|
|
||||||
/>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
</Stack>
|
|
||||||
</Card>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
const ConfirmationCard = ({
|
|
||||||
finalStep,
|
|
||||||
editable,
|
|
||||||
}: {
|
|
||||||
finalStep: CoFinalStep;
|
|
||||||
editable: boolean;
|
|
||||||
}) => {
|
|
||||||
const isDisabled = !finalStep.isCurrentStep() || !editable;
|
|
||||||
return (
|
|
||||||
<Card
|
|
||||||
title="Confirmation by admin"
|
|
||||||
isDone={finalStep?.done}
|
|
||||||
isActive={finalStep.isCurrentStep()}
|
|
||||||
>
|
|
||||||
<Stack>
|
|
||||||
{!finalStep.done && (
|
|
||||||
<Button
|
|
||||||
text="Confirmation by admin"
|
|
||||||
disabled={isDisabled}
|
|
||||||
onClick={() => (finalStep.done = true)}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</Stack>
|
|
||||||
</Card>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export function EmployeeOnboading() {
|
|
||||||
const { employeeCoId } = useParams();
|
|
||||||
|
|
||||||
const employee = useCoState(CoEmployee, employeeCoId as ID<CoEmployee>, {});
|
|
||||||
|
|
||||||
const handleInviteLinkCreation = useCallback(
|
|
||||||
(role: "reader" | "writer") => {
|
|
||||||
if (!employee) return;
|
|
||||||
|
|
||||||
const link = createInviteLink(employee, role);
|
|
||||||
navigator.clipboard.writeText(link);
|
|
||||||
alert("Invite link copied to clipboard!");
|
|
||||||
},
|
|
||||||
[employee],
|
|
||||||
);
|
|
||||||
|
|
||||||
const isMeWriter = (step: CoMap): boolean => {
|
|
||||||
return ["writer", "admin"].includes(step._owner.myRole() || "");
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<Stack>
|
|
||||||
<Stack horizontal={true}>
|
|
||||||
<NavigateBack />
|
|
||||||
{employee?._owner.myRole() === "admin" && (
|
|
||||||
<Button
|
|
||||||
text={"Invite a co-worker"}
|
|
||||||
onClick={() => handleInviteLinkCreation("writer")}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</Stack>
|
|
||||||
<h2 className="mb-2 text-2xl text-gray-900 font-semibold">
|
|
||||||
{employee ? employee.name : "Loading..."}
|
|
||||||
</h2>
|
|
||||||
</Stack>
|
|
||||||
|
|
||||||
{employee && (
|
|
||||||
<Stack>
|
|
||||||
{employee.initialStep ? (
|
|
||||||
<InfoCard
|
|
||||||
initialStep={employee.initialStep}
|
|
||||||
canWrite={isMeWriter(employee.initialStep)}
|
|
||||||
/>
|
|
||||||
) : (
|
|
||||||
<div>Loading...</div>
|
|
||||||
)}
|
|
||||||
{employee.docUploadStep ? (
|
|
||||||
<UploadCard
|
|
||||||
uploadStep={employee.docUploadStep}
|
|
||||||
canWrite={isMeWriter(employee.docUploadStep)}
|
|
||||||
/>
|
|
||||||
) : (
|
|
||||||
<div>Loading...</div>
|
|
||||||
)}
|
|
||||||
{employee.finalStep ? (
|
|
||||||
<ConfirmationCard
|
|
||||||
finalStep={employee.finalStep}
|
|
||||||
editable={isMeWriter(employee.finalStep)}
|
|
||||||
/>
|
|
||||||
) : (
|
|
||||||
<div>Loading...</div>
|
|
||||||
)}
|
|
||||||
</Stack>
|
|
||||||
)}
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
import { Button } from "@/components/Button.tsx";
|
|
||||||
import { NavigateBack } from "@/components/NavigateBack.tsx";
|
|
||||||
import { Stack } from "@/components/Stack.tsx";
|
|
||||||
import { TextInput } from "@/components/TextInput.tsx";
|
|
||||||
import { useAccount, useCoState } from "jazz-react";
|
|
||||||
import { Group, ID } from "jazz-tools";
|
|
||||||
import { useCallback, useState } from "react";
|
|
||||||
import { useNavigate } from "react-router-dom";
|
|
||||||
import {
|
|
||||||
CoDocUploadStep,
|
|
||||||
CoEmployee,
|
|
||||||
CoFinalStep,
|
|
||||||
CoInitialStep,
|
|
||||||
EmployeeCoList,
|
|
||||||
} from "../schema.ts";
|
|
||||||
|
|
||||||
export function NewEmployee({
|
|
||||||
employeeListCoId,
|
|
||||||
}: {
|
|
||||||
employeeListCoId: ID<EmployeeCoList>;
|
|
||||||
}) {
|
|
||||||
const navigate = useNavigate();
|
|
||||||
const { me } = useAccount();
|
|
||||||
|
|
||||||
const employees = useCoState(EmployeeCoList, employeeListCoId, [{}]);
|
|
||||||
|
|
||||||
const [employeeName, setEmployeeName] = useState<string>("");
|
|
||||||
|
|
||||||
const createEmployee = useCallback(() => {
|
|
||||||
if (!employees) return;
|
|
||||||
|
|
||||||
const writerGroup = Group.create({ owner: me });
|
|
||||||
const readerGroup = Group.create({ owner: me });
|
|
||||||
readerGroup.addMember("everyone", "reader");
|
|
||||||
|
|
||||||
const initialStep = CoInitialStep.create(
|
|
||||||
{ done: false, type: "initial" },
|
|
||||||
{ owner: writerGroup },
|
|
||||||
);
|
|
||||||
|
|
||||||
const docUploadStep = CoDocUploadStep.create(
|
|
||||||
{ done: false, prevStep: initialStep, type: "upload" },
|
|
||||||
{ owner: writerGroup },
|
|
||||||
);
|
|
||||||
|
|
||||||
const finalStep = CoFinalStep.create(
|
|
||||||
{ done: false, prevStep: docUploadStep, type: "final" },
|
|
||||||
{ owner: readerGroup },
|
|
||||||
);
|
|
||||||
|
|
||||||
const employee = CoEmployee.create(
|
|
||||||
{
|
|
||||||
name: employeeName,
|
|
||||||
initialStep,
|
|
||||||
docUploadStep,
|
|
||||||
finalStep,
|
|
||||||
},
|
|
||||||
{ owner: writerGroup },
|
|
||||||
);
|
|
||||||
|
|
||||||
employees.push(employee);
|
|
||||||
setEmployeeName("");
|
|
||||||
}, [employeeName, employees]);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className="w-96">
|
|
||||||
<Stack>
|
|
||||||
<NavigateBack />
|
|
||||||
<form className="grid gap-3">
|
|
||||||
<TextInput
|
|
||||||
label="Employee name"
|
|
||||||
id="employee-name"
|
|
||||||
value={employeeName}
|
|
||||||
onChange={({ target: { value } }) => setEmployeeName(value)}
|
|
||||||
/>
|
|
||||||
<Button
|
|
||||||
type="submit"
|
|
||||||
disabled={!employeeName}
|
|
||||||
onClick={() => {
|
|
||||||
createEmployee();
|
|
||||||
navigate("/");
|
|
||||||
}}
|
|
||||||
text="Create Employee"
|
|
||||||
/>
|
|
||||||
</form>
|
|
||||||
</Stack>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
import {
|
|
||||||
Account,
|
|
||||||
CoList,
|
|
||||||
CoMap,
|
|
||||||
ImageDefinition,
|
|
||||||
Profile,
|
|
||||||
co,
|
|
||||||
} from "jazz-tools";
|
|
||||||
|
|
||||||
type Steps = "initial" | "upload" | "final";
|
|
||||||
|
|
||||||
interface Step {
|
|
||||||
type: Steps;
|
|
||||||
prevStep: ReturnType<typeof co.ref> | undefined;
|
|
||||||
done: boolean;
|
|
||||||
|
|
||||||
isCurrentStep(): boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class CoInitialStep extends CoMap implements Step {
|
|
||||||
type = co.literal("initial");
|
|
||||||
ssn? = co.string;
|
|
||||||
address? = co.string;
|
|
||||||
done = co.boolean;
|
|
||||||
prevStep = co.null;
|
|
||||||
isCurrentStep() {
|
|
||||||
return !this.done;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class CoDocUploadStep extends CoMap implements Step {
|
|
||||||
type = co.literal("upload");
|
|
||||||
prevStep = co.ref(CoInitialStep);
|
|
||||||
photo = co.ref(ImageDefinition, { optional: true });
|
|
||||||
done = co.boolean;
|
|
||||||
|
|
||||||
isCurrentStep() {
|
|
||||||
return !!(this.prevStep?.done && !this.done);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class CoFinalStep extends CoMap implements Step {
|
|
||||||
type = co.literal("final");
|
|
||||||
prevStep = co.ref(CoDocUploadStep);
|
|
||||||
done = co.boolean;
|
|
||||||
|
|
||||||
isCurrentStep() {
|
|
||||||
return !!(this.prevStep?.done && !this.done);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class CoEmployee extends CoMap {
|
|
||||||
name = co.string;
|
|
||||||
deleted? = co.boolean;
|
|
||||||
initialStep = co.ref(CoInitialStep);
|
|
||||||
docUploadStep = co.ref(CoDocUploadStep);
|
|
||||||
finalStep = co.ref(CoFinalStep);
|
|
||||||
}
|
|
||||||
|
|
||||||
export class EmployeeCoList extends CoList.Of(co.ref(CoEmployee)) {}
|
|
||||||
|
|
||||||
export class HRProfile extends Profile {
|
|
||||||
employees = co.ref(EmployeeCoList);
|
|
||||||
}
|
|
||||||
|
|
||||||
export class HRAccount extends Account {
|
|
||||||
profile = co.ref(HRProfile)!;
|
|
||||||
|
|
||||||
migrate() {
|
|
||||||
if (!this.profile._refs.employees) {
|
|
||||||
this.profile.employees = EmployeeCoList.create([], {
|
|
||||||
owner: this.profile._owner,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
import type { Config } from "tailwindcss";
|
|
||||||
|
|
||||||
const config: Config = {
|
|
||||||
content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
|
|
||||||
theme: {
|
|
||||||
extend: {},
|
|
||||||
},
|
|
||||||
plugins: [],
|
|
||||||
};
|
|
||||||
|
|
||||||
export default config;
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
import {
|
|
||||||
Browser,
|
|
||||||
BrowserContext,
|
|
||||||
Page,
|
|
||||||
chromium,
|
|
||||||
expect,
|
|
||||||
test,
|
|
||||||
} from "@playwright/test";
|
|
||||||
import { EmployeeOnboardingPage } from "./pages/EmployeeOnboardingPage";
|
|
||||||
import { HomePage } from "./pages/HomePage";
|
|
||||||
import { LoginPage } from "./pages/LoginPage";
|
|
||||||
|
|
||||||
async function scrollToBottom(page: Page) {
|
|
||||||
await page.evaluate(() => {
|
|
||||||
window.scrollTo(0, document.body.scrollHeight);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
test.describe("Admin onboarding flow", () => {
|
|
||||||
let browser: Browser;
|
|
||||||
let adminContext: BrowserContext;
|
|
||||||
let writerContext: BrowserContext;
|
|
||||||
|
|
||||||
test.beforeAll(async () => {
|
|
||||||
browser = await chromium.launch();
|
|
||||||
adminContext = await browser.newContext();
|
|
||||||
writerContext = await browser.newContext();
|
|
||||||
});
|
|
||||||
|
|
||||||
test.afterAll(async () => {
|
|
||||||
await adminContext.close();
|
|
||||||
await writerContext.close();
|
|
||||||
await browser.close();
|
|
||||||
});
|
|
||||||
|
|
||||||
test("Create and delete flow", async () => {
|
|
||||||
const adminPage = await adminContext.newPage();
|
|
||||||
await adminPage.goto("/");
|
|
||||||
const adminHomePage = new HomePage(adminPage);
|
|
||||||
await adminHomePage.createEmployee("Paul");
|
|
||||||
await adminHomePage.createEmployee("Sean");
|
|
||||||
await adminHomePage.expectEmployee(["Sean", "admin"]);
|
|
||||||
await adminHomePage.expectEmployee(["Paul", "admin"]);
|
|
||||||
await adminHomePage.deleteEmployee("Sean");
|
|
||||||
await adminHomePage.expectEmployeeDeleted("Sean");
|
|
||||||
|
|
||||||
await adminPage.close();
|
|
||||||
});
|
|
||||||
|
|
||||||
test("Onboard flow", async () => {
|
|
||||||
const adminPage = await adminContext.newPage();
|
|
||||||
const writerPage = await writerContext.newPage();
|
|
||||||
|
|
||||||
await adminPage.goto("/");
|
|
||||||
await writerPage.goto("/");
|
|
||||||
|
|
||||||
const adminHomePage = new HomePage(adminPage);
|
|
||||||
await adminHomePage.createEmployee("Paul");
|
|
||||||
await adminHomePage.expectEmployee(["Paul", "admin"]);
|
|
||||||
await adminHomePage.navigateToEmployeeOnboardingPage("Paul");
|
|
||||||
const adminOnboardingPage = new EmployeeOnboardingPage(adminPage);
|
|
||||||
|
|
||||||
// create invitation
|
|
||||||
const invitation = await adminOnboardingPage.getShareLink();
|
|
||||||
|
|
||||||
// Wait for the invitation to be synced
|
|
||||||
await writerPage.waitForTimeout(3000);
|
|
||||||
|
|
||||||
//fill out by invitee (writer)
|
|
||||||
await writerPage.goto(invitation);
|
|
||||||
|
|
||||||
const writerHomePage = new HomePage(writerPage);
|
|
||||||
await writerHomePage.expectEmployee(["Paul", "write"]);
|
|
||||||
await writerHomePage.navigateToEmployeeOnboardingPage("Paul");
|
|
||||||
const writerOnboardingPage = new EmployeeOnboardingPage(writerPage);
|
|
||||||
await writerOnboardingPage.expectEmployeeName("Paul");
|
|
||||||
await writerOnboardingPage.fillPersonalDetailsCardAndSave(
|
|
||||||
"123-45-6789",
|
|
||||||
"123 Elm Street",
|
|
||||||
);
|
|
||||||
await writerOnboardingPage.fillUploadCardAndSave(
|
|
||||||
"./public/jazz-logo-low-res.jpg",
|
|
||||||
);
|
|
||||||
|
|
||||||
// invitee cannot confirm the onboarding completion
|
|
||||||
expect(
|
|
||||||
writerOnboardingPage.finalConfirmationButton.isDisabled(),
|
|
||||||
).toBeTruthy();
|
|
||||||
|
|
||||||
// final confirmation step by admin
|
|
||||||
await scrollToBottom(adminPage);
|
|
||||||
await adminOnboardingPage.finalConfirmationButton.click();
|
|
||||||
await adminOnboardingPage.backButton.click();
|
|
||||||
await adminHomePage.expectOnboardingCompleteForEmployee("Paul");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
import { Locator, Page, expect } from "@playwright/test";
|
|
||||||
|
|
||||||
export class EmployeeOnboardingPage {
|
|
||||||
readonly page: Page;
|
|
||||||
readonly shareButton: Locator;
|
|
||||||
readonly backButton: Locator;
|
|
||||||
readonly logoutButton: Locator;
|
|
||||||
readonly finalConfirmationButton: Locator;
|
|
||||||
readonly fileInput: Locator;
|
|
||||||
|
|
||||||
constructor(page: Page) {
|
|
||||||
this.page = page;
|
|
||||||
this.shareButton = page.getByRole("button", {
|
|
||||||
name: /invite a co-worker/i,
|
|
||||||
});
|
|
||||||
this.backButton = page.getByRole("button", {
|
|
||||||
name: /back/i,
|
|
||||||
});
|
|
||||||
this.logoutButton = page.getByRole("button", {
|
|
||||||
name: /log out/i,
|
|
||||||
});
|
|
||||||
this.finalConfirmationButton = this.page.getByRole("button", {
|
|
||||||
name: /confirmation by admin/i,
|
|
||||||
});
|
|
||||||
|
|
||||||
this.fileInput = page.getByTestId("file-upload");
|
|
||||||
}
|
|
||||||
|
|
||||||
async uploadFile(value: string) {
|
|
||||||
// Start waiting for file chooser before clicking. Note no await.
|
|
||||||
const fileChooserPromise = this.page.waitForEvent("filechooser");
|
|
||||||
|
|
||||||
await this.fileInput.click();
|
|
||||||
|
|
||||||
const fileChooser = await fileChooserPromise;
|
|
||||||
await fileChooser.setFiles(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
async expectEmployeeName(name: string) {
|
|
||||||
await expect(
|
|
||||||
this.page.getByRole("heading", {
|
|
||||||
name: name,
|
|
||||||
}),
|
|
||||||
).toBeVisible();
|
|
||||||
}
|
|
||||||
|
|
||||||
async fillPersonalDetailsCardAndSave(ssn: string, address: string) {
|
|
||||||
const nextStepButton = this.page.getByRole("button", {
|
|
||||||
name: /upload step >/i,
|
|
||||||
});
|
|
||||||
await expect(nextStepButton).toBeDisabled();
|
|
||||||
|
|
||||||
const ssnInput = this.page.getByLabel(/Social Security Number/i);
|
|
||||||
await ssnInput.fill(ssn);
|
|
||||||
|
|
||||||
const addressInput = this.page.getByLabel(/Address/i);
|
|
||||||
await addressInput.fill(address);
|
|
||||||
|
|
||||||
// save and hide the button
|
|
||||||
await expect(nextStepButton).toBeEnabled();
|
|
||||||
await nextStepButton.click();
|
|
||||||
await expect(nextStepButton).not.toBeVisible();
|
|
||||||
}
|
|
||||||
|
|
||||||
async fillUploadCardAndSave(file: string) {
|
|
||||||
const nextStepButton = this.page.getByRole("button", {
|
|
||||||
name: /confirmation step >/i,
|
|
||||||
});
|
|
||||||
await expect(nextStepButton).toBeDisabled();
|
|
||||||
|
|
||||||
await this.uploadFile(file);
|
|
||||||
await expect(nextStepButton).toBeEnabled();
|
|
||||||
await nextStepButton.click();
|
|
||||||
await expect(nextStepButton).not.toBeVisible();
|
|
||||||
}
|
|
||||||
|
|
||||||
async getShareLink() {
|
|
||||||
await this.shareButton.click();
|
|
||||||
|
|
||||||
const inviteUrl = await this.page.evaluate(() =>
|
|
||||||
navigator.clipboard.readText(),
|
|
||||||
);
|
|
||||||
|
|
||||||
expect(inviteUrl).toBeTruthy();
|
|
||||||
|
|
||||||
return inviteUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
async logout() {
|
|
||||||
await this.logoutButton.click();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
import { Locator, Page, expect } from "@playwright/test";
|
|
||||||
import { NewEmployeePage } from "./NewEmployeePage";
|
|
||||||
|
|
||||||
export class HomePage {
|
|
||||||
readonly page: Page;
|
|
||||||
readonly newEmployeeLink: Locator;
|
|
||||||
readonly logoutButton: Locator;
|
|
||||||
|
|
||||||
constructor(page: Page) {
|
|
||||||
this.page = page;
|
|
||||||
this.newEmployeeLink = page.getByRole("button", {
|
|
||||||
name: "Add New Employee",
|
|
||||||
});
|
|
||||||
this.logoutButton = page.getByRole("button", {
|
|
||||||
name: "Log Out",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async expectEmployee([name, role]: [string, string]) {
|
|
||||||
const liElement = this.page.locator(
|
|
||||||
`li:has-text("${name}"):has-text("${role}")`,
|
|
||||||
);
|
|
||||||
await expect(liElement).toBeVisible();
|
|
||||||
}
|
|
||||||
|
|
||||||
async deleteEmployee(name: string) {
|
|
||||||
const liElement = this.page.locator(`li:has-text("${name}")`);
|
|
||||||
const deleteIcon = liElement.locator('span:has-text("🗑")');
|
|
||||||
await deleteIcon.click();
|
|
||||||
}
|
|
||||||
|
|
||||||
async expectOnboardingCompleteForEmployee(name: string) {
|
|
||||||
const liElement = this.page.locator(`li:has-text("${name}")`);
|
|
||||||
const completionIcon = liElement.locator('span:has-text("✅")');
|
|
||||||
await expect(completionIcon).toBeVisible();
|
|
||||||
}
|
|
||||||
|
|
||||||
async expectEmployeeDeleted(name: string) {
|
|
||||||
const liElement = this.page.locator(`li:has-text("${name}")`);
|
|
||||||
await expect(liElement).not.toBeVisible();
|
|
||||||
}
|
|
||||||
|
|
||||||
async navigateToEmployeeOnboardingPage(name: string) {
|
|
||||||
await this.page
|
|
||||||
.getByRole("link", {
|
|
||||||
name,
|
|
||||||
})
|
|
||||||
.click();
|
|
||||||
}
|
|
||||||
|
|
||||||
async navigateToNewEmployee() {
|
|
||||||
await this.newEmployeeLink.click();
|
|
||||||
}
|
|
||||||
|
|
||||||
async createEmployee(name: string) {
|
|
||||||
await this.navigateToNewEmployee();
|
|
||||||
const newEmployeePage = new NewEmployeePage(this.page);
|
|
||||||
|
|
||||||
await newEmployeePage.fillEmployeeName(name);
|
|
||||||
await newEmployeePage.submit();
|
|
||||||
}
|
|
||||||
|
|
||||||
async logout() {
|
|
||||||
await this.logoutButton.click();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
import { Locator, Page, expect } from "@playwright/test";
|
|
||||||
|
|
||||||
export class LoginPage {
|
|
||||||
readonly page: Page;
|
|
||||||
readonly usernameInput: Locator;
|
|
||||||
readonly signupButton: Locator;
|
|
||||||
|
|
||||||
constructor(page: Page) {
|
|
||||||
this.page = page;
|
|
||||||
this.usernameInput = page.getByRole("textbox");
|
|
||||||
this.signupButton = page.getByRole("button", {
|
|
||||||
name: "Sign up",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async goto(url: string) {
|
|
||||||
await this.page.goto(url);
|
|
||||||
}
|
|
||||||
|
|
||||||
async fillUsername(value: string) {
|
|
||||||
await this.usernameInput.clear();
|
|
||||||
await this.usernameInput.fill(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
async loginAs(value: string) {
|
|
||||||
await this.page
|
|
||||||
.getByRole("button", {
|
|
||||||
name: value,
|
|
||||||
})
|
|
||||||
.click();
|
|
||||||
}
|
|
||||||
|
|
||||||
async signup() {
|
|
||||||
await this.signupButton.click();
|
|
||||||
}
|
|
||||||
|
|
||||||
async expectLoaded() {
|
|
||||||
await expect(this.signupButton).toBeVisible();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
import { Locator, Page } from "@playwright/test";
|
|
||||||
|
|
||||||
export class NewEmployeePage {
|
|
||||||
readonly page: Page;
|
|
||||||
readonly employeeNameInput: Locator;
|
|
||||||
readonly submitButton: Locator;
|
|
||||||
|
|
||||||
constructor(page: Page) {
|
|
||||||
this.page = page;
|
|
||||||
this.employeeNameInput = page.getByLabel(/employee name/i);
|
|
||||||
this.submitButton = page.getByRole("button", {
|
|
||||||
name: /create employee/i,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async fillEmployeeName(value: string) {
|
|
||||||
await this.employeeNameInput.clear();
|
|
||||||
await this.employeeNameInput.fill(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
async submit() {
|
|
||||||
await this.submitButton.click();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"target": "ES2020",
|
|
||||||
"useDefineForClassFields": true,
|
|
||||||
"lib": ["ES2023", "DOM", "DOM.Iterable"],
|
|
||||||
"module": "ESNext",
|
|
||||||
"skipLibCheck": true,
|
|
||||||
|
|
||||||
"moduleResolution": "bundler",
|
|
||||||
"allowImportingTsExtensions": true,
|
|
||||||
"resolveJsonModule": true,
|
|
||||||
"isolatedModules": true,
|
|
||||||
"noEmit": true,
|
|
||||||
"jsx": "react-jsx",
|
|
||||||
|
|
||||||
"strict": true,
|
|
||||||
"noUnusedLocals": true,
|
|
||||||
"noUnusedParameters": true,
|
|
||||||
"noFallthroughCasesInSwitch": true,
|
|
||||||
"baseUrl": "./",
|
|
||||||
"paths": {
|
|
||||||
"@/*": ["./src/*"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"include": ["src"],
|
|
||||||
"references": [{ "path": "./tsconfig.node.json" }]
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"composite": true,
|
|
||||||
"skipLibCheck": true,
|
|
||||||
"module": "ESNext",
|
|
||||||
"moduleResolution": "bundler",
|
|
||||||
"allowSyntheticDefaultImports": true,
|
|
||||||
"strict": true
|
|
||||||
},
|
|
||||||
"include": ["vite.config.ts"]
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
import path from "path";
|
|
||||||
import react from "@vitejs/plugin-react-swc";
|
|
||||||
import { defineConfig } from "vite";
|
|
||||||
import topLevelAwait from "vite-plugin-top-level-await";
|
|
||||||
|
|
||||||
// https://vitejs.dev/config/
|
|
||||||
export default defineConfig({
|
|
||||||
plugins: [react(), topLevelAwait()],
|
|
||||||
resolve: {
|
|
||||||
alias: {
|
|
||||||
"@": path.resolve(__dirname, "./src"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
build: {
|
|
||||||
minify: false,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
// vite.config.ts
|
|
||||||
import path from "path";
|
|
||||||
import react from "file:///Users/brad/dev/jazz/node_modules/@vitejs/plugin-react-swc/index.mjs";
|
|
||||||
import topLevelAwait from "file:///Users/brad/dev/jazz/node_modules/vite-plugin-top-level-await/exports/import.mjs";
|
|
||||||
import { defineConfig } from "file:///Users/brad/dev/jazz/node_modules/vite/dist/node/index.js";
|
|
||||||
var __vite_injected_original_dirname =
|
|
||||||
"/Users/brad/dev/jazz/examples/onboarding";
|
|
||||||
var vite_config_default = defineConfig({
|
|
||||||
plugins: [react(), topLevelAwait()],
|
|
||||||
resolve: {
|
|
||||||
alias: {
|
|
||||||
"@": path.resolve(__vite_injected_original_dirname, "./src"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
build: {
|
|
||||||
minify: false,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
export { vite_config_default as default };
|
|
||||||
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvYnJhZC9kZXYvamF6ei9leGFtcGxlcy9vbmJvYXJkaW5nXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvYnJhZC9kZXYvamF6ei9leGFtcGxlcy9vbmJvYXJkaW5nL3ZpdGUuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9icmFkL2Rldi9qYXp6L2V4YW1wbGVzL29uYm9hcmRpbmcvdml0ZS5jb25maWcudHNcIjtpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHJlYWN0IGZyb20gXCJAdml0ZWpzL3BsdWdpbi1yZWFjdC1zd2NcIjtcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgdG9wTGV2ZWxBd2FpdCBmcm9tIFwidml0ZS1wbHVnaW4tdG9wLWxldmVsLWF3YWl0XCI7XG5cbi8vIGh0dHBzOi8vdml0ZWpzLmRldi9jb25maWcvXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xuICBwbHVnaW5zOiBbcmVhY3QoKSwgdG9wTGV2ZWxBd2FpdCgpXSxcbiAgcmVzb2x2ZToge1xuICAgIGFsaWFzOiB7XG4gICAgICBcIkBcIjogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgXCIuL3NyY1wiKSxcbiAgICB9LFxuICB9LFxuICBidWlsZDoge1xuICAgIG1pbmlmeTogZmFsc2UsXG4gIH0sXG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBMFMsT0FBTyxVQUFVO0FBQzNULE9BQU8sV0FBVztBQUNsQixTQUFTLG9CQUFvQjtBQUM3QixPQUFPLG1CQUFtQjtBQUgxQixJQUFNLG1DQUFtQztBQU16QyxJQUFPLHNCQUFRLGFBQWE7QUFBQSxFQUMxQixTQUFTLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQztBQUFBLEVBQ2xDLFNBQVM7QUFBQSxJQUNQLE9BQU87QUFBQSxNQUNMLEtBQUssS0FBSyxRQUFRLGtDQUFXLE9BQU87QUFBQSxJQUN0QztBQUFBLEVBQ0Y7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNMLFFBQVE7QUFBQSxFQUNWO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K
|
|
||||||
@@ -1,5 +1,61 @@
|
|||||||
# organization
|
# organization
|
||||||
|
|
||||||
|
## 0.0.45
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
|
||||||
|
## 0.0.44
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1d71ca1]
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-react@0.10.6
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
|
||||||
|
## 0.0.43
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-react@0.10.5
|
||||||
|
|
||||||
|
## 0.0.42
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
|
||||||
|
## 0.0.41
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-react@0.10.3
|
||||||
|
|
||||||
|
## 0.0.40
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
|
||||||
|
## 0.0.39
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-react@0.10.1
|
||||||
|
|
||||||
## 0.0.38
|
## 0.0.38
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "organization",
|
"name": "organization",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.38",
|
"version": "0.0.45",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "tsc -b && vite build",
|
"build": "vite build",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"format-and-lint": "biome check .",
|
"format-and-lint": "biome check .",
|
||||||
"format-and-lint:fix": "biome check . --write"
|
"format-and-lint:fix": "biome check . --write"
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
{"root":["./src/acceptinvitepage.tsx","./src/homepage.tsx","./src/layout.tsx","./src/organizationpage.tsx","./src/main.tsx","./src/schema.ts","./src/vite-env.d.ts","./src/components/createorganization.tsx","./src/components/createproject.tsx","./src/components/errors.tsx","./src/components/heading.tsx","./src/components/invitelink.tsx","./src/components/organizationform.tsx","./src/components/organizationmembers.tsx","./src/components/organizationselector.tsx"],"version":"5.6.3"}
|
|
||||||
2
examples/organization/vite.config.d.ts
vendored
2
examples/organization/vite.config.d.ts
vendored
@@ -1,2 +0,0 @@
|
|||||||
declare const _default: import("vite").UserConfig;
|
|
||||||
export default _default;
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
import react from "@vitejs/plugin-react";
|
|
||||||
import { defineConfig } from "vite";
|
|
||||||
// https://vite.dev/config/
|
|
||||||
export default defineConfig({
|
|
||||||
plugins: [react()],
|
|
||||||
});
|
|
||||||
@@ -1,7 +1,13 @@
|
|||||||
|
import path from "path";
|
||||||
import react from "@vitejs/plugin-react";
|
import react from "@vitejs/plugin-react";
|
||||||
import { defineConfig } from "vite";
|
import { defineConfig } from "vite";
|
||||||
|
|
||||||
// https://vite.dev/config/
|
// https://vite.dev/config/
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [react()],
|
plugins: [react()],
|
||||||
|
resolve: {
|
||||||
|
alias: {
|
||||||
|
"@": path.resolve(__dirname, "./src"),
|
||||||
|
},
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,48 @@
|
|||||||
# passkey-svelte
|
# passkey-svelte
|
||||||
|
|
||||||
|
## 0.0.40
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- jazz-svelte@0.10.7
|
||||||
|
|
||||||
|
## 0.0.39
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-svelte@0.10.6
|
||||||
|
|
||||||
|
## 0.0.38
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-svelte@0.10.5
|
||||||
|
|
||||||
|
## 0.0.37
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-svelte@0.10.4
|
||||||
|
|
||||||
|
## 0.0.36
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-svelte@0.10.3
|
||||||
|
|
||||||
|
## 0.0.35
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-svelte@0.10.2
|
||||||
|
|
||||||
|
## 0.0.34
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-svelte@0.10.1
|
||||||
|
|
||||||
## 0.0.33
|
## 0.0.33
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "passkey-svelte",
|
"name": "passkey-svelte",
|
||||||
"version": "0.0.33",
|
"version": "0.0.40",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1,5 +1,61 @@
|
|||||||
# minimal-auth-passkey
|
# minimal-auth-passkey
|
||||||
|
|
||||||
|
## 0.0.50
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
|
||||||
|
## 0.0.49
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1d71ca1]
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-react@0.10.6
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
|
||||||
|
## 0.0.48
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-react@0.10.5
|
||||||
|
|
||||||
|
## 0.0.47
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
|
||||||
|
## 0.0.46
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-react@0.10.3
|
||||||
|
|
||||||
|
## 0.0.45
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
|
||||||
|
## 0.0.44
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-react@0.10.1
|
||||||
|
|
||||||
## 0.0.43
|
## 0.0.43
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "passkey",
|
"name": "passkey",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.43",
|
"version": "0.0.50",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -1,5 +1,61 @@
|
|||||||
# passphrase
|
# passphrase
|
||||||
|
|
||||||
|
## 0.0.47
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
|
||||||
|
## 0.0.46
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1d71ca1]
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-react@0.10.6
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
|
||||||
|
## 0.0.45
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-react@0.10.5
|
||||||
|
|
||||||
|
## 0.0.44
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
|
||||||
|
## 0.0.43
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-react@0.10.3
|
||||||
|
|
||||||
|
## 0.0.42
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
|
||||||
|
## 0.0.41
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-react@0.10.1
|
||||||
|
|
||||||
## 0.0.40
|
## 0.0.40
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "passphrase",
|
"name": "passphrase",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.40",
|
"version": "0.0.47",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -1,5 +1,61 @@
|
|||||||
# jazz-password-manager
|
# jazz-password-manager
|
||||||
|
|
||||||
|
## 0.0.71
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
|
||||||
|
## 0.0.70
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1d71ca1]
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-react@0.10.6
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
|
||||||
|
## 0.0.69
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-react@0.10.5
|
||||||
|
|
||||||
|
## 0.0.68
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
|
||||||
|
## 0.0.67
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-react@0.10.3
|
||||||
|
|
||||||
|
## 0.0.66
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
|
||||||
|
## 0.0.65
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-react@0.10.1
|
||||||
|
|
||||||
## 0.0.64
|
## 0.0.64
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "jazz-password-manager",
|
"name": "jazz-password-manager",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.64",
|
"version": "0.0.71",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
@@ -12,8 +12,8 @@
|
|||||||
"clean-install": "rm -rf node_modules pnpm-lock.yaml && pnpm install"
|
"clean-install": "rm -rf node_modules pnpm-lock.yaml && pnpm install"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jazz-react": "workspace:0.10.0",
|
"jazz-react": "workspace:0.10.7",
|
||||||
"jazz-tools": "workspace:0.10.0",
|
"jazz-tools": "workspace:0.10.7",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^18.3.1",
|
||||||
"react-hook-form": "^7.41.5",
|
"react-hook-form": "^7.41.5",
|
||||||
|
|||||||
@@ -1,5 +1,68 @@
|
|||||||
# jazz-example-pets
|
# jazz-example-pets
|
||||||
|
|
||||||
|
## 0.0.169
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
- jazz-browser-media-images@0.10.7
|
||||||
|
|
||||||
|
## 0.0.168
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1d71ca1]
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-react@0.10.6
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
- jazz-browser-media-images@0.10.6
|
||||||
|
|
||||||
|
## 0.0.167
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-browser-media-images@0.10.5
|
||||||
|
- jazz-react@0.10.5
|
||||||
|
|
||||||
|
## 0.0.166
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
- jazz-browser-media-images@0.10.4
|
||||||
|
|
||||||
|
## 0.0.165
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-browser-media-images@0.10.3
|
||||||
|
- jazz-react@0.10.3
|
||||||
|
|
||||||
|
## 0.0.164
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
- jazz-browser-media-images@0.10.2
|
||||||
|
|
||||||
|
## 0.0.163
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-browser-media-images@0.10.1
|
||||||
|
- jazz-react@0.10.1
|
||||||
|
|
||||||
## 0.0.162
|
## 0.0.162
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "jazz-example-pets",
|
"name": "jazz-example-pets",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.162",
|
"version": "0.0.169",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
@@ -10,8 +10,8 @@
|
|||||||
"format-and-lint:fix": "biome check . --write",
|
"format-and-lint:fix": "biome check . --write",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"sync": "jazz-run sync",
|
"sync": "jazz-run sync",
|
||||||
"test": "playwright test",
|
"test:e2e": "playwright test",
|
||||||
"test:ui": "playwright test --ui"
|
"test:e2e:ui": "playwright test --ui"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@radix-ui/react-checkbox": "^1.0.4",
|
"@radix-ui/react-checkbox": "^1.0.4",
|
||||||
@@ -19,9 +19,9 @@
|
|||||||
"@radix-ui/react-toast": "^1.1.4",
|
"@radix-ui/react-toast": "^1.1.4",
|
||||||
"class-variance-authority": "^0.7.0",
|
"class-variance-authority": "^0.7.0",
|
||||||
"clsx": "^2.0.0",
|
"clsx": "^2.0.0",
|
||||||
"jazz-browser-media-images": "workspace:0.10.0",
|
"jazz-browser-media-images": "workspace:0.10.7",
|
||||||
"jazz-react": "workspace:0.10.0",
|
"jazz-react": "workspace:0.10.7",
|
||||||
"jazz-tools": "workspace:0.10.0",
|
"jazz-tools": "workspace:0.10.7",
|
||||||
"lucide-react": "^0.274.0",
|
"lucide-react": "^0.274.0",
|
||||||
"qrcode": "^1.5.3",
|
"qrcode": "^1.5.3",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
"@vitejs/plugin-react-swc": "^3.3.2",
|
"@vitejs/plugin-react-swc": "^3.3.2",
|
||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.20",
|
||||||
"is-ci": "^3.0.1",
|
"is-ci": "^3.0.1",
|
||||||
"jazz-run": "workspace:0.10.0",
|
"jazz-run": "workspace:0.10.7",
|
||||||
"postcss": "^8.4.27",
|
"postcss": "^8.4.27",
|
||||||
"tailwindcss": "^3.4.17",
|
"tailwindcss": "^3.4.17",
|
||||||
"typescript": "~5.6.2",
|
"typescript": "~5.6.2",
|
||||||
|
|||||||
@@ -1,5 +1,69 @@
|
|||||||
# reactions
|
# reactions
|
||||||
|
|
||||||
|
## 0.0.49
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
- jazz-browser-media-images@0.10.7
|
||||||
|
|
||||||
|
## 0.0.48
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1d71ca1]
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- hash-slash@0.2.2
|
||||||
|
- jazz-react@0.10.6
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
- jazz-browser-media-images@0.10.6
|
||||||
|
|
||||||
|
## 0.0.47
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-browser-media-images@0.10.5
|
||||||
|
- jazz-react@0.10.5
|
||||||
|
|
||||||
|
## 0.0.46
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
- jazz-browser-media-images@0.10.4
|
||||||
|
|
||||||
|
## 0.0.45
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-browser-media-images@0.10.3
|
||||||
|
- jazz-react@0.10.3
|
||||||
|
|
||||||
|
## 0.0.44
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
- jazz-browser-media-images@0.10.2
|
||||||
|
|
||||||
|
## 0.0.43
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-browser-media-images@0.10.1
|
||||||
|
- jazz-react@0.10.1
|
||||||
|
|
||||||
## 0.0.42
|
## 0.0.42
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "reactions",
|
"name": "reactions",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.42",
|
"version": "0.0.49",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -1,5 +1,68 @@
|
|||||||
# todo-vue
|
# todo-vue
|
||||||
|
|
||||||
|
## 0.0.54
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [bf76d79]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-browser@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
- jazz-vue@0.10.7
|
||||||
|
|
||||||
|
## 0.0.53
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
- jazz-browser@0.10.6
|
||||||
|
- jazz-vue@0.10.6
|
||||||
|
|
||||||
|
## 0.0.52
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-browser@0.10.5
|
||||||
|
- jazz-vue@0.10.5
|
||||||
|
|
||||||
|
## 0.0.51
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-browser@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
- jazz-vue@0.10.4
|
||||||
|
|
||||||
|
## 0.0.50
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-browser@0.10.3
|
||||||
|
- jazz-vue@0.10.3
|
||||||
|
|
||||||
|
## 0.0.49
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-browser@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
- jazz-vue@0.10.2
|
||||||
|
|
||||||
|
## 0.0.48
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-browser@0.10.1
|
||||||
|
- jazz-vue@0.10.1
|
||||||
|
|
||||||
## 0.0.47
|
## 0.0.47
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "todo-vue",
|
"name": "todo-vue",
|
||||||
"version": "0.0.47",
|
"version": "0.0.54",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1,5 +1,61 @@
|
|||||||
# jazz-example-todo
|
# jazz-example-todo
|
||||||
|
|
||||||
|
## 0.0.168
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1136d9b]
|
||||||
|
- Updated dependencies [0eed228]
|
||||||
|
- jazz-react@0.10.7
|
||||||
|
- jazz-tools@0.10.7
|
||||||
|
|
||||||
|
## 0.0.167
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [1d71ca1]
|
||||||
|
- Updated dependencies [ada802b]
|
||||||
|
- jazz-react@0.10.6
|
||||||
|
- jazz-tools@0.10.6
|
||||||
|
|
||||||
|
## 0.0.166
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [59ff77e]
|
||||||
|
- jazz-tools@0.10.5
|
||||||
|
- jazz-react@0.10.5
|
||||||
|
|
||||||
|
## 0.0.165
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.4
|
||||||
|
- jazz-tools@0.10.4
|
||||||
|
|
||||||
|
## 0.0.164
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [d8582fc]
|
||||||
|
- jazz-tools@0.10.3
|
||||||
|
- jazz-react@0.10.3
|
||||||
|
|
||||||
|
## 0.0.163
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- jazz-react@0.10.2
|
||||||
|
- jazz-tools@0.10.2
|
||||||
|
|
||||||
|
## 0.0.162
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [5a63cba]
|
||||||
|
- jazz-tools@0.10.1
|
||||||
|
- jazz-react@0.10.1
|
||||||
|
|
||||||
## 0.0.161
|
## 0.0.161
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "jazz-example-todo",
|
"name": "jazz-example-todo",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.161",
|
"version": "0.0.168",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
@@ -16,8 +16,8 @@
|
|||||||
"@radix-ui/react-toast": "^1.1.4",
|
"@radix-ui/react-toast": "^1.1.4",
|
||||||
"class-variance-authority": "^0.7.0",
|
"class-variance-authority": "^0.7.0",
|
||||||
"clsx": "^2.0.0",
|
"clsx": "^2.0.0",
|
||||||
"jazz-react": "workspace:0.10.0",
|
"jazz-react": "workspace:0.10.7",
|
||||||
"jazz-tools": "workspace:0.10.0",
|
"jazz-tools": "workspace:0.10.7",
|
||||||
"lucide-react": "^0.274.0",
|
"lucide-react": "^0.274.0",
|
||||||
"qrcode": "^1.5.3",
|
"qrcode": "^1.5.3",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user