@dxos/react-client 2.33.7-dev.346e09a1 → 2.33.7-dev.61c14bdf

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/.rush/temp/package-deps_build.json +10 -8
  2. package/.rush/temp/package-deps_build_test.json +12 -8
  3. package/.rush/temp/shrinkwrap-deps.json +35 -9
  4. package/dist/src/hooks/client/index.d.ts +1 -0
  5. package/dist/src/hooks/client/index.d.ts.map +1 -1
  6. package/dist/src/hooks/client/index.js +1 -0
  7. package/dist/src/hooks/client/index.js.map +1 -1
  8. package/dist/src/hooks/client/useDevtools.d.ts +2 -0
  9. package/dist/src/hooks/client/useDevtools.d.ts.map +1 -0
  10. package/dist/src/hooks/client/useDevtools.js +13 -0
  11. package/dist/src/hooks/client/useDevtools.js.map +1 -0
  12. package/dist/src/hooks/util/index.d.ts +1 -0
  13. package/dist/src/hooks/util/index.d.ts.map +1 -1
  14. package/dist/src/hooks/util/index.js +1 -0
  15. package/dist/src/hooks/util/index.js.map +1 -1
  16. package/dist/src/hooks/util/useStream.d.ts +7 -0
  17. package/dist/src/hooks/util/useStream.d.ts.map +1 -0
  18. package/dist/src/hooks/util/useStream.js +21 -0
  19. package/dist/src/hooks/util/useStream.js.map +1 -0
  20. package/dist/stories/client.stories.js.map +1 -1
  21. package/dist/stories/halo-recovery.stories.js.map +1 -1
  22. package/dist/stories/helpers/ContactsSelector.js.map +1 -1
  23. package/dist/stories/helpers/JsonPanel.js.map +1 -1
  24. package/dist/tests/playwright/config.d.ts +4 -0
  25. package/dist/tests/playwright/config.d.ts.map +1 -0
  26. package/dist/tests/playwright/config.js +18 -0
  27. package/dist/tests/playwright/config.js.map +1 -0
  28. package/dist/tests/playwright/smoke.spec.d.ts +2 -0
  29. package/dist/tests/playwright/smoke.spec.d.ts.map +1 -0
  30. package/dist/tests/playwright/smoke.spec.js +20 -0
  31. package/dist/tests/playwright/smoke.spec.js.map +1 -0
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +18 -14
  34. package/react-client.build.log +6 -6
  35. package/src/hooks/client/index.ts +1 -0
  36. package/src/hooks/client/useDevtools.ts +10 -0
  37. package/src/hooks/util/index.ts +1 -0
  38. package/src/hooks/util/useStream.ts +25 -0
  39. package/stories/client.stories.tsx +6 -6
  40. package/stories/halo-recovery.stories.tsx +12 -12
  41. package/stories/helpers/ContactsSelector.tsx +16 -16
  42. package/stories/helpers/JsonPanel.tsx +11 -11
  43. package/tests/playwright/config.ts +19 -0
  44. package/tests/playwright/smoke.spec.ts +17 -0
package/package.json CHANGED
@@ -1,32 +1,34 @@
1
1
  {
2
2
  "name": "@dxos/react-client",
3
- "version": "2.33.7-dev.346e09a1",
3
+ "version": "2.33.7-dev.61c14bdf",
4
4
  "description": "React client API",
5
5
  "license": "MIT",
6
6
  "author": "DXOS.org",
7
7
  "main": "dist/src/index.js",
8
8
  "types": "dist/src/index.d.ts",
9
9
  "dependencies": {
10
- "@dxos/async": "2.33.7-dev.346e09a1",
11
- "@dxos/bot-factory-client": "2.33.7-dev.346e09a1",
12
- "@dxos/client": "2.33.7-dev.346e09a1",
13
- "@dxos/config": "2.33.7-dev.346e09a1",
14
- "@dxos/credentials": "2.33.7-dev.346e09a1",
15
- "@dxos/crypto": "2.33.7-dev.346e09a1",
16
- "@dxos/debug": "2.33.7-dev.346e09a1",
17
- "@dxos/echo-db": "2.33.7-dev.346e09a1",
18
- "@dxos/network-manager": "2.33.7-dev.346e09a1",
19
- "@dxos/react-async": "2.33.7-dev.346e09a1",
20
- "@dxos/util": "2.33.7-dev.346e09a1",
10
+ "@dxos/async": "2.33.7-dev.61c14bdf",
11
+ "@dxos/bot-factory-client": "2.33.7-dev.61c14bdf",
12
+ "@dxos/client": "2.33.7-dev.61c14bdf",
13
+ "@dxos/config": "2.33.7-dev.61c14bdf",
14
+ "@dxos/codec-protobuf": "2.33.7-dev.61c14bdf",
15
+ "@dxos/credentials": "2.33.7-dev.61c14bdf",
16
+ "@dxos/crypto": "2.33.7-dev.61c14bdf",
17
+ "@dxos/debug": "2.33.7-dev.61c14bdf",
18
+ "@dxos/echo-db": "2.33.7-dev.61c14bdf",
19
+ "@dxos/network-manager": "2.33.7-dev.61c14bdf",
20
+ "@dxos/react-async": "2.33.7-dev.61c14bdf",
21
+ "@dxos/util": "2.33.7-dev.61c14bdf",
21
22
  "assert": "^2.0.0",
22
23
  "debug": "^4.3.3",
23
24
  "use-subscription": "^1.8.0"
24
25
  },
25
26
  "devDependencies": {
26
27
  "@dxos/esbuild-plugins": "~2.28.10",
27
- "@dxos/eslint-plugin": "~1.0.33",
28
+ "@dxos/eslint-plugin": "~1.0.34",
28
29
  "@dxos/protocols-toolchain": "2.33.6",
29
30
  "@mui/material": "^5.8.1",
31
+ "@playwright/test": "^1.14.1",
30
32
  "@testing-library/react": "^11.0.4",
31
33
  "@testing-library/react-hooks": "5.1.2",
32
34
  "@types/debug": "^4.1.7",
@@ -40,6 +42,7 @@
40
42
  "eslint": "^7.12.1",
41
43
  "expect": "~27.0.2",
42
44
  "level-js": "^5.0.2",
45
+ "playwright": "^1.14.1",
43
46
  "raf": "^3.4.1",
44
47
  "react": "^18.1.0",
45
48
  "react-dom": "^18.1.0",
@@ -65,6 +68,7 @@
65
68
  "build:book": "toolchain build:book",
66
69
  "build:test": "toolchain build:test",
67
70
  "lint": "toolchain lint",
68
- "test": "toolchain test"
71
+ "test": "toolchain test && npm run test:playwright",
72
+ "test:playwright": "playwright test --config ./tests/playwright/config.ts"
69
73
  }
70
74
  }
@@ -2,20 +2,20 @@ Invoking: toolchain build:test
2
2
 
3
3
  Tests started
4
4
  Typescript
5
- OK in 10399 ms
5
+ OK in 9466 ms
6
6
  no problems
7
- OK in 8715 ms
7
+ OK in 8363 ms
8
8
 
9
9
  Mocha Tests
10
10
 
11
11
 
12
12
  useSelection
13
13
  Warning: ReactDOM.render is no longer supported in React 18. Use createRoot instead. Until you switch to the new API, your app will behave as if it's running React 17. Learn more: https://reactjs.org/link/switch-to-createroot
14
- ✓ gets updated items selection (302ms)
14
+ ✓ gets updated items selection (244ms)
15
15
 
16
16
 
17
- 1 passing (309ms)
17
+ 1 passing (250ms)
18
18
 
19
- OK in 2901 ms
19
+ OK in 2506 ms
20
20
 
21
- Tests complete in 22042 ms
21
+ Tests complete in 20367 ms
@@ -5,4 +5,5 @@
5
5
  export * from './context';
6
6
  export * from './useClient';
7
7
  export * from './useConfig';
8
+ export * from './useDevtools';
8
9
  export * from './useProfile';
@@ -0,0 +1,10 @@
1
+ //
2
+ // Copyright 2022 DXOS.org
3
+ //
4
+
5
+ import { useClient } from '../client';
6
+
7
+ export const useDevtools = () => {
8
+ const client = useClient();
9
+ return client.services.DevtoolsHost;
10
+ };
@@ -3,3 +3,4 @@
3
3
  //
4
4
 
5
5
  export * from './useResultSet';
6
+ export * from './useStream';
@@ -0,0 +1,25 @@
1
+ //
2
+ // Copyright 2021 DXOS.org
3
+ //
4
+
5
+ import { DependencyList, useState, useEffect } from 'react';
6
+
7
+ import { Stream } from '@dxos/codec-protobuf';
8
+
9
+ /**
10
+ * Subscribe to service API streams.
11
+ */
12
+ export const useStream = <T>(
13
+ streamFactory: () => Stream<T>,
14
+ defaultValue: T,
15
+ deps: DependencyList = []
16
+ ): T => {
17
+ const [value, setValue] = useState<T | undefined>(defaultValue);
18
+ useEffect(() => {
19
+ const stream = streamFactory();
20
+ stream.subscribe((response: T) => setValue(response));
21
+ return () => stream.close();
22
+ }, deps);
23
+
24
+ return value ?? defaultValue;
25
+ };
@@ -26,13 +26,13 @@ const TestApp = () => {
26
26
  };
27
27
 
28
28
  export const Primary = () => (
29
- <ClientProvider>
30
- <TestApp />
31
- </ClientProvider>
29
+ <ClientProvider>
30
+ <TestApp />
31
+ </ClientProvider>
32
32
  );
33
33
 
34
34
  export const Secondary = () => (
35
- <ClientProvider config={() => ({})}>
36
- <TestApp />
37
- </ClientProvider>
35
+ <ClientProvider config={() => ({})}>
36
+ <TestApp />
37
+ </ClientProvider>
38
38
  );
@@ -109,16 +109,16 @@ const TestApp = () => {
109
109
  };
110
110
 
111
111
  export const HaloRecovery = () => (
112
- <Container>
113
- <Box sx={{ display: 'flex', flex: 1, padding: 1, justifyContent: 'space-around' }}>
114
- {/* Instantiated Client. */}
115
- <ClientProvider>
116
- <TestApp />
117
- </ClientProvider>
118
-
119
- <ClientProvider>
120
- <TestApp />
121
- </ClientProvider>
122
- </Box>
123
- </Container>
112
+ <Container>
113
+ <Box sx={{ display: 'flex', flex: 1, padding: 1, justifyContent: 'space-around' }}>
114
+ {/* Instantiated Client. */}
115
+ <ClientProvider>
116
+ <TestApp />
117
+ </ClientProvider>
118
+
119
+ <ClientProvider>
120
+ <TestApp />
121
+ </ClientProvider>
122
+ </Box>
123
+ </Container>
124
124
  );
@@ -16,20 +16,20 @@ export const ContactsSelector = ({ contacts, selected = '', onSelect }: {
16
16
  selected?: string,
17
17
  onSelect: (selected: string) => void
18
18
  }) => (
19
- <FormControl fullWidth>
20
- <InputLabel id='contact-select-label'>Contact</InputLabel>
21
- <Select
22
- value={selected || ''}
23
- label='Contact'
24
- labelId='contact-select-label'
25
- onChange={(event: SelectChangeEvent) => onSelect(event.target.value)}
26
- >
27
- <MenuItem value='' />
28
- {contacts.map(contact => (
29
- <MenuItem key={contact.publicKey.toHex()} value={contact.publicKey.toHex()}>
30
- {contact.displayName}
31
- </MenuItem>
32
- ))}
33
- </Select>
34
- </FormControl>
19
+ <FormControl fullWidth>
20
+ <InputLabel id='contact-select-label'>Contact</InputLabel>
21
+ <Select
22
+ value={selected || ''}
23
+ label='Contact'
24
+ labelId='contact-select-label'
25
+ onChange={(event: SelectChangeEvent) => onSelect(event.target.value)}
26
+ >
27
+ <MenuItem value='' />
28
+ {contacts.map(contact => (
29
+ <MenuItem key={contact.publicKey.toHex()} value={contact.publicKey.toHex()}>
30
+ {contact.displayName}
31
+ </MenuItem>
32
+ ))}
33
+ </Select>
34
+ </FormControl>
35
35
  );
@@ -5,15 +5,15 @@
5
5
  import React from 'react';
6
6
 
7
7
  export const JsonPanel = ({ value }: { value: any }) => (
8
- <pre
9
- style={{
10
- margin: 0,
11
- // code whiteSpace: 'pre-wrap',
12
- // code wordBreak: 'break-all',
13
- overflow: 'hidden',
14
- textOverflow: 'ellipsis'
15
- }}
16
- >
17
- {JSON.stringify(value, undefined, 2)}
18
- </pre>
8
+ <pre
9
+ style={{
10
+ margin: 0,
11
+ // code whiteSpace: 'pre-wrap',
12
+ // code wordBreak: 'break-all',
13
+ overflow: 'hidden',
14
+ textOverflow: 'ellipsis'
15
+ }}
16
+ >
17
+ {JSON.stringify(value, undefined, 2)}
18
+ </pre>
19
19
  );
@@ -0,0 +1,19 @@
1
+ //
2
+ // Copyright 2021 DXOS.org
3
+ //
4
+
5
+ import { PlaywrightTestConfig } from '@playwright/test';
6
+
7
+ const config: PlaywrightTestConfig = {
8
+ use: {
9
+ headless: !!process.env.CI || !!process.env.HEADLESS
10
+ },
11
+ webServer: {
12
+ command: 'npm run book',
13
+ port: 8080,
14
+ timeout: 300 * 1000,
15
+ reuseExistingServer: !process.env.CI
16
+ }
17
+ };
18
+
19
+ export default config;
@@ -0,0 +1,17 @@
1
+ //
2
+ // Copyright 2021 DXOS.org
3
+ //
4
+
5
+ import { test, expect } from '@playwright/test';
6
+ import waitForExpect from 'wait-for-expect';
7
+
8
+ test.describe('Smoke test', () => {
9
+ test('Renders tutorial from descriptor', async ({ page }) => {
10
+ await page.goto('#/__story/stories-client-stories-tsx/Primary');
11
+
12
+ await waitForExpect(async () => {
13
+ const isVisible = await page.isVisible(':has-text("initialized")');
14
+ expect(isVisible).toBeTruthy();
15
+ });
16
+ });
17
+ });