@contember/interface 2.1.0-rc.3 → 2.2.0-alpha.10

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 (36) hide show
  1. package/dist/development/src/bootstrap/ApplicationEntrypoint.cjs +6 -4
  2. package/dist/development/src/bootstrap/ApplicationEntrypoint.cjs.map +1 -1
  3. package/dist/development/src/bootstrap/ApplicationEntrypoint.js +6 -4
  4. package/dist/development/src/bootstrap/ApplicationEntrypoint.js.map +1 -1
  5. package/dist/production/src/bootstrap/ApplicationEntrypoint.cjs +2 -0
  6. package/dist/production/src/bootstrap/ApplicationEntrypoint.cjs.map +1 -1
  7. package/dist/production/src/bootstrap/ApplicationEntrypoint.js +2 -0
  8. package/dist/production/src/bootstrap/ApplicationEntrypoint.js.map +1 -1
  9. package/dist/types/bootstrap/ApplicationEntrypoint.d.ts.map +1 -1
  10. package/dist/types/bootstrap/DataViewPageNameKeyProvider.d.ts.map +1 -1
  11. package/dist/types/bootstrap/index.d.ts +1 -1
  12. package/dist/types/bootstrap/index.d.ts.map +1 -1
  13. package/dist/types/components/binding/DisconnectEntityTrigger.d.ts.map +1 -1
  14. package/dist/types/components/binding/EntityBeforePersist.d.ts +1 -1
  15. package/dist/types/components/binding/EntityBeforePersist.d.ts.map +1 -1
  16. package/dist/types/components/binding/index.d.ts +4 -4
  17. package/dist/types/components/binding/index.d.ts.map +1 -1
  18. package/dist/types/components/index.d.ts +1 -1
  19. package/dist/types/components/index.d.ts.map +1 -1
  20. package/dist/types/hooks/index.d.ts +2 -2
  21. package/dist/types/hooks/index.d.ts.map +1 -1
  22. package/dist/types/hooks/useBlockNavigationOnDirtyState.d.ts.map +1 -1
  23. package/dist/types/hooks/useIsApplicationOutdated.d.ts.map +1 -1
  24. package/dist/types/index.d.ts +3 -3
  25. package/dist/types/index.d.ts.map +1 -1
  26. package/dist/types/tsconfig.tsbuildinfo +1 -1
  27. package/package.json +7 -7
  28. package/src/bootstrap/ApplicationEntrypoint.tsx +3 -1
  29. package/src/bootstrap/index.ts +1 -1
  30. package/src/components/binding/index.ts +4 -4
  31. package/src/components/index.ts +1 -1
  32. package/src/hooks/index.ts +2 -2
  33. package/src/index.ts +3 -3
  34. package/tests/components/RedirectOnPersist.spec.tsx +47 -0
  35. package/tests/tsconfig.json +10 -0
  36. package/tsconfig.json +1 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@contember/interface",
3
3
  "license": "Apache-2.0",
4
- "version": "2.1.0-rc.3",
4
+ "version": "2.2.0-alpha.10",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "main": "./dist/production/index.js",
@@ -29,12 +29,12 @@
29
29
  "ae:test": "api-extractor run"
30
30
  },
31
31
  "dependencies": {
32
- "@contember/react-binding": "2.1.0-rc.3",
33
- "@contember/react-client": "2.1.0-rc.3",
34
- "@contember/react-dataview": "2.1.0-rc.3",
35
- "@contember/react-devbar": "2.1.0-rc.3",
36
- "@contember/react-identity": "2.1.0-rc.3",
37
- "@contember/react-routing": "2.1.0-rc.3",
32
+ "@contember/react-binding": "2.2.0-alpha.10",
33
+ "@contember/react-client": "2.2.0-alpha.10",
34
+ "@contember/react-dataview": "2.2.0-alpha.10",
35
+ "@contember/react-devbar": "2.2.0-alpha.10",
36
+ "@contember/react-identity": "2.2.0-alpha.10",
37
+ "@contember/react-routing": "2.2.0-alpha.10",
38
38
  "@radix-ui/react-slot": "^1.2.4"
39
39
  },
40
40
  "peerDependencies": {
@@ -2,7 +2,7 @@ import { Environment, EnvironmentContext, EnvironmentExtensionProvider } from '@
2
2
  import { ContemberClient, ContemberClientProps } from '@contember/react-client'
3
3
  import { ReactNode } from 'react'
4
4
  import { RouteMap, RoutingContextValue, RoutingProvider } from '@contember/react-routing'
5
- import { DataViewPageNameKeyProvider } from './DataViewPageNameKeyProvider'
5
+ import { DataViewPageNameKeyProvider } from './DataViewPageNameKeyProvider.js'
6
6
  import { IdentityEnvironmentProvider, IdentityProvider, projectEnvironmentExtension } from '@contember/react-identity'
7
7
 
8
8
  export interface ApplicationEntrypointProps extends ContemberClientProps {
@@ -42,6 +42,8 @@ export const ApplicationEntrypoint = (props: ApplicationEntrypointProps) => {
42
42
  loginToken={props.loginToken}
43
43
  project={props.project}
44
44
  stage={props.stage}
45
+ graphqlClientFactory={props.graphqlClientFactory}
46
+ primaryReadWindowMs={props.primaryReadWindowMs}
45
47
  >
46
48
  <EnvironmentExtensionProvider extension={projectEnvironmentExtension} state={props.project ?? null}>
47
49
  <DataViewPageNameKeyProvider>
@@ -1 +1 @@
1
- export * from './ApplicationEntrypoint'
1
+ export * from './ApplicationEntrypoint.js'
@@ -1,4 +1,4 @@
1
- export * from './ClearFieldTrigger'
2
- export * from './DisconnectEntityTrigger'
3
- export * from './EntityBeforePersist'
4
- export * from './RedirectOnPersist'
1
+ export * from './ClearFieldTrigger.js'
2
+ export * from './DisconnectEntityTrigger.js'
3
+ export * from './EntityBeforePersist.js'
4
+ export * from './RedirectOnPersist.js'
@@ -1 +1 @@
1
- export * from './binding'
1
+ export * from './binding/index.js'
@@ -1,2 +1,2 @@
1
- export * from './useIsApplicationOutdated'
2
- export * from './useBlockNavigationOnDirtyState'
1
+ export * from './useIsApplicationOutdated.js'
2
+ export * from './useBlockNavigationOnDirtyState.js'
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
- export * from './bootstrap'
2
- export * from './components'
3
- export * from './hooks'
1
+ export * from './bootstrap/index.js'
2
+ export * from './components/index.js'
3
+ export * from './hooks/index.js'
4
4
  export * from '@contember/react-routing'
5
5
  export * from '@contember/react-binding'
6
6
  export * from '@contember/react-identity'
@@ -0,0 +1,47 @@
1
+ import { Children, isValidElement, ReactNode } from 'react'
2
+ import { describe, expect, it } from 'bun:test'
3
+ import { Environment } from '@contember/react-binding'
4
+ import { RedirectOnPersist } from '../../src/components/binding/RedirectOnPersist.js'
5
+
6
+ interface StaticRenderProvider {
7
+ staticRender?: (props: any, environment: Environment) => ReactNode
8
+ }
9
+
10
+ // Mimics the marker static-analysis pass: descend the rendered tree and
11
+ // recursively invoke the `staticRender` of any nested component that exposes one.
12
+ const collectFieldNames = (node: ReactNode, env: Environment): string[] => {
13
+ const fields: string[] = []
14
+ Children.forEach(node, child => {
15
+ if (!isValidElement(child)) {
16
+ return
17
+ }
18
+ const props = child.props as { field?: string; children?: ReactNode }
19
+ if (typeof props.field === 'string') {
20
+ fields.push(props.field)
21
+ }
22
+ const staticRender = (child.type as StaticRenderProvider | undefined)?.staticRender
23
+ if (typeof staticRender === 'function') {
24
+ fields.push(...collectFieldNames(staticRender(child.props, env), env))
25
+ }
26
+ if (props.children !== undefined) {
27
+ fields.push(...collectFieldNames(props.children, env))
28
+ }
29
+ })
30
+ return fields
31
+ }
32
+
33
+ describe('RedirectOnPersist static render', () => {
34
+ it('exposes a static render', () => {
35
+ expect(typeof (RedirectOnPersist as StaticRenderProvider).staticRender).toBe('function')
36
+ })
37
+
38
+ it('registers fields referenced by a binding routing target', () => {
39
+ const env = Environment.create()
40
+ const rendered = (RedirectOnPersist as StaticRenderProvider).staticRender!(
41
+ { to: 'myPage(id: $entity.someField)' },
42
+ env,
43
+ )
44
+
45
+ expect(collectFieldNames(rendered, env)).toEqual(['someField'])
46
+ })
47
+ })
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "../../../tsconfig.settings.json",
3
+ "compilerOptions": {
4
+ "noEmit": true,
5
+ "emitDeclarationOnly": false
6
+ },
7
+ "references": [
8
+ { "path": "../src" },
9
+ ],
10
+ }
package/tsconfig.json CHANGED
@@ -3,5 +3,6 @@
3
3
  "include": [],
4
4
  "references": [
5
5
  { "path": "./src" },
6
+ { "path": "./tests" },
6
7
  ],
7
8
  }