@xyo-network/react-archivist 2.37.29 → 2.38.0-rc.2

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 (52) hide show
  1. package/dist/cjs/components/Details.js +1 -1
  2. package/dist/cjs/components/Details.js.map +1 -1
  3. package/dist/cjs/contexts/Provider/CookieArchivistProvider.d.ts +2 -2
  4. package/dist/cjs/contexts/Provider/CookieArchivistProvider.d.ts.map +1 -1
  5. package/dist/cjs/contexts/Provider/CookieArchivistProvider.js +28 -15
  6. package/dist/cjs/contexts/Provider/CookieArchivistProvider.js.map +1 -1
  7. package/dist/cjs/contexts/Provider/MemoryArchivistProvider.d.ts +2 -2
  8. package/dist/cjs/contexts/Provider/MemoryArchivistProvider.d.ts.map +1 -1
  9. package/dist/cjs/contexts/Provider/MemoryArchivistProvider.js +28 -15
  10. package/dist/cjs/contexts/Provider/MemoryArchivistProvider.js.map +1 -1
  11. package/dist/cjs/contexts/Provider/RemoteArchivistProvider.d.ts +3 -3
  12. package/dist/cjs/contexts/Provider/RemoteArchivistProvider.d.ts.map +1 -1
  13. package/dist/cjs/contexts/Provider/RemoteArchivistProvider.js +28 -15
  14. package/dist/cjs/contexts/Provider/RemoteArchivistProvider.js.map +1 -1
  15. package/dist/cjs/contexts/Provider/StorageArchivistProvider.d.ts +2 -2
  16. package/dist/cjs/contexts/Provider/StorageArchivistProvider.d.ts.map +1 -1
  17. package/dist/cjs/contexts/Provider/StorageArchivistProvider.js +28 -15
  18. package/dist/cjs/contexts/Provider/StorageArchivistProvider.js.map +1 -1
  19. package/dist/cjs/contexts/use.d.ts +1 -2
  20. package/dist/cjs/contexts/use.d.ts.map +1 -1
  21. package/dist/cjs/contexts/use.js +2 -2
  22. package/dist/cjs/contexts/use.js.map +1 -1
  23. package/dist/docs.json +658 -622
  24. package/dist/esm/components/Details.js +1 -1
  25. package/dist/esm/components/Details.js.map +1 -1
  26. package/dist/esm/contexts/Provider/CookieArchivistProvider.d.ts +2 -2
  27. package/dist/esm/contexts/Provider/CookieArchivistProvider.d.ts.map +1 -1
  28. package/dist/esm/contexts/Provider/CookieArchivistProvider.js +28 -14
  29. package/dist/esm/contexts/Provider/CookieArchivistProvider.js.map +1 -1
  30. package/dist/esm/contexts/Provider/MemoryArchivistProvider.d.ts +2 -2
  31. package/dist/esm/contexts/Provider/MemoryArchivistProvider.d.ts.map +1 -1
  32. package/dist/esm/contexts/Provider/MemoryArchivistProvider.js +28 -14
  33. package/dist/esm/contexts/Provider/MemoryArchivistProvider.js.map +1 -1
  34. package/dist/esm/contexts/Provider/RemoteArchivistProvider.d.ts +3 -3
  35. package/dist/esm/contexts/Provider/RemoteArchivistProvider.d.ts.map +1 -1
  36. package/dist/esm/contexts/Provider/RemoteArchivistProvider.js +28 -14
  37. package/dist/esm/contexts/Provider/RemoteArchivistProvider.js.map +1 -1
  38. package/dist/esm/contexts/Provider/StorageArchivistProvider.d.ts +2 -2
  39. package/dist/esm/contexts/Provider/StorageArchivistProvider.d.ts.map +1 -1
  40. package/dist/esm/contexts/Provider/StorageArchivistProvider.js +28 -14
  41. package/dist/esm/contexts/Provider/StorageArchivistProvider.js.map +1 -1
  42. package/dist/esm/contexts/use.d.ts +1 -2
  43. package/dist/esm/contexts/use.d.ts.map +1 -1
  44. package/dist/esm/contexts/use.js +2 -2
  45. package/dist/esm/contexts/use.js.map +1 -1
  46. package/package.json +7 -6
  47. package/src/components/Details.tsx +1 -1
  48. package/src/contexts/Provider/CookieArchivistProvider.tsx +39 -29
  49. package/src/contexts/Provider/MemoryArchivistProvider.tsx +39 -29
  50. package/src/contexts/Provider/RemoteArchivistProvider.tsx +40 -30
  51. package/src/contexts/Provider/StorageArchivistProvider.tsx +39 -29
  52. package/src/contexts/use.ts +4 -4
@@ -1,46 +1,56 @@
1
+ import { useAsyncEffect } from '@xylabs/react-shared'
1
2
  import { XyoArchivistWrapper, XyoMemoryArchivist, XyoMemoryArchivistConfig } from '@xyo-network/archivist'
2
- import { XyoModuleResolverFunc } from '@xyo-network/module'
3
+ import { XyoModuleResolver } from '@xyo-network/module'
3
4
  import { ContextExProviderProps } from '@xyo-network/react-shared'
4
5
  import merge from 'lodash/merge'
6
+ import { useMemo, useState } from 'react'
5
7
 
6
8
  import { useArchivist } from '../use'
7
9
  import { ArchivistProvider } from './Provider'
8
10
 
9
11
  export type MemoryArchivistProviderProps = ContextExProviderProps<{
10
12
  config?: XyoMemoryArchivistConfig
11
- resolver?: XyoModuleResolverFunc
13
+ resolver?: XyoModuleResolver
12
14
  }>
13
15
 
14
16
  export const MemoryArchivistProvider: React.FC<MemoryArchivistProviderProps> = ({ config, resolver, ...props }) => {
15
17
  const { archivist } = useArchivist()
16
- const activeResolver: XyoModuleResolverFunc = (address: string) => {
17
- if (archivist && address === archivist?.address) {
18
- return new XyoArchivistWrapper(archivist)
19
- }
20
- return resolver?.(address) ?? null
18
+ const wrapper = useMemo(() => (archivist ? new XyoArchivistWrapper({ module: archivist }) : undefined), [archivist])
19
+ const activeResolver: XyoModuleResolver | undefined = useMemo(
20
+ () => (resolver ?? wrapper ? new XyoModuleResolver() : undefined),
21
+ [resolver, wrapper],
22
+ )
23
+ if (archivist) {
24
+ activeResolver?.add(new XyoArchivistWrapper({ module: archivist }))
21
25
  }
22
- return (
23
- <ArchivistProvider
24
- archivist={
25
- new XyoMemoryArchivist(
26
- merge(
27
- {},
28
- config,
29
- archivist
30
- ? {
31
- parents: {
32
- commit: [archivist.address],
33
- read: [archivist.address],
34
- write: [archivist.address],
35
- },
36
- }
37
- : undefined,
38
- ),
39
- undefined,
40
- activeResolver,
41
- )
26
+
27
+ const [activeArchivist, setActiveArchivist] = useState<XyoMemoryArchivist>()
28
+
29
+ useAsyncEffect(
30
+ // eslint-disable-next-line react-hooks/exhaustive-deps
31
+ async (mounted) => {
32
+ const activeArchivist = await new XyoMemoryArchivist({
33
+ config: merge(
34
+ {},
35
+ config,
36
+ archivist
37
+ ? {
38
+ parents: {
39
+ commit: [archivist.address],
40
+ read: [archivist.address],
41
+ write: [archivist.address],
42
+ },
43
+ }
44
+ : undefined,
45
+ ),
46
+ resolver: activeResolver,
47
+ }).start()
48
+ if (mounted()) {
49
+ setActiveArchivist(activeArchivist)
42
50
  }
43
- {...props}
44
- />
51
+ },
52
+ [activeResolver, archivist, config],
45
53
  )
54
+
55
+ return <ArchivistProvider archivist={activeArchivist} {...props} />
46
56
  }
@@ -1,47 +1,57 @@
1
+ import { useAsyncEffect } from '@xylabs/react-shared'
1
2
  import { XyoRemoteArchivist, XyoRemoteArchivistConfig } from '@xyo-network/api'
2
3
  import { XyoArchivistWrapper } from '@xyo-network/archivist'
3
- import { XyoModuleResolverFunc } from '@xyo-network/module'
4
+ import { XyoModuleResolver } from '@xyo-network/module'
4
5
  import { ContextExProviderProps } from '@xyo-network/react-shared'
5
6
  import merge from 'lodash/merge'
7
+ import { useMemo, useState } from 'react'
6
8
 
7
9
  import { useArchivist } from '../use'
8
10
  import { ArchivistProvider } from './Provider'
9
11
 
10
12
  export type RemoteArchivistProviderProps = ContextExProviderProps<{
11
- config: XyoRemoteArchivistConfig
12
- resolver?: XyoModuleResolverFunc
13
+ config?: XyoRemoteArchivistConfig
14
+ resolver?: XyoModuleResolver
13
15
  }>
14
16
 
15
17
  export const RemoteArchivistProvider: React.FC<RemoteArchivistProviderProps> = ({ config, resolver, ...props }) => {
16
18
  const { archivist } = useArchivist()
17
- const activeResolver: XyoModuleResolverFunc = (address: string) => {
18
- if (archivist && address === archivist?.address) {
19
- return new XyoArchivistWrapper(archivist)
20
- }
21
- return resolver?.(address) ?? null
19
+ const wrapper = useMemo(() => (archivist ? new XyoArchivistWrapper({ module: archivist }) : undefined), [archivist])
20
+ const activeResolver: XyoModuleResolver | undefined = useMemo(
21
+ () => (resolver ?? wrapper ? new XyoModuleResolver() : undefined),
22
+ [resolver, wrapper],
23
+ )
24
+ if (archivist) {
25
+ activeResolver?.add(new XyoArchivistWrapper({ module: archivist }))
22
26
  }
23
- return (
24
- <ArchivistProvider
25
- archivist={
26
- new XyoRemoteArchivist(
27
- merge(
28
- {},
29
- config,
30
- archivist
31
- ? {
32
- parents: {
33
- commit: [archivist.address],
34
- read: [archivist.address],
35
- write: [archivist.address],
36
- },
37
- }
38
- : undefined,
39
- ),
40
- undefined,
41
- activeResolver,
42
- )
27
+
28
+ const [activeArchivist, setActiveArchivist] = useState<XyoRemoteArchivist>()
29
+
30
+ useAsyncEffect(
31
+ // eslint-disable-next-line react-hooks/exhaustive-deps
32
+ async (mounted) => {
33
+ const activeArchivist = await new XyoRemoteArchivist({
34
+ config: merge(
35
+ {},
36
+ config,
37
+ archivist
38
+ ? {
39
+ parents: {
40
+ commit: [archivist.address],
41
+ read: [archivist.address],
42
+ write: [archivist.address],
43
+ },
44
+ }
45
+ : undefined,
46
+ ),
47
+ resolver: activeResolver,
48
+ }).start()
49
+ if (mounted()) {
50
+ setActiveArchivist(activeArchivist)
43
51
  }
44
- {...props}
45
- />
52
+ },
53
+ [activeResolver, archivist, config],
46
54
  )
55
+
56
+ return <ArchivistProvider archivist={activeArchivist} {...props} />
47
57
  }
@@ -1,5 +1,5 @@
1
1
  import { XyoArchivistWrapper, XyoStorageArchivist, XyoStorageArchivistConfig } from '@xyo-network/archivist'
2
- import { XyoModuleResolverFunc } from '@xyo-network/module'
2
+ import { XyoModuleResolver } from '@xyo-network/module'
3
3
  import { ContextExProviderProps } from '@xyo-network/react-shared'
4
4
  import merge from 'lodash/merge'
5
5
 
@@ -8,40 +8,50 @@ import { ArchivistProvider } from './Provider'
8
8
 
9
9
  export type StorageArchivistProviderProps = ContextExProviderProps<{
10
10
  config: XyoStorageArchivistConfig
11
- resolver?: XyoModuleResolverFunc
11
+ resolver?: XyoModuleResolver
12
12
  }>
13
13
 
14
+ import { useAsyncEffect } from '@xylabs/react-shared'
15
+ import { useMemo, useState } from 'react'
16
+
14
17
  export const StorageArchivistProvider: React.FC<StorageArchivistProviderProps> = ({ config, resolver, ...props }) => {
15
18
  const { archivist } = useArchivist()
16
- const activeResolver: XyoModuleResolverFunc = (address: string) => {
17
- if (archivist && address === archivist?.address) {
18
- return new XyoArchivistWrapper(archivist)
19
- }
20
- return resolver?.(address) ?? null
19
+ const wrapper = useMemo(() => (archivist ? new XyoArchivistWrapper({ module: archivist }) : undefined), [archivist])
20
+ const activeResolver: XyoModuleResolver | undefined = useMemo(
21
+ () => (resolver ?? wrapper ? new XyoModuleResolver() : undefined),
22
+ [resolver, wrapper],
23
+ )
24
+ if (archivist) {
25
+ activeResolver?.add(new XyoArchivistWrapper({ module: archivist }))
21
26
  }
22
27
 
23
- return (
24
- <ArchivistProvider
25
- archivist={
26
- new XyoStorageArchivist(
27
- merge(
28
- {},
29
- config,
30
- archivist
31
- ? {
32
- parents: {
33
- commit: [archivist.address],
34
- read: [archivist.address],
35
- write: [archivist.address],
36
- },
37
- }
38
- : undefined,
39
- ),
40
- undefined,
41
- activeResolver,
42
- )
28
+ const [activeArchivist, setActiveArchivist] = useState<XyoStorageArchivist>()
29
+
30
+ useAsyncEffect(
31
+ // eslint-disable-next-line react-hooks/exhaustive-deps
32
+ async (mounted) => {
33
+ const activeArchivist = await new XyoStorageArchivist({
34
+ config: merge(
35
+ {},
36
+ config,
37
+ archivist
38
+ ? {
39
+ parents: {
40
+ commit: [archivist.address],
41
+ read: [archivist.address],
42
+ write: [archivist.address],
43
+ },
44
+ }
45
+ : undefined,
46
+ ),
47
+ resolver: activeResolver,
48
+ }).start()
49
+ if (mounted()) {
50
+ setActiveArchivist(activeArchivist)
43
51
  }
44
- {...props}
45
- />
52
+ },
53
+ [activeResolver, archivist, config],
46
54
  )
55
+
56
+ return <ArchivistProvider archivist={activeArchivist} {...props} />
47
57
  }
@@ -1,6 +1,6 @@
1
1
  import { useAsyncEffect } from '@xylabs/react-shared'
2
- import { XyoArchivistWrapper, XyoPayloadFindFilter } from '@xyo-network/archivist'
3
- import { XyoPayload, XyoPayloads } from '@xyo-network/payload'
2
+ import { XyoArchivistWrapper } from '@xyo-network/archivist'
3
+ import { XyoPayload, XyoPayloadFindFilter, XyoPayloads } from '@xyo-network/payload'
4
4
  import { useContextEx } from '@xyo-network/react-shared'
5
5
  import { useState } from 'react'
6
6
 
@@ -18,7 +18,7 @@ export const useArchivistGet = (ids?: string[], required = false): [(XyoPayload
18
18
  // eslint-disable-next-line react-hooks/exhaustive-deps
19
19
  async (mounted) => {
20
20
  try {
21
- const wrapper = archivist ? new XyoArchivistWrapper(archivist) : undefined
21
+ const wrapper = archivist ? new XyoArchivistWrapper({ module: archivist }) : undefined
22
22
  const result = (await wrapper?.get(ids ?? [])) ?? []
23
23
  if (mounted()) {
24
24
  setError(undefined)
@@ -41,7 +41,7 @@ export const useArchivistFind = <TFilter extends XyoPayloadFindFilter>(filter: T
41
41
  // eslint-disable-next-line react-hooks/exhaustive-deps
42
42
  async (mounted) => {
43
43
  try {
44
- const wrapper = archivist ? new XyoArchivistWrapper(archivist) : undefined
44
+ const wrapper = archivist ? new XyoArchivistWrapper({ module: archivist }) : undefined
45
45
  const result = await wrapper?.find(filter)
46
46
  if (mounted()) {
47
47
  setError(undefined)