@contember/bindx 0.1.28 → 0.1.29
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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/notifications/NotificationStore.d.ts +42 -0
- package/dist/notifications/NotificationStore.d.ts.map +1 -0
- package/dist/notifications/index.d.ts +3 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/types.d.ts +35 -0
- package/dist/notifications/types.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/index.ts +10 -0
- package/src/notifications/NotificationStore.ts +116 -0
- package/src/notifications/index.ts +8 -0
- package/src/notifications/types.ts +39 -0
package/dist/index.d.ts
CHANGED
|
@@ -36,6 +36,8 @@ export type { UndoManagerConfig, UndoState, UndoEntry, PartialStoreSnapshot, Sto
|
|
|
36
36
|
export type { StoredRelationState, StoredHasManyState, EntityMeta, } from './store/SnapshotStore.js';
|
|
37
37
|
export type { 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, BeforeEventType, AfterEventType, AnyEventType, EventTypeMap, EventByType, InterceptorResult, Interceptor, EventListener, Unsubscribe, BeforeEventTypes, AfterEventTypes, FieldScopedEventTypes, } from './events/index.js';
|
|
38
38
|
export { EventEmitter } from './events/index.js';
|
|
39
|
+
export { NotificationStore } from './notifications/index.js';
|
|
40
|
+
export type { Notification, NotificationDetail, NotificationInput, NotificationType, NotificationSource, } from './notifications/index.js';
|
|
39
41
|
export type { ExecutionErrorType, ErrorCategory, BindxError, ClientError, ServerError, LoadError, FieldError, ErrorState, ErrorInput, PathElement, ContemberMutationError, ContemberValidationError, ContemberMutationResult, ResolvedErrorTarget, ResolvedError, ErrorPathContext, } from './errors/index.js';
|
|
40
42
|
export { ExecutionErrorTypes, isExecutionErrorType, classifyError, isRetryableCategory, createClientError, createServerError, createLoadError, isClientError, isServerError, isLoadError, filterErrorsBySource, filterStickyErrors, UnfetchedFieldError, resolveErrorPath, resolveAllErrors, } from './errors/index.js';
|
|
41
43
|
export { ContentClient, type ContentClientOptions, type ContentQuery, type ContentMutation, ContentOperation, type MutationResult as ClientMutationResult, MutationFailedError, type QuerySpecContext, querySpecToGraphQl, buildGetArgs, buildListArgs, buildCreateArgs, buildUpdateArgs, buildDeleteArgs, buildMutationSelection, mutationFragments, unwrapPaginateResult, } from '@contember/bindx-client';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,YAAY,EACX,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,cAAc,GACd,MAAM,mBAAmB,CAAA;AAG1B,YAAY,EACX,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,SAAS,EACT,cAAc,EAEd,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,YAAY,GACZ,MAAM,sBAAsB,CAAA;AAG7B,YAAY,EACX,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EAEZ,QAAQ,EACR,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,SAAS,EACT,kBAAkB,EAElB,aAAa,EACb,eAAe,EACf,cAAc,EACd,cAAc,EAEd,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,GACd,MAAM,oBAAoB,CAAA;AAG3B,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG1D,YAAY,EACX,cAAc,EACd,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,IAAI,0BAA0B,EACjD,yBAAyB,IAAI,gCAAgC,EAC7D,iBAAiB,IAAI,wBAAwB,GAC7C,MAAM,oBAAoB,CAAA;AAG3B,YAAY,EACX,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,aAAa,IAAI,iBAAiB,EAClC,qBAAqB,GACrB,MAAM,iBAAiB,CAAA;AAGxB,YAAY,EACX,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,eAAe,EACf,WAAW,EACX,UAAU,GACV,MAAM,sBAAsB,CAAA;AAO7B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGlJ,YAAY,EACX,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,WAAW,GACX,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,YAAY,EACX,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,GAClB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrM,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGzD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAG/F,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAGxF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGtF,OAAO,EACN,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,SAAS,EACT,cAAc,EACd,UAAU,GACV,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAClJ,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAG7D,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACnF,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzE,YAAY,EACX,QAAQ,EACR,WAAW,EACX,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,IAAI,gBAAgB,EAChC,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,GACV,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAGhE,OAAO,EAAE,iBAAiB,EAAE,8BAA8B,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC1G,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAGxF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,YAAY,EACX,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,oBAAoB,EACpB,iBAAiB,GACjB,MAAM,iBAAiB,CAAA;AAGxB,YAAY,EACX,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,GACV,MAAM,0BAA0B,CAAA;AAGjC,YAAY,EACX,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,qBAAqB,GACrB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,YAAY,EACX,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,GAChB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,mBAAmB,CAAA;AAI1B,OAAO,EACN,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,gBAAgB,EAChB,KAAK,cAAc,IAAI,oBAAoB,EAC3C,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACpB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAA;AAG5C,YAAY,EACX,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,cAAc,EACd,eAAe,EACf,cAAc,GACd,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACN,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,EACzB,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,GAC5B,MAAM,qBAAqB,CAAA;AAM5B;;;;;;;GAOG;AACH,OAAO,KAAK,UAAU,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,YAAY,EACX,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,cAAc,GACd,MAAM,mBAAmB,CAAA;AAG1B,YAAY,EACX,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,SAAS,EACT,cAAc,EAEd,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,YAAY,GACZ,MAAM,sBAAsB,CAAA;AAG7B,YAAY,EACX,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EAEZ,QAAQ,EACR,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,SAAS,EACT,kBAAkB,EAElB,aAAa,EACb,eAAe,EACf,cAAc,EACd,cAAc,EAEd,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,GACd,MAAM,oBAAoB,CAAA;AAG3B,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG1D,YAAY,EACX,cAAc,EACd,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,IAAI,0BAA0B,EACjD,yBAAyB,IAAI,gCAAgC,EAC7D,iBAAiB,IAAI,wBAAwB,GAC7C,MAAM,oBAAoB,CAAA;AAG3B,YAAY,EACX,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,aAAa,IAAI,iBAAiB,EAClC,qBAAqB,GACrB,MAAM,iBAAiB,CAAA;AAGxB,YAAY,EACX,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,eAAe,EACf,WAAW,EACX,UAAU,GACV,MAAM,sBAAsB,CAAA;AAO7B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGlJ,YAAY,EACX,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,WAAW,GACX,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,YAAY,EACX,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,GAClB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrM,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGzD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAG/F,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAGxF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGtF,OAAO,EACN,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,SAAS,EACT,cAAc,EACd,UAAU,GACV,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAClJ,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAG7D,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACnF,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzE,YAAY,EACX,QAAQ,EACR,WAAW,EACX,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,IAAI,gBAAgB,EAChC,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,GACV,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAGhE,OAAO,EAAE,iBAAiB,EAAE,8BAA8B,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC1G,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAGxF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,YAAY,EACX,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,oBAAoB,EACpB,iBAAiB,GACjB,MAAM,iBAAiB,CAAA;AAGxB,YAAY,EACX,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,GACV,MAAM,0BAA0B,CAAA;AAGjC,YAAY,EACX,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,qBAAqB,GACrB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,YAAY,EACX,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,0BAA0B,CAAA;AAGjC,YAAY,EACX,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,GAChB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,mBAAmB,CAAA;AAI1B,OAAO,EACN,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,gBAAgB,EAChB,KAAK,cAAc,IAAI,oBAAoB,EAC3C,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACpB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAA;AAG5C,YAAY,EACX,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,cAAc,EACd,eAAe,EACf,cAAc,GACd,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACN,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,EACzB,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,GAC5B,MAAM,qBAAqB,CAAA;AAM5B;;;;;;;GAOG;AACH,OAAO,KAAK,UAAU,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Notification, NotificationInput } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Framework-agnostic store for user-facing notifications.
|
|
4
|
+
* Follows the same subscriber pattern as ChangeRegistry / SnapshotStore.
|
|
5
|
+
*/
|
|
6
|
+
export declare class NotificationStore {
|
|
7
|
+
private readonly notifications;
|
|
8
|
+
private readonly timers;
|
|
9
|
+
private readonly subscribers;
|
|
10
|
+
/** Cached snapshot for useSyncExternalStore */
|
|
11
|
+
private snapshot;
|
|
12
|
+
/**
|
|
13
|
+
* Add a notification. Returns its ID.
|
|
14
|
+
* Deduplicates by source + message — if an identical notification
|
|
15
|
+
* already exists, the existing ID is returned without adding a new one.
|
|
16
|
+
*/
|
|
17
|
+
add(input: NotificationInput): string;
|
|
18
|
+
/**
|
|
19
|
+
* Remove a notification by ID.
|
|
20
|
+
*/
|
|
21
|
+
dismiss(id: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Remove all notifications.
|
|
24
|
+
*/
|
|
25
|
+
clear(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Get all active notifications sorted by timestamp (oldest first).
|
|
28
|
+
* Returns a stable reference for useSyncExternalStore.
|
|
29
|
+
*/
|
|
30
|
+
getAll(): readonly Notification[];
|
|
31
|
+
/**
|
|
32
|
+
* Subscribe to notification changes.
|
|
33
|
+
* Returns an unsubscribe function.
|
|
34
|
+
*/
|
|
35
|
+
subscribe(callback: () => void): () => void;
|
|
36
|
+
/**
|
|
37
|
+
* Clean up all timers. Call when the store is no longer needed.
|
|
38
|
+
*/
|
|
39
|
+
destroy(): void;
|
|
40
|
+
private updateSnapshot;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=NotificationStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotificationStore.d.ts","sourceRoot":"","sources":["../../src/notifications/NotificationStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAWjE;;;GAGG;AACH,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;IAC1E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IAEpD,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAA8B;IAE9C;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM;IA2BrC;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAYzB;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;;OAGG;IACH,MAAM,IAAI,SAAS,YAAY,EAAE;IAIjC;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAK3C;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,cAAc;CAQtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,YAAY,EACX,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notification types for user-facing feedback (toasts, alerts).
|
|
3
|
+
*/
|
|
4
|
+
export type NotificationType = 'success' | 'error' | 'warning' | 'info';
|
|
5
|
+
export type NotificationSource = 'persist' | 'load' | 'client';
|
|
6
|
+
/**
|
|
7
|
+
* A single notification displayed to the user.
|
|
8
|
+
*/
|
|
9
|
+
export interface Notification {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly type: NotificationType;
|
|
12
|
+
readonly message: string;
|
|
13
|
+
/** Structured details (e.g., per-field errors) */
|
|
14
|
+
readonly details?: readonly NotificationDetail[];
|
|
15
|
+
/** Raw technical detail (e.g., server errorMessage) */
|
|
16
|
+
readonly technicalDetail?: string;
|
|
17
|
+
/** Auto-dismiss timeout in ms. 0 = manual dismiss only. */
|
|
18
|
+
readonly dismissAfter: number;
|
|
19
|
+
/** What triggered this notification */
|
|
20
|
+
readonly source: NotificationSource;
|
|
21
|
+
readonly timestamp: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Structured detail within a notification.
|
|
25
|
+
*/
|
|
26
|
+
export interface NotificationDetail {
|
|
27
|
+
readonly entityType?: string;
|
|
28
|
+
readonly fieldName?: string;
|
|
29
|
+
readonly message: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Input for creating a notification (id and timestamp are auto-generated).
|
|
33
|
+
*/
|
|
34
|
+
export type NotificationInput = Omit<Notification, 'id' | 'timestamp'>;
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/notifications/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAEvE,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE9D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,kDAAkD;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAChD,uDAAuD;IACvD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/bindx",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.29",
|
|
4
4
|
"description": "Type-safe data binding framework (core)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.ts",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
],
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@contember/bindx-client": "0.1.
|
|
20
|
+
"@contember/bindx-client": "0.1.29",
|
|
21
21
|
"@contember/graphql-builder": "^2.1.0-beta.1",
|
|
22
22
|
"@contember/graphql-client": "^2.1.0-beta.1"
|
|
23
23
|
},
|
package/src/index.ts
CHANGED
|
@@ -292,6 +292,16 @@ export type {
|
|
|
292
292
|
|
|
293
293
|
export { EventEmitter } from './events/index.js'
|
|
294
294
|
|
|
295
|
+
// Notifications
|
|
296
|
+
export { NotificationStore } from './notifications/index.js'
|
|
297
|
+
export type {
|
|
298
|
+
Notification,
|
|
299
|
+
NotificationDetail,
|
|
300
|
+
NotificationInput,
|
|
301
|
+
NotificationType,
|
|
302
|
+
NotificationSource,
|
|
303
|
+
} from './notifications/index.js'
|
|
304
|
+
|
|
295
305
|
// Error types
|
|
296
306
|
export type {
|
|
297
307
|
ExecutionErrorType,
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { Notification, NotificationInput } from './types.js'
|
|
2
|
+
|
|
3
|
+
const DEFAULT_DISMISS_MS: Record<string, number> = {
|
|
4
|
+
error: 60_000,
|
|
5
|
+
warning: 15_000,
|
|
6
|
+
success: 6_000,
|
|
7
|
+
info: 6_000,
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let nextId = 1
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Framework-agnostic store for user-facing notifications.
|
|
14
|
+
* Follows the same subscriber pattern as ChangeRegistry / SnapshotStore.
|
|
15
|
+
*/
|
|
16
|
+
export class NotificationStore {
|
|
17
|
+
private readonly notifications = new Map<string, Notification>()
|
|
18
|
+
private readonly timers = new Map<string, ReturnType<typeof setTimeout>>()
|
|
19
|
+
private readonly subscribers = new Set<() => void>()
|
|
20
|
+
|
|
21
|
+
/** Cached snapshot for useSyncExternalStore */
|
|
22
|
+
private snapshot: readonly Notification[] = []
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Add a notification. Returns its ID.
|
|
26
|
+
* Deduplicates by source + message — if an identical notification
|
|
27
|
+
* already exists, the existing ID is returned without adding a new one.
|
|
28
|
+
*/
|
|
29
|
+
add(input: NotificationInput): string {
|
|
30
|
+
// Deduplicate
|
|
31
|
+
for (const existing of this.notifications.values()) {
|
|
32
|
+
if (existing.source === input.source && existing.message === input.message) {
|
|
33
|
+
return existing.id
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const id = `notification-${nextId++}`
|
|
38
|
+
const notification: Notification = {
|
|
39
|
+
...input,
|
|
40
|
+
id,
|
|
41
|
+
timestamp: Date.now(),
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
this.notifications.set(id, notification)
|
|
45
|
+
|
|
46
|
+
// Schedule auto-dismiss
|
|
47
|
+
const dismissAfter = input.dismissAfter ?? DEFAULT_DISMISS_MS[input.type] ?? 6_000
|
|
48
|
+
if (dismissAfter > 0) {
|
|
49
|
+
this.timers.set(id, setTimeout(() => this.dismiss(id), dismissAfter))
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
this.updateSnapshot()
|
|
53
|
+
return id
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Remove a notification by ID.
|
|
58
|
+
*/
|
|
59
|
+
dismiss(id: string): void {
|
|
60
|
+
if (!this.notifications.has(id)) return
|
|
61
|
+
|
|
62
|
+
this.notifications.delete(id)
|
|
63
|
+
const timer = this.timers.get(id)
|
|
64
|
+
if (timer !== undefined) {
|
|
65
|
+
clearTimeout(timer)
|
|
66
|
+
this.timers.delete(id)
|
|
67
|
+
}
|
|
68
|
+
this.updateSnapshot()
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Remove all notifications.
|
|
73
|
+
*/
|
|
74
|
+
clear(): void {
|
|
75
|
+
for (const timer of this.timers.values()) {
|
|
76
|
+
clearTimeout(timer)
|
|
77
|
+
}
|
|
78
|
+
this.timers.clear()
|
|
79
|
+
this.notifications.clear()
|
|
80
|
+
this.updateSnapshot()
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Get all active notifications sorted by timestamp (oldest first).
|
|
85
|
+
* Returns a stable reference for useSyncExternalStore.
|
|
86
|
+
*/
|
|
87
|
+
getAll(): readonly Notification[] {
|
|
88
|
+
return this.snapshot
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Subscribe to notification changes.
|
|
93
|
+
* Returns an unsubscribe function.
|
|
94
|
+
*/
|
|
95
|
+
subscribe(callback: () => void): () => void {
|
|
96
|
+
this.subscribers.add(callback)
|
|
97
|
+
return () => this.subscribers.delete(callback)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Clean up all timers. Call when the store is no longer needed.
|
|
102
|
+
*/
|
|
103
|
+
destroy(): void {
|
|
104
|
+
this.clear()
|
|
105
|
+
this.subscribers.clear()
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
private updateSnapshot(): void {
|
|
109
|
+
this.snapshot = Array.from(this.notifications.values()).sort(
|
|
110
|
+
(a, b) => a.timestamp - b.timestamp,
|
|
111
|
+
)
|
|
112
|
+
for (const cb of this.subscribers) {
|
|
113
|
+
cb()
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notification types for user-facing feedback (toasts, alerts).
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export type NotificationType = 'success' | 'error' | 'warning' | 'info'
|
|
6
|
+
|
|
7
|
+
export type NotificationSource = 'persist' | 'load' | 'client'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A single notification displayed to the user.
|
|
11
|
+
*/
|
|
12
|
+
export interface Notification {
|
|
13
|
+
readonly id: string
|
|
14
|
+
readonly type: NotificationType
|
|
15
|
+
readonly message: string
|
|
16
|
+
/** Structured details (e.g., per-field errors) */
|
|
17
|
+
readonly details?: readonly NotificationDetail[]
|
|
18
|
+
/** Raw technical detail (e.g., server errorMessage) */
|
|
19
|
+
readonly technicalDetail?: string
|
|
20
|
+
/** Auto-dismiss timeout in ms. 0 = manual dismiss only. */
|
|
21
|
+
readonly dismissAfter: number
|
|
22
|
+
/** What triggered this notification */
|
|
23
|
+
readonly source: NotificationSource
|
|
24
|
+
readonly timestamp: number
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Structured detail within a notification.
|
|
29
|
+
*/
|
|
30
|
+
export interface NotificationDetail {
|
|
31
|
+
readonly entityType?: string
|
|
32
|
+
readonly fieldName?: string
|
|
33
|
+
readonly message: string
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Input for creating a notification (id and timestamp are auto-generated).
|
|
38
|
+
*/
|
|
39
|
+
export type NotificationInput = Omit<Notification, 'id' | 'timestamp'>
|