@contember/bindx-react 0.1.56 → 0.1.59
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.
- package/dist/hooks/useRootSelection.d.ts +22 -0
- package/dist/hooks/useRootSelection.d.ts.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/jsx/analyzer.d.ts +5 -0
- package/dist/jsx/analyzer.d.ts.map +1 -1
- package/dist/jsx/collectionHelpers.d.ts +20 -0
- package/dist/jsx/collectionHelpers.d.ts.map +1 -0
- package/dist/jsx/collectorContract.d.ts +25 -0
- package/dist/jsx/collectorContract.d.ts.map +1 -0
- package/dist/jsx/compiledSelection.d.ts +80 -0
- package/dist/jsx/compiledSelection.d.ts.map +1 -0
- package/dist/jsx/compiledSelectionShape.d.ts +12 -0
- package/dist/jsx/compiledSelectionShape.d.ts.map +1 -0
- package/dist/jsx/componentBuilder.d.ts +5 -2
- package/dist/jsx/componentBuilder.d.ts.map +1 -1
- package/dist/jsx/componentBuilder.types.d.ts +32 -1
- package/dist/jsx/componentBuilder.types.d.ts.map +1 -1
- package/dist/jsx/componentFactory.d.ts +22 -2
- package/dist/jsx/componentFactory.d.ts.map +1 -1
- package/dist/jsx/components/Entity.d.ts +7 -0
- package/dist/jsx/components/Entity.d.ts.map +1 -1
- package/dist/jsx/index.d.ts +4 -0
- package/dist/jsx/index.d.ts.map +1 -1
- package/dist/jsx/proxyShared.d.ts +8 -0
- package/dist/jsx/proxyShared.d.ts.map +1 -1
- package/dist/jsx/withCollector.d.ts +7 -8
- package/dist/jsx/withCollector.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/hooks/useRootSelection.ts +111 -0
- package/src/index.ts +13 -0
- package/src/jsx/analyzer.ts +10 -2
- package/src/jsx/collectionHelpers.ts +55 -0
- package/src/jsx/collectorContract.tsx +71 -0
- package/src/jsx/collectorProxy.ts +7 -1
- package/src/jsx/compiledSelection.ts +353 -0
- package/src/jsx/compiledSelectionShape.ts +86 -0
- package/src/jsx/componentBuilder.ts +28 -1
- package/src/jsx/componentBuilder.types.ts +38 -1
- package/src/jsx/componentFactory.ts +212 -42
- package/src/jsx/components/Entity.tsx +27 -8
- package/src/jsx/index.ts +18 -0
- package/src/jsx/proxyShared.ts +14 -0
- package/src/jsx/withCollector.ts +25 -10
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { EntityAccessor } from '../jsx/types.js';
|
|
3
|
+
import { type SelectionCollectionResult } from './useSelectionCollection.js';
|
|
4
|
+
import { type CompiledSelection } from '../jsx/compiledSelection.js';
|
|
5
|
+
/**
|
|
6
|
+
* Params for {@link useRootSelection}.
|
|
7
|
+
*/
|
|
8
|
+
export interface UseRootSelectionParams {
|
|
9
|
+
readonly entityType: string;
|
|
10
|
+
readonly depsKey: string;
|
|
11
|
+
readonly children: (entity: EntityAccessor<unknown>) => ReactNode;
|
|
12
|
+
/** Compiler-injected root selection. Absent ⇒ the runtime children walk runs. */
|
|
13
|
+
readonly compiledSelection?: CompiledSelection;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Root selection for <Entity>. With a compiled selection the root SelectionMeta is
|
|
17
|
+
* built statically and `children` is NEVER invoked with a collector; without it the
|
|
18
|
+
* runtime children-collector walk runs as before. Validate mode additionally runs
|
|
19
|
+
* the walk (contained) and diffs it against the compiled root for under-fetches.
|
|
20
|
+
*/
|
|
21
|
+
export declare function useRootSelection(params: UseRootSelectionParams): SelectionCollectionResult;
|
|
22
|
+
//# sourceMappingURL=useRootSelection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRootSelection.d.ts","sourceRoot":"","sources":["../../src/hooks/useRootSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EAA0B,KAAK,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AACpG,OAAO,EAAmD,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAIrH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,SAAS,CAAA;IACjE,iFAAiF;IACjF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CAC9C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,yBAAyB,CAoF1F"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @packageDocumentation
|
|
5
5
|
*/
|
|
6
|
-
export type { RelationType, ScalarFieldDef, HasOneRelationDef, HasManyRelationDef, FieldDef, EntitySchemaDef, SchemaDefinition, InferModel, InferEntityNames, EntityDef, InferEntityDef, UnionToIntersection, RoleNames, CommonEntity, EntityForRoles, ResolveEntity, SingleRoleMap, DefaultRole, SelectionBuilder, SelectionMeta, SelectionFieldMeta, FluentFragment, FluentDefiner, HasManyOptions, InferSelection, QuerySpec, QueryFieldSpec, EntityWhere, EntityOrderBy, ScalarCondition, OrderDirection, TypedHasManyOptions, AliasOptions, HasOneRelationState, InputProps, EntityFields, EntityFieldsAccessor, EntityFieldsRef, ScalarKeys, HasManyKeys, HasOneKeys, FieldRefMeta, FieldRef, HasManyRef, HasOneRef, EntityRef, FieldAccessor, HasManyAccessor, HasOneAccessor, EntityAccessor, ExtractHasOneEntityName, ExtractHasManyEntityName, ExtractRoleMap, BackendAdapter, QueryOptions, Query, GetQuery, ListQuery, QueryResult, GetQueryResult, ListQueryResult, MockDataStore, MockAdapterOptions, ContemberAdapterOptions, EntityLoadResult, EntityListLoadResult, LoadEntityOptions, LoadEntityListOptions, SelectionInput, CoreFluentDefiner, EntitySnapshot, FieldSnapshot, HasOneRelationSnapshot, HasManySnapshot, EntityState, LoadStatus, UndoManagerConfig, UndoState, BindxEvent, FieldScopedEvent, FieldChangingEvent, FieldChangedEvent, RelationConnectingEvent, RelationConnectedEvent, RelationDisconnectingEvent, RelationDisconnectedEvent, RelationDeletingEvent, RelationDeletedEvent, HasManyConnectingEvent, HasManyConnectedEvent, HasManyDisconnectingEvent, HasManyDisconnectedEvent, EntityPersistingEvent, EntityPersistedEvent, EntityPersistFailedEvent, EntityResettingEvent, EntityResetEvent, EntityDeletingEvent, EntityDeletedEvent, ErrorAddedEvent, ErrorsClearedEvent, LoadStateChangedEvent, BeforeEvent, AfterEvent, AnyBindxEvent, EventTypeMap, InterceptorResult, Interceptor, EventListener, Unsubscribe, BeforeEventTypes, AfterEventTypes, } from '@contember/bindx';
|
|
6
|
+
export type { RelationType, ScalarFieldDef, HasOneRelationDef, HasManyRelationDef, FieldDef, EntitySchemaDef, SchemaDefinition, InferModel, InferEntityNames, EntityDef, InferEntityDef, UnionToIntersection, RoleNames, CommonEntity, EntityForRoles, ResolveEntity, SingleRoleMap, DefaultRole, SelectionBuilder, SelectionMeta, SelectionFieldMeta, FluentFragment, FluentDefiner, HasManyOptions, InferSelection, StaticFieldMap, StaticFieldNode, QuerySpec, QueryFieldSpec, EntityWhere, EntityOrderBy, ScalarCondition, OrderDirection, TypedHasManyOptions, AliasOptions, HasOneRelationState, InputProps, EntityFields, EntityFieldsAccessor, EntityFieldsRef, ScalarKeys, HasManyKeys, HasOneKeys, FieldRefMeta, FieldRef, HasManyRef, HasOneRef, EntityRef, FieldAccessor, HasManyAccessor, HasOneAccessor, EntityAccessor, ExtractHasOneEntityName, ExtractHasManyEntityName, ExtractRoleMap, BackendAdapter, QueryOptions, Query, GetQuery, ListQuery, QueryResult, GetQueryResult, ListQueryResult, MockDataStore, MockAdapterOptions, ContemberAdapterOptions, EntityLoadResult, EntityListLoadResult, LoadEntityOptions, LoadEntityListOptions, SelectionInput, CoreFluentDefiner, EntitySnapshot, FieldSnapshot, HasOneRelationSnapshot, HasManySnapshot, EntityState, LoadStatus, UndoManagerConfig, UndoState, BindxEvent, FieldScopedEvent, FieldChangingEvent, FieldChangedEvent, RelationConnectingEvent, RelationConnectedEvent, RelationDisconnectingEvent, RelationDisconnectedEvent, RelationDeletingEvent, RelationDeletedEvent, HasManyConnectingEvent, HasManyConnectedEvent, HasManyDisconnectingEvent, HasManyDisconnectedEvent, EntityPersistingEvent, EntityPersistedEvent, EntityPersistFailedEvent, EntityResettingEvent, EntityResetEvent, EntityDeletingEvent, EntityDeletedEvent, ErrorAddedEvent, ErrorsClearedEvent, LoadStateChangedEvent, BeforeEvent, AfterEvent, AnyBindxEvent, EventTypeMap, InterceptorResult, Interceptor, EventListener, Unsubscribe, BeforeEventTypes, AfterEventTypes, } from '@contember/bindx';
|
|
7
7
|
export { scalar, enumScalar, hasOne, hasMany, defineSchema, entityDef, roleEntityDef, DEFAULT_ROLE, SchemaRegistry, createFragment, buildQueryFromSelection, EntityHandle, HasOneHandle, HasManyListHandle, FieldHandle, FIELD_REF_META, MockAdapter, ContemberAdapter, createEntityLoader, resolveSelectionMeta, buildQuery, SnapshotStore, ActionDispatcher, isTempId, isPlaceholderId, isPersistedId, generatePlaceholderId, BatchPersister, ChangeRegistry, UndoManager, EventEmitter, __internal, } from '@contember/bindx';
|
|
8
8
|
export type { BindxProviderProps, BindxContextValue, BindxGraphQlClient, UseEntityOptions, UseEntityListOptions, LoadingEntityResult, ErrorEntityResult, NotFoundEntityResult, ReadyEntityResult, UseEntityResult, LoadingEntityListResult, ErrorEntityListResult, ReadyEntityListResult, UseEntityListResult, UseEntityCountOptions, UseEntityCountResult, PersistApi, EntityPersistApi, AnyRefWithMeta, PersistWithFeedbackApi, } from './hooks/index.js';
|
|
9
9
|
export type { DirtyEntity, PersistScope, AllScope, EntityScope as EntityPersistScope, FieldsScope, RelationScope, CustomScope, EntityPersistResult, PersistenceResult, BatchPersistOptions, } from '@contember/bindx';
|
|
10
|
-
export type { FieldProps, HasManyProps, HasOneProps, IfProps, EntityComponentProps, HasManyComponentOptions, ShowProps, SwitchProps, CaseProps, DefaultProps, SelectionPropMeta, SelectionProvider, EntityPropKeys, EntityFromProp, SelectionFromProp, ImplicitFragmentProperties, BindxComponentBase, BindxComponent, ComponentBuilder, ComponentBuilderState, CreateComponentOptions, InterfaceEntityPropConfig, ImplicitInterfaceEntityConfig, ExplicitInterfaceEntityConfig, AddInterfaces, InterfaceSelectorsMap, AnyEntityPropConfig, EntityPropConfig, ImplicitEntityConfig, ExplicitEntityConfig, AddImplicitEntity, AddExplicitEntity, AddImplicitInterfaceEntity, AddExplicitInterfaceEntity, SetScalarProps, BuildEntityProps, BuildProps, BuildFragmentProps, InitialBuilderState, } from './jsx/index.js';
|
|
10
|
+
export type { FieldProps, HasManyProps, HasOneProps, IfProps, EntityComponentProps, HasManyComponentOptions, ShowProps, SwitchProps, CaseProps, DefaultProps, SelectionPropMeta, SelectionProvider, EntityPropKeys, EntityFromProp, SelectionFromProp, ImplicitFragmentProperties, BindxComponentBase, BindxComponent, ComponentBuilder, ComponentBuilderState, CreateComponentOptions, InterfaceEntityPropConfig, ImplicitInterfaceEntityConfig, ExplicitInterfaceEntityConfig, AddInterfaces, InterfaceSelectorsMap, AnyEntityPropConfig, EntityPropConfig, ImplicitEntityConfig, ExplicitEntityConfig, AddImplicitEntity, AddExplicitEntity, AddImplicitInterfaceEntity, AddExplicitInterfaceEntity, SetScalarProps, BuildEntityProps, BuildProps, BuildFragmentProps, InitialBuilderState, CompiledSelection, CompiledHole, } from './jsx/index.js';
|
|
11
11
|
export { BindxProvider, useBackendAdapter, useSnapshotStore, useDispatcher, useBatchPersister, useBindxContext, useSchemaRegistry, useEntity, useEntityList, useEntityCount, usePersist, usePersistEntity, useUndo, useOnEvent, useOnEntityEvent, useOnFieldEvent, useIntercept, useInterceptEntity, useInterceptField, useEntityBeforePersist, useAccessor, useField, useFields, useHasMany, useHasOne, useNotificationStore, useNotifications, useShowNotification, useDismissNotification, usePersistWithFeedback, ContemberBindxProvider, schemaNamesToDef, } from './hooks/index.js';
|
|
12
12
|
export { RoleProvider, useHasRole, type RoleProviderProps } from './roles/index.js';
|
|
13
13
|
export type { UndoHookResult } from './hooks/useUndo.js';
|
|
14
|
-
export { Attribute, type AttributeProps, Field, HasMany, HasOne, If, Show, Switch, Case, Default, Entity, type EntityProps, EntityList, type EntityListProps, HasRole, type HasRoleProps, BINDX_COMPONENT, SCOPE_REF, cond, type Condition, createComponent, withCollector, isBindxComponent, mergeFragments, COMPONENT_MARKER, COMPONENT_BRAND, COMPONENT_SELECTIONS, createComponentBuilder, getComponentBrand, setBrandValidation, validateBrand, } from './jsx/index.js';
|
|
14
|
+
export { Attribute, type AttributeProps, Field, HasMany, HasOne, If, Show, Switch, Case, Default, Entity, type EntityProps, EntityList, type EntityListProps, HasRole, type HasRoleProps, BINDX_COMPONENT, SCOPE_REF, cond, type Condition, createComponent, withCollector, COLLECTOR_CONTRACT, itemOf, entityOf, type CallbackContract, type CollectorContract, isBindxComponent, mergeFragments, COMPONENT_MARKER, COMPONENT_BRAND, COMPONENT_SELECTIONS, createComponentBuilder, getComponentBrand, setBrandValidation, validateBrand, setStaticSelectionValidation, setCompiledSelectionsEnabled, } from './jsx/index.js';
|
|
15
15
|
export { EntityScope, useEntityScope, useOptionalEntityScope, type EntityScopeProps, } from './components/EntityScope.js';
|
|
16
16
|
export { SelectionMetaCollector, mergeSelections, createEmptySelection, createCollectorProxy, analyzeJsx, collectSelection, convertToQuerySelection, debugSelection, } from './jsx/index.js';
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/jsx/analyzer.d.ts
CHANGED
|
@@ -6,6 +6,11 @@ import { SelectionMetaCollector } from './SelectionMeta.js';
|
|
|
6
6
|
* This is called during the collection phase to determine which fields need to be fetched.
|
|
7
7
|
*/
|
|
8
8
|
export declare function analyzeJsx(node: ReactNode, selection: SelectionMetaCollector): void;
|
|
9
|
+
/**
|
|
10
|
+
* Resolves a human-readable name for a component for error/warn attribution,
|
|
11
|
+
* falling back to 'anonymous' when nothing usable is present.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveComponentName(component: unknown): string;
|
|
9
14
|
/**
|
|
10
15
|
* Collects all field selections from a JSX tree.
|
|
11
16
|
* Entry point for the collection phase.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/jsx/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,OAAO,CAAA;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAyC,MAAM,YAAY,CAAA;AACtF,OAAO,EAAE,sBAAsB,EAAmB,MAAM,oBAAoB,CAAA;AAE5E;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAwGnF;
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/jsx/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,OAAO,CAAA;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAyC,MAAM,YAAY,CAAA;AACtF,OAAO,EAAE,sBAAsB,EAAmB,MAAM,oBAAoB,CAAA;AAE5E;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAwGnF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,CAG/D;AAeD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,sBAAsB,CAIvE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6B5F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,SAAI,GAAG,MAAM,CA0B3E"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared building blocks for the selection collection pass — used by both the
|
|
3
|
+
* runtime proxy collector (componentFactory) and compiled-selection/hole
|
|
4
|
+
* resolution (compiledSelection). Extracted to keep a clean module boundary
|
|
5
|
+
* and avoid a cycle between those two.
|
|
6
|
+
*/
|
|
7
|
+
import type { FluentFragment, SelectionMeta, AnyBrand } from '@contember/bindx';
|
|
8
|
+
import { ComponentBrand } from '@contember/bindx';
|
|
9
|
+
/**
|
|
10
|
+
* Creates a FluentFragment from selection metadata.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createFragment(selection: SelectionMeta, componentBrand: ComponentBrand, roles: readonly string[]): FluentFragment<unknown, object, AnyBrand>;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a tolerant stand-in for scalar (non-entity) props during collection.
|
|
15
|
+
* Render bodies may call it (`t('key')`), read nested properties
|
|
16
|
+
* (`labels.heading`) or coerce it to a primitive — all are no-ops so the
|
|
17
|
+
* collection pass keeps capturing entity field accesses (see issue #57).
|
|
18
|
+
*/
|
|
19
|
+
export declare function createScalarPropMock(): unknown;
|
|
20
|
+
//# sourceMappingURL=collectionHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectionHelpers.d.ts","sourceRoot":"","sources":["../../src/jsx/collectionHelpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD;;GAEG;AACH,wBAAgB,cAAc,CAC7B,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,SAAS,MAAM,EAAE,GACtB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAU3C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAoB9C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Declares how a callback prop is invoked, so the analyzer can treat it like a HasMany/HasOne child.
|
|
4
|
+
* Source of truth: the build-time compiler imports these types (see
|
|
5
|
+
* packages/bindx-compiler/src/contracts.ts) to parse what this module derives.
|
|
6
|
+
*/
|
|
7
|
+
export interface CallbackContract {
|
|
8
|
+
readonly kind: 'itemOf' | 'entityOf';
|
|
9
|
+
readonly field: string;
|
|
10
|
+
}
|
|
11
|
+
/** Maps a callback prop name (`children` included) to the relation it is invoked over. */
|
|
12
|
+
export type CollectorContract = Record<string, CallbackContract>;
|
|
13
|
+
/** Symbol under which a contract is attached to a component for introspection. */
|
|
14
|
+
export declare const COLLECTOR_CONTRACT: unique symbol;
|
|
15
|
+
/** Callback prop `field` receives each item of the has-many relation prop `field`. */
|
|
16
|
+
export declare function itemOf(field: string): CallbackContract;
|
|
17
|
+
/** Callback prop `field` receives the entity of the has-one relation prop `field`. */
|
|
18
|
+
export declare function entityOf(field: string): CallbackContract;
|
|
19
|
+
/**
|
|
20
|
+
* Derives a staticRender from a contract: one `<HasMany>`/`<HasOne>` per entry, replaying
|
|
21
|
+
* the callback prop as its child. A missing callback still registers the relation with no
|
|
22
|
+
* nested selection — mirroring HasMany/HasOne when their children collect nothing.
|
|
23
|
+
*/
|
|
24
|
+
export declare function deriveContractStaticRender(contract: CollectorContract): (props: Record<string, unknown>) => ReactNode;
|
|
25
|
+
//# sourceMappingURL=collectorContract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectorContract.d.ts","sourceRoot":"","sources":["../../src/jsx/collectorContract.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAED,0FAA0F;AAC1F,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;AAEhE,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,EAAE,OAAO,MAA0C,CAAA;AAElF,sFAAsF;AACtF,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAEtD;AAED,sFAAsF;AACtF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAExD;AAkBD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,CAkBrH"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { SelectionMeta } from '@contember/bindx';
|
|
2
|
+
import { SchemaRegistry, ComponentBrand } from '@contember/bindx';
|
|
3
|
+
import type { StaticFieldMap } from '@contember/bindx';
|
|
4
|
+
import type { SelectionPropMeta } from './componentBuilder.types.js';
|
|
5
|
+
import type { EntityConfig } from './componentFactory.js';
|
|
6
|
+
/**
|
|
7
|
+
* Precompiled selection injected by the selection compiler. Breaking-change
|
|
8
|
+
* shape within the experiment — hand-write only in tests that simulate emit.
|
|
9
|
+
*/
|
|
10
|
+
export interface CompiledSelection {
|
|
11
|
+
/** Contract version marker — the runtime falls back to the proxy pass unless this is exactly 2. */
|
|
12
|
+
v: 2;
|
|
13
|
+
/** Per implicit entity prop — same {@link StaticFieldMap} as phase 1. */
|
|
14
|
+
props: Record<string, StaticFieldMap>;
|
|
15
|
+
/** Nested components that received entity-derived values. */
|
|
16
|
+
holes?: CompiledHole[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A nested component composition the compiler could not inline statically.
|
|
20
|
+
* Resolved at collection time through the target's selection surface.
|
|
21
|
+
*/
|
|
22
|
+
export interface CompiledHole {
|
|
23
|
+
/**
|
|
24
|
+
* Thunk, not a direct reference — dodges TDZ for components defined later in
|
|
25
|
+
* the module (same reason runtime collection is lazy).
|
|
26
|
+
*/
|
|
27
|
+
component: () => unknown;
|
|
28
|
+
/**
|
|
29
|
+
* Target prop name → where its value comes from: a host entity prop plus a
|
|
30
|
+
* member path. Empty path = the root entity prop itself.
|
|
31
|
+
*/
|
|
32
|
+
entityProps: Record<string, {
|
|
33
|
+
source: string;
|
|
34
|
+
path: readonly string[];
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Statically-literal non-entity props of the JSX element. Non-literal
|
|
38
|
+
* non-entity props are simply omitted.
|
|
39
|
+
*/
|
|
40
|
+
literalProps?: Record<string, unknown>;
|
|
41
|
+
/**
|
|
42
|
+
* Non-entity props lifted verbatim from the emit site: module-scope values
|
|
43
|
+
* (imports / top-level bindings) and render-scope-free inline closures. Each
|
|
44
|
+
* is a thunk (TDZ-safe, same reason as {@link component}) resolved to the real
|
|
45
|
+
* value at collection time, so a target's `staticRender` that *invokes* one
|
|
46
|
+
* (e.g. `props.children(entity)`) collects the same fields the oracle would.
|
|
47
|
+
*/
|
|
48
|
+
extraProps?: Record<string, () => unknown>;
|
|
49
|
+
}
|
|
50
|
+
export interface ApplyCompiledSelectionParams {
|
|
51
|
+
readonly compiled: CompiledSelection;
|
|
52
|
+
readonly selectionsMap: Map<string, SelectionPropMeta>;
|
|
53
|
+
readonly componentBrand: ComponentBrand;
|
|
54
|
+
readonly roles: readonly string[];
|
|
55
|
+
readonly implicitConfigs: [string, EntityConfig][];
|
|
56
|
+
readonly schemaRegistry: SchemaRegistry<Record<string, object>> | null;
|
|
57
|
+
readonly componentDisplayName: string;
|
|
58
|
+
readonly validateMode: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Builds `selectionsMap` entries from a compiled selection — resolving the
|
|
62
|
+
* per-prop SelectionMeta (fields + holes) then wrapping each in a fragment.
|
|
63
|
+
* Replaces the proxy pass entirely; the host render function is never executed.
|
|
64
|
+
*/
|
|
65
|
+
export declare function applyCompiledSelection(params: ApplyCompiledSelectionParams): void;
|
|
66
|
+
/** Fixed key under which <Entity> stores its compiled root field map + hole sources. */
|
|
67
|
+
export declare const COMPILED_ROOT_KEY = "entity";
|
|
68
|
+
export interface ResolveCompiledRootSelectionParams {
|
|
69
|
+
readonly compiled: CompiledSelection;
|
|
70
|
+
readonly entityType: string;
|
|
71
|
+
readonly schemaRegistry: SchemaRegistry<Record<string, object>> | null;
|
|
72
|
+
readonly validateMode: boolean;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Builds the single root SelectionMeta for a compiled <Entity>: fields under the
|
|
76
|
+
* fixed `entity` key plus every hole (all rooted at `entity`). No fragments —
|
|
77
|
+
* <Entity> is a selection root, not a composable component.
|
|
78
|
+
*/
|
|
79
|
+
export declare function resolveCompiledRootSelection(params: ResolveCompiledRootSelectionParams): SelectionMeta;
|
|
80
|
+
//# sourceMappingURL=compiledSelection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiledSelection.d.ts","sourceRoot":"","sources":["../../src/jsx/compiledSelection.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAyB,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAkB,cAAc,EAAuB,MAAM,kBAAkB,CAAA;AAEtG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAItD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAMzD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IACjC,mGAAmG;IACnG,CAAC,EAAE,CAAC,CAAA;IACJ,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACrC,6DAA6D;IAC7D,KAAK,CAAC,EAAE,YAAY,EAAE,CAAA;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B;;;OAGG;IACH,SAAS,EAAE,MAAM,OAAO,CAAA;IACxB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;IACxE;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,CAAA;CAC1C;AAMD,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;IACpC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IACtD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAA;IAClD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAA;IACtE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI,CAgBjF;AAkED,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,WAAW,CAAA;AAEzC,MAAM,WAAW,kCAAkC;IAClD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAA;IACtE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,kCAAkC,GAAG,aAAa,CAYtG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime shape check for a compiler-emitted {@link CompiledSelection} literal.
|
|
3
|
+
* A stale or corrupt literal must never be half-read into the fetch plan —
|
|
4
|
+
* consumers fall back to the runtime proxy pass when this check fails.
|
|
5
|
+
*/
|
|
6
|
+
import type { CompiledSelection } from './compiledSelection.js';
|
|
7
|
+
/**
|
|
8
|
+
* True when `value` is a v2 literal whose field maps and holes are well-formed and
|
|
9
|
+
* reference only `entityPropNames` (the host's implicit entity props; `['entity']` for <Entity>).
|
|
10
|
+
*/
|
|
11
|
+
export declare function isValidCompiledSelection(value: unknown, entityPropNames: readonly string[]): value is CompiledSelection;
|
|
12
|
+
//# sourceMappingURL=compiledSelectionShape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiledSelectionShape.d.ts","sourceRoot":"","sources":["../../src/jsx/compiledSelectionShape.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AA+D/D;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,SAAS,MAAM,EAAE,GAChC,KAAK,IAAI,iBAAiB,CAU5B"}
|
|
@@ -8,6 +8,7 @@ import type { ReactNode } from 'react';
|
|
|
8
8
|
import type { SchemaRegistry, SelectionBuilder, EntityDef } from '@contember/bindx';
|
|
9
9
|
import { ComponentBrand } from '@contember/bindx';
|
|
10
10
|
import type { ComponentBuilder, ComponentBuilderState } from './componentBuilder.types.js';
|
|
11
|
+
import type { CompiledSelection } from './compiledSelection.js';
|
|
11
12
|
export type { SelectionPropMeta } from './componentBuilder.types.js';
|
|
12
13
|
import type { Condition } from './conditions.js';
|
|
13
14
|
import { type EntityConfig } from './componentFactory.js';
|
|
@@ -28,14 +29,16 @@ export declare class ComponentBuilderImpl<TState extends ComponentBuilderState>
|
|
|
28
29
|
private readonly conditionFn;
|
|
29
30
|
private readonly slotNames;
|
|
30
31
|
private readonly useFns;
|
|
31
|
-
|
|
32
|
+
private readonly mockValues;
|
|
33
|
+
constructor(schemaRegistry: SchemaRegistry<Record<string, object>> | null, entityConfigs: Map<string, EntityConfig>, roles: readonly string[], hasInterfacesMode?: boolean, conditionFn?: ((props: Record<string, unknown>) => Condition) | null, slotNames?: readonly string[], useFns?: readonly ((props: Record<string, unknown>) => object)[], mockValues?: Record<string, unknown>);
|
|
32
34
|
entity(propName: string, entity: EntityDef | string, selector?: (builder: SelectionBuilder<object>) => SelectionBuilder<object, object, object>): ComponentBuilderImpl<TState>;
|
|
33
35
|
interfaces(selectors?: Record<string, (builder: SelectionBuilder<object>) => SelectionBuilder<object, object, object>>): ComponentBuilderImpl<TState>;
|
|
34
36
|
props<TNewScalarProps extends object>(): ComponentBuilderImpl<TState>;
|
|
35
37
|
use(useFn: (props: Record<string, unknown>) => object): ComponentBuilderImpl<TState>;
|
|
38
|
+
mock(values: Record<string, unknown>): ComponentBuilderImpl<TState>;
|
|
36
39
|
if(conditionFn: (props: Record<string, unknown>) => Condition): ComponentBuilderImpl<TState>;
|
|
37
40
|
slots(names: readonly string[]): ComponentBuilderImpl<TState>;
|
|
38
|
-
render(renderFn: (props: Record<string, unknown>) => ReactNode): unknown;
|
|
41
|
+
render(renderFn: (props: Record<string, unknown>) => ReactNode, compiled?: CompiledSelection): unknown;
|
|
39
42
|
}
|
|
40
43
|
/**
|
|
41
44
|
* Creates a new component builder with initial state.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentBuilder.d.ts","sourceRoot":"","sources":["../../src/jsx/componentBuilder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EACX,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,cAAc,EACd,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EACX,gBAAgB,EAChB,qBAAqB,EAErB,MAAM,6BAA6B,CAAA;AACpC,YAAY,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGzE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAO/F;;;;;;;GAOG;AACH,qBAAa,oBAAoB,CAChC,MAAM,SAAS,qBAAqB;IAGnC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"componentBuilder.d.ts","sourceRoot":"","sources":["../../src/jsx/componentBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import type { ReactNode, ComponentType } from 'react';
|
|
|
9
9
|
import type { EntityRef, EntityAccessor, FluentFragment, SelectionBuilder, AnyBrand, SelectionMeta, EntityDef, ResolveEntity } from '@contember/bindx';
|
|
10
10
|
import type { SelectionProvider } from './types.js';
|
|
11
11
|
import type { Condition } from './conditions.js';
|
|
12
|
+
import type { CompiledSelection } from './compiledSelection.js';
|
|
12
13
|
export declare const COMPONENT_MARKER: unique symbol;
|
|
13
14
|
export declare const COMPONENT_BRAND: unique symbol;
|
|
14
15
|
export declare const COMPONENT_SELECTIONS: unique symbol;
|
|
@@ -265,6 +266,31 @@ export interface ComponentBuilder<TState extends ComponentBuilderState = Compone
|
|
|
265
266
|
* ```
|
|
266
267
|
*/
|
|
267
268
|
use<TUse extends object>(useFn: (props: BuildRenderProps<TState>) => TUse): ComponentBuilder<AddUseProps<TState, TUse>>;
|
|
269
|
+
/**
|
|
270
|
+
* Supply deterministic stand-in values for scalar / `.use()` props used
|
|
271
|
+
* EXCLUSIVELY during static selection analysis — never at runtime render,
|
|
272
|
+
* where real props and real `.use()` outputs always win.
|
|
273
|
+
*
|
|
274
|
+
* The generic tolerant stand-in survives most code but under-collects when a
|
|
275
|
+
* mocked value drives control flow: indexing a real object with a mocked key
|
|
276
|
+
* (`LABELS[key].x` crashes), branching on a scalar (nondeterministic branch),
|
|
277
|
+
* or `.map()` over a scalar array (callback never runs, so entity fields
|
|
278
|
+
* accessed inside it are silently missed). A concrete mock fixes all three.
|
|
279
|
+
*
|
|
280
|
+
* Later calls merge over earlier ones. Entity props cannot be mocked (type error).
|
|
281
|
+
* Does not change the builder state type.
|
|
282
|
+
*
|
|
283
|
+
* @example
|
|
284
|
+
* ```typescript
|
|
285
|
+
* createComponent()
|
|
286
|
+
* .entity('article', schema.Article)
|
|
287
|
+
* .props<{ labelKey: string; tabs: { key: string }[] }>()
|
|
288
|
+
* .use(() => ({ t: useTranslator() }))
|
|
289
|
+
* .mock({ labelKey: 'k1', tabs: [{ key: 'x' }], t: key => key })
|
|
290
|
+
* .render(({ article, labelKey, tabs, t }) => ...)
|
|
291
|
+
* ```
|
|
292
|
+
*/
|
|
293
|
+
mock(values: Partial<Omit<BuildRenderProps<TState>, keyof TState['__entityProps']>>): ComponentBuilder<TState>;
|
|
268
294
|
/**
|
|
269
295
|
* Add a condition that must be true for the component to render.
|
|
270
296
|
* If the condition is false, the component renders null.
|
|
@@ -312,9 +338,14 @@ export interface ComponentBuilder<TState extends ComponentBuilderState = Compone
|
|
|
312
338
|
* Build the component with the render function.
|
|
313
339
|
*
|
|
314
340
|
* @param renderFn - React render function receiving typed props
|
|
341
|
+
* @param compiled - Precompiled selection injected by the selection compiler
|
|
342
|
+
* (per-prop static field maps + nested-component holes). Compiler-facing
|
|
343
|
+
* only — do NOT hand-write it. When present, the runtime skips the proxy
|
|
344
|
+
* collection pass and uses this instead; enable
|
|
345
|
+
* {@link setStaticSelectionValidation} in dev/CI to cross-check it.
|
|
315
346
|
* @returns Bindx component with fragment properties
|
|
316
347
|
*/
|
|
317
|
-
render(renderFn: (props: BuildRenderProps<TState>) => ReactNode): BindxComponent<TState>;
|
|
348
|
+
render(renderFn: (props: BuildRenderProps<TState>) => ReactNode, compiled?: CompiledSelection): BindxComponent<TState>;
|
|
318
349
|
}
|
|
319
350
|
/**
|
|
320
351
|
* Initial builder state with empty entity props and scalar props.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentBuilder.types.d.ts","sourceRoot":"","sources":["../../src/jsx/componentBuilder.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrD,OAAO,KAAK,EACX,SAAS,EACT,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,SAAS,EACT,aAAa,EACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"componentBuilder.types.d.ts","sourceRoot":"","sources":["../../src/jsx/componentBuilder.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
* - Selection provider interface
|
|
9
9
|
*/
|
|
10
10
|
import type { ReactNode } from 'react';
|
|
11
|
-
import type { SelectionBuilder, SchemaDefinition } from '@contember/bindx';
|
|
11
|
+
import type { SelectionMeta, SelectionBuilder, SchemaDefinition } from '@contember/bindx';
|
|
12
12
|
import { SchemaRegistry } from '@contember/bindx';
|
|
13
|
+
import { type CompiledSelection } from './compiledSelection.js';
|
|
13
14
|
import { type Condition } from './conditions.js';
|
|
14
15
|
/**
|
|
15
16
|
* Marker symbol for identifying components created with createComponent
|
|
@@ -23,6 +24,19 @@ export declare const COMPONENT_BRAND: unique symbol;
|
|
|
23
24
|
* Symbol for stored selection metadata
|
|
24
25
|
*/
|
|
25
26
|
export declare const COMPONENT_SELECTIONS: unique symbol;
|
|
27
|
+
/**
|
|
28
|
+
* Enables or disables static-selection validate mode (module-level flag).
|
|
29
|
+
*/
|
|
30
|
+
export declare function setStaticSelectionValidation(enabled: boolean): void;
|
|
31
|
+
/** Reads the module-level validate-mode flag (used by <Entity>'s root compilation). */
|
|
32
|
+
export declare function isStaticSelectionValidationEnabled(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Disables compiled selections at runtime — incident mitigation without a rebuild.
|
|
35
|
+
* <Entity> roots switch on their next render; a createComponent switches only if not yet collected.
|
|
36
|
+
*/
|
|
37
|
+
export declare function setCompiledSelectionsEnabled(enabled: boolean): void;
|
|
38
|
+
/** Reads the module-level compiled-selections killswitch (used by both consumers). */
|
|
39
|
+
export declare function isCompiledSelectionsEnabled(): boolean;
|
|
26
40
|
export interface EntityConfig {
|
|
27
41
|
readonly entityName: string | null;
|
|
28
42
|
readonly selector?: (builder: SelectionBuilder<object>) => SelectionBuilder<object, object, object>;
|
|
@@ -35,5 +49,11 @@ export interface EntityConfig {
|
|
|
35
49
|
* Note: Implicit selection collection is deferred (lazy) to avoid TDZ errors
|
|
36
50
|
* when components reference other components defined later in the same file.
|
|
37
51
|
*/
|
|
38
|
-
export declare function buildComponent<TProps extends object>(entityConfigs: Map<string, EntityConfig>, roles: readonly string[], renderFn: (props: TProps) => ReactNode, hasInterfacesMode: boolean, schemaRegistry: SchemaRegistry<Record<string, object>> | null, conditionFn: ((props: TProps) => Condition) | null, slotNames: readonly string[], useFns: readonly ((props: TProps) => object)[]): unknown;
|
|
52
|
+
export declare function buildComponent<TProps extends object>(entityConfigs: Map<string, EntityConfig>, roles: readonly string[], renderFn: (props: TProps) => ReactNode, hasInterfacesMode: boolean, schemaRegistry: SchemaRegistry<Record<string, object>> | null, conditionFn: ((props: TProps) => Condition) | null, slotNames: readonly string[], useFns: readonly ((props: TProps) => object)[], mockValues: Record<string, unknown>, compiled: CompiledSelection | null): unknown;
|
|
53
|
+
/**
|
|
54
|
+
* Validate mode for a compiled <Entity> root: warn (once per collection) on fields
|
|
55
|
+
* the runtime children-collector walk requests but the compiled root omits. Reuses
|
|
56
|
+
* the same under-fetch-only diff as createComponent; the warn names the entity type.
|
|
57
|
+
*/
|
|
58
|
+
export declare function validateCompiledRootSelection(compiledSelection: SelectionMeta, runtimeSelection: SelectionMeta, entityType: string): void;
|
|
39
59
|
//# sourceMappingURL=componentFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentFactory.d.ts","sourceRoot":"","sources":["../../src/jsx/componentFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"componentFactory.d.ts","sourceRoot":"","sources":["../../src/jsx/componentFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAEX,aAAa,EACb,gBAAgB,EAEhB,gBAAgB,EAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,cAAc,EAKd,MAAM,kBAAkB,CAAA;AASzB,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAEvF,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,iBAAiB,CAAA;AAOnE;;GAEG;AACH,eAAO,MAAM,gBAAgB,eAA4B,CAAA;AAEzD;;GAEG;AACH,eAAO,MAAM,eAAe,eAA4B,CAAA;AAExD;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAAiC,CAAA;AAalE;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEnE;AAED,uFAAuF;AACvF,wBAAgB,kCAAkC,IAAI,OAAO,CAE5D;AAKD;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEnE;AAED,sFAAsF;AACtF,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAMD,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnG,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC1D;AA0BD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,SAAS,MAAM,EACnD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACxC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,EACtC,iBAAiB,EAAE,OAAO,EAC1B,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,EAC7D,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,GAAG,IAAI,EAClD,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,MAAM,EAAE,SAAS,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,EAAE,EAC9C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GAChC,OAAO,CAyNT;AAqMD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC5C,iBAAiB,EAAE,aAAa,EAChC,gBAAgB,EAAE,aAAa,EAC/B,UAAU,EAAE,MAAM,GAChB,IAAI,CAQN"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { type ReactElement } from 'react';
|
|
2
|
+
import type { CompiledSelection } from '../compiledSelection.js';
|
|
2
3
|
import type { EntityRef } from '../types.js';
|
|
3
4
|
import { type EntityDef, type EntityUniqueWhere, type FieldError, type CommonEntity } from '@contember/bindx';
|
|
4
5
|
/**
|
|
@@ -12,6 +13,12 @@ interface EntityBaseProps<TRoleMap extends Record<string, object>> {
|
|
|
12
13
|
children: (entity: EntityRef<CommonEntity<TRoleMap>>) => React.ReactNode;
|
|
13
14
|
/** Error fallback */
|
|
14
15
|
error?: (error: FieldError) => React.ReactNode;
|
|
16
|
+
/**
|
|
17
|
+
* Precompiled root selection — injected by the bindx compiler, do not hand-write.
|
|
18
|
+
* When present the root selection is built statically (fields under the fixed
|
|
19
|
+
* `entity` key + resolved holes) and `children` is not invoked with a collector.
|
|
20
|
+
*/
|
|
21
|
+
compiledSelection?: CompiledSelection;
|
|
15
22
|
}
|
|
16
23
|
/**
|
|
17
24
|
* Props for editing an existing entity (fetched by unique field)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/Entity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAkG,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAKhJ,OAAO,KAAK,EAAkB,SAAS,EAAiB,MAAM,aAAa,CAAA;AAC3E,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,iBAAiB,EAAiB,KAAK,UAAU,EAAgF,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAI1M;;;GAGG;AACH,UAAU,eAAe,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAChE,kCAAkC;IAClC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC3B,+EAA+E;IAC/E,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAA;IACxE,qBAAqB;IACrB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,KAAK,CAAC,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../../src/jsx/components/Entity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAkG,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AAKhJ,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,EAAkB,SAAS,EAAiB,MAAM,aAAa,CAAA;AAC3E,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,iBAAiB,EAAiB,KAAK,UAAU,EAAgF,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAI1M;;;GAGG;AACH,UAAU,eAAe,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAChE,kCAAkC;IAClC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC3B,+EAA+E;IAC/E,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAA;IACxE,qBAAqB;IACrB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,KAAK,CAAC,SAAS,CAAA;IAC9C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CACrC;AAED;;GAEG;AACH,UAAU,aAAa,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAE,SAAQ,eAAe,CAAC,QAAQ,CAAC;IACjG,sFAAsF;IACtF,EAAE,EAAE,iBAAiB,CAAA;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,uBAAuB;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;GAEG;AACH,UAAU,iBAAiB,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAE,SAAQ,eAAe,CAAC,QAAQ,CAAC;IACrG,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,8DAA8D;IAC9D,MAAM,EAAE,IAAI,CAAA;IACZ,wEAAwE;IACxE,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,OAAO,CAAC,EAAE,KAAK,CAAA;IACf,QAAQ,CAAC,EAAE,KAAK,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IACrF,aAAa,CAAC,QAAQ,CAAC,GACvB,iBAAiB,CAAC,QAAQ,CAAC,CAAA;AA6T9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,iBAAS,UAAU,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1D,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,GAC1B,YAAY,GAAG,IAAI,CA6BrB;AAGD,eAAO,MAAM,MAAM,EAAkC,OAAO,UAAU,CAAA"}
|
package/dist/jsx/index.d.ts
CHANGED
|
@@ -15,7 +15,11 @@ export { HasRole, type HasRoleProps } from './components/HasRole.js';
|
|
|
15
15
|
export { cond, isCondition, evaluateCondition, collectConditionFields, CONDITION_META, type Condition, type ConditionMeta, } from './conditions.js';
|
|
16
16
|
export { isBindxComponent, mergeFragments, COMPONENT_MARKER, COMPONENT_BRAND, COMPONENT_SELECTIONS, createComponentBuilder, ComponentBuilderImpl, getComponentBrand, setBrandValidation, validateBrand, } from './createComponent.js';
|
|
17
17
|
export { createComponent } from './standaloneCreateComponent.js';
|
|
18
|
+
export { setStaticSelectionValidation } from './componentFactory.js';
|
|
19
|
+
export { setCompiledSelectionsEnabled } from './componentFactory.js';
|
|
20
|
+
export type { CompiledSelection, CompiledHole } from './compiledSelection.js';
|
|
18
21
|
export { withCollector } from './withCollector.js';
|
|
22
|
+
export { COLLECTOR_CONTRACT, itemOf, entityOf, type CallbackContract, type CollectorContract, } from './collectorContract.js';
|
|
19
23
|
export type { SelectionPropMeta, BindxComponentBase, BindxComponent, ComponentBuilder, ComponentBuilderState, CreateComponentOptions, InterfaceEntityPropConfig, ImplicitInterfaceEntityConfig, ExplicitInterfaceEntityConfig, AddInterfaces, InterfaceSelectorsMap, AnyEntityPropConfig, EntityPropConfig, ImplicitEntityConfig, ExplicitEntityConfig, AddImplicitEntity, AddExplicitEntity, AddImplicitInterfaceEntity, AddExplicitInterfaceEntity, SetScalarProps, BuildEntityProps, BuildProps, BuildFragmentProps, InitialBuilderState, } from './createComponent.js';
|
|
20
24
|
export type { EntityPropKeys, EntityFromProp, SelectionFromProp, ImplicitFragmentProperties, } from './legacyTypes.js';
|
|
21
25
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/jsx/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jsx/index.ts"],"names":[],"mappings":"AACA,OAAO,EACN,eAAe,EACf,cAAc,EACd,SAAS,EACT,KAAK,YAAY,EAEjB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EAEd,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EAEpB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,QAAQ,GACb,MAAM,YAAY,CAAA;AAGnB,OAAO,EACN,sBAAsB,EACtB,eAAe,EACf,oBAAoB,GACpB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACN,oBAAoB,GACpB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACN,UAAU,EACV,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,GACd,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC7F,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,EACN,MAAM,EACN,IAAI,EACJ,OAAO,EACP,cAAc,EACd,YAAY,EACZ,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,YAAY,GACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAGpE,OAAO,EACN,IAAI,EACJ,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,KAAK,SAAS,EACd,KAAK,aAAa,GAClB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACb,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jsx/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,14 @@ import { type EntityAccessor, type EntityFields } from './types.js';
|
|
|
5
5
|
* Used by collector proxy.
|
|
6
6
|
*/
|
|
7
7
|
export declare const ENTITY_ACCESSOR_PROPERTIES: Set<string>;
|
|
8
|
+
/**
|
|
9
|
+
* String keys React probes on any object it treats as a JSX child: `$$typeof`
|
|
10
|
+
* (isValidElement) and the `@@iterator` fallback (getIteratorFn). A collector
|
|
11
|
+
* proxy must return undefined for these — delegating to field access would
|
|
12
|
+
* upgrade a scalar to a bogus relation. Symbol probes (Symbol.iterator, …) pass
|
|
13
|
+
* through the symbol branch already.
|
|
14
|
+
*/
|
|
15
|
+
export declare const REACT_ELEMENT_PROBE_KEYS: Set<string>;
|
|
8
16
|
/**
|
|
9
17
|
* Wraps an object with $fields in a Proxy that supports direct field access.
|
|
10
18
|
* - `entity.fieldName` is equivalent to `entity.$fields.fieldName`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyShared.d.ts","sourceRoot":"","sources":["../../src/jsx/proxyShared.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,MAAM,YAAY,CAAA;AAEnB;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,aAMrC,CAAA;AAEF;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,CAAC,EAAE,GAAG,EAAE;IAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"proxyShared.d.ts","sourceRoot":"","sources":["../../src/jsx/proxyShared.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,MAAM,YAAY,CAAA;AAEnB;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,aAMrC,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,aAAsC,CAAA;AAE3E;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,CAAC,EAAE,GAAG,EAAE;IAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAsB5I"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
+
import type { CollectorContract } from './collectorContract.js';
|
|
2
3
|
/**
|
|
3
4
|
* Attaches a static render function to a component for selection collection.
|
|
4
5
|
*
|
|
@@ -24,16 +25,14 @@ import type { ReactNode } from 'react';
|
|
|
24
25
|
* )
|
|
25
26
|
* )
|
|
26
27
|
*
|
|
27
|
-
* //
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* (
|
|
31
|
-
*
|
|
32
|
-
* for (const ext of props.fileType.extractors) entity[ext.fieldName]
|
|
33
|
-
* return null
|
|
34
|
-
* }
|
|
28
|
+
* // Declarative contract instead of a hand-written staticRender: `children` is invoked
|
|
29
|
+
* // per item of the `field` has-many relation. The staticRender is derived automatically.
|
|
30
|
+
* export const ItemRepeater = withCollector(
|
|
31
|
+
* function ItemRepeater({ field, children, ... }) { ... },
|
|
32
|
+
* { children: itemOf('field') }
|
|
35
33
|
* )
|
|
36
34
|
* ```
|
|
37
35
|
*/
|
|
38
36
|
export declare function withCollector<TComponent extends (...args: never[]) => ReactNode>(component: TComponent, staticRender: (props: Parameters<TComponent>[0]) => ReactNode): TComponent;
|
|
37
|
+
export declare function withCollector<TComponent extends (...args: never[]) => ReactNode>(component: TComponent, contract: CollectorContract): TComponent;
|
|
39
38
|
//# sourceMappingURL=withCollector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withCollector.d.ts","sourceRoot":"","sources":["../../src/jsx/withCollector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"withCollector.d.ts","sourceRoot":"","sources":["../../src/jsx/withCollector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAAC,UAAU,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,SAAS,EAC/E,SAAS,EAAE,UAAU,EACrB,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,GAC3D,UAAU,CAAA;AACb,wBAAgB,aAAa,CAAC,UAAU,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,SAAS,EAC/E,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,iBAAiB,GACzB,UAAU,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/bindx-react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.59",
|
|
4
4
|
"description": "Type-safe React data binding framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.ts",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"react": ">=18.0.0"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@contember/bindx": "0.1.
|
|
19
|
-
"@contember/bindx-client": "0.1.
|
|
18
|
+
"@contember/bindx": "0.1.59",
|
|
19
|
+
"@contember/bindx-client": "0.1.59",
|
|
20
20
|
"@contember/graphql-client": "2.1.0-rc.6",
|
|
21
21
|
"@radix-ui/primitive": "^1.1.3",
|
|
22
22
|
"@radix-ui/react-slot": "^1.2.4"
|