@furystack/repository 11.0.0 → 11.0.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## [11.0.1] - 2026-05-21
4
+
5
+ ### 📚 Documentation
6
+
7
+ - Rewrote JSDoc on `DataSet`, `DataSetSetting`, `defineDataSet`, and the helpers to follow the new value-test guidance: dropped restate-the-type narration, kept intent / trade-offs / constraints around authorization, validation, and the lifecycle hooks.
8
+
9
+ ### ⬆️ Dependencies
10
+
11
+ - Bump dev `vitest` to `^4.1.5`.
12
+ - Bumped `vitest` to `^4.1.7`. No source changes — dev-tooling bump only.
13
+
3
14
  ## [11.0.0] - 2026-04-25
4
15
 
5
16
  ### 💥 Breaking Changes
@@ -1,98 +1,84 @@
1
1
  import type { FindOptions, PhysicalStore, WithOptionalId } from '@furystack/core';
2
2
  import type { Injector } from '@furystack/inject';
3
- /**
4
- * The result model returned by authorizers
5
- */
3
+ /** Discriminated union returned by authorizer callbacks. */
6
4
  export type AuthorizationResult = SuccessfullyValidationResult | FailedValidationResult;
7
5
  export interface SuccessfullyValidationResult {
8
- /**
9
- * Indicates if the validation was successful
10
- */
11
6
  isAllowed: true;
12
7
  }
13
8
  export interface FailedValidationResult {
14
- /**
15
- * Indicates if the validation was successful
16
- */
17
9
  isAllowed: false;
18
- /**
19
- * The error message string
20
- */
10
+ /** Surfaced as the message of the thrown {@link AuthorizationError}. */
21
11
  message: string;
22
12
  }
23
13
  /**
24
- * Model for authorizers
14
+ * Configuration for a {@link DataSet}: backing store + authorization +
15
+ * modification hooks + filter post-processing. Every callback is optional —
16
+ * an empty `DataSetSettings` performs no checks and forwards calls straight
17
+ * to the physical store.
18
+ *
19
+ * Authorization callbacks come in two flavours:
20
+ *
21
+ * - `authorizeX` — runs **before** the entity is loaded. Use for cheap,
22
+ * identity-only checks ("is the user logged in?", "is the user an admin?").
23
+ * When omitted, no pre-check is performed.
24
+ * - `authorizeXEntity` — runs **after** the entity is loaded, with the
25
+ * loaded entity in scope. Use for ownership / row-level checks. Missing
26
+ * entities skip the per-entity check entirely.
27
+ *
28
+ * A callback returning `{ isAllowed: false }` makes the operation throw
29
+ * {@link AuthorizationError}.
25
30
  */
26
31
  export interface DataSetSettings<T, TPrimaryKey extends keyof T, TWritableData = WithOptionalId<T, TPrimaryKey>> {
27
- /**
28
- * An instance of a physical store
29
- */
30
32
  physicalStore: PhysicalStore<T, TPrimaryKey, TWritableData>;
31
- /**
32
- * Authorizes the entity creation
33
- */
33
+ /** Pre-persist authorization for `add`. */
34
34
  authorizeAdd?: (options: {
35
35
  injector: Injector;
36
36
  entity: TWritableData;
37
37
  }) => Promise<AuthorizationResult>;
38
- /**
39
- * modifies an entity before persisting on creation
40
- */
38
+ /** Pre-persist mutation for `add` (default fields, hashing, normalisation). */
41
39
  modifyOnAdd?: (options: {
42
40
  injector: Injector;
43
41
  entity: TWritableData;
44
42
  }) => Promise<TWritableData>;
45
- /**
46
- * Authorizes entity updates (before the entity gets loaded from the store)
47
- */
43
+ /** Pre-load authorization for `update`. Sees the change, not the entity. */
48
44
  authorizeUpdate?: (options: {
49
45
  injector: Injector;
50
46
  change: Partial<T>;
51
47
  }) => Promise<AuthorizationResult>;
52
- /**
53
- * Authorizes entity updates per loaded entity
54
- */
48
+ /** Post-load authorization for `update`. Sees both the loaded entity and the change. */
55
49
  authorizeUpdateEntity?: (options: {
56
50
  injector: Injector;
57
51
  entity: T;
58
52
  change: Partial<T>;
59
53
  }) => Promise<AuthorizationResult>;
60
- /**
61
- * modifies an entity before persisting on update
62
- */
54
+ /** Pre-persist mutation for `update`. */
63
55
  modifyOnUpdate?: (options: {
64
56
  injector: Injector;
65
57
  id: T[keyof T];
66
58
  entity: Partial<T>;
67
59
  }) => Promise<Partial<T>>;
68
- /**
69
- * Authorizes entity removal (before the entity gets loaded from the store)
70
- */
60
+ /** Pre-load authorization for `remove`. */
71
61
  authorizeRemove?: (options: {
72
62
  injector: Injector;
73
63
  }) => Promise<AuthorizationResult>;
74
- /**
75
- * Authorizes entity removal per loaded entity
76
- */
64
+ /** Post-load authorization for `remove`, per loaded entity. */
77
65
  authorizeRemoveEntity?: (options: {
78
66
  injector: Injector;
79
67
  entity: T;
80
68
  }) => Promise<AuthorizationResult>;
81
- /**
82
- * Authorizes entity retrieval without entity loading
83
- */
69
+ /** Pre-load authorization for `get` / `find` / `count`. No entity in scope. */
84
70
  authorizeGet?: (options: {
85
71
  injector: Injector;
86
72
  }) => Promise<AuthorizationResult>;
87
- /**
88
- * Authorizes entity retrieval
89
- */
73
+ /** Post-load authorization for `get`, per loaded entity. */
90
74
  authorizeGetEntity?: (options: {
91
75
  injector: Injector;
92
76
  entity: T;
93
77
  }) => Promise<AuthorizationResult>;
94
78
  /**
95
- * Additional filter parsing to be appended per filter / query
79
+ * Filter post-processor. Receives the caller's {@link FindOptions} and
80
+ * returns a (potentially augmented) one. Use to inject mandatory clauses
81
+ * (tenant scoping, soft-delete masks) the caller cannot bypass.
96
82
  */
97
83
  addFilter?: <TFields extends Array<keyof T>>(options: {
98
84
  injector: Injector;
@@ -1 +1 @@
1
- {"version":3,"file":"data-set-setting.d.ts","sourceRoot":"","sources":["../src/data-set-setting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-set-setting.d.ts","sourceRoot":"","sources":["../src/data-set-setting.ts"],"names":[],"mappings":"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"}
package/esm/data-set.d.ts CHANGED
@@ -3,30 +3,25 @@ import type { Injector } from '@furystack/inject';
3
3
  import { EventHub, type ListenerErrorPayload } from '@furystack/utils';
4
4
  import type { DataSetSettings } from './data-set-setting.js';
5
5
  /**
6
- * An authorized Repository Store instance that wraps a {@link PhysicalStore} with authorization,
7
- * modification hooks, and event dispatching.
6
+ * Authorization-enforcing wrapper around a {@link PhysicalStore}. The
7
+ * recommended write gateway for application code — `furystack/no-direct-store-token`
8
+ * enforces this. Each mutation runs the relevant `authorize*` and
9
+ * `modify*` callbacks from {@link DataSetSettings}, persists, then emits
10
+ * `onEntityAdded` / `onEntityUpdated` / `onEntityRemoved` (consumed by
11
+ * entity sync, audit logs).
8
12
  *
9
- * The DataSet is the **recommended write gateway** for all entity mutations. Writing through the DataSet
10
- * ensures that authorization rules are enforced, modification hooks are applied, and change events
11
- * (`onEntityAdded`, `onEntityUpdated`, `onEntityRemoved`) are emitted -- which are required for features
12
- * like entity sync to function correctly.
13
- *
14
- * All mutating methods require an `injector` parameter that provides the caller's context (e.g. the current
15
- * user's identity). For server-side or background operations that don't originate from an HTTP request,
16
- * use {@link useSystemIdentityContext} to create a scoped child injector with elevated privileges.
13
+ * Mutating methods take an `injector` parameter to surface caller identity
14
+ * to the authorizers. For server-side / background work without an HTTP
15
+ * request, wrap the injector with `useSystemIdentityContext` from
16
+ * `@furystack/core`.
17
17
  *
18
18
  * @example
19
19
  * ```ts
20
- * import { useSystemIdentityContext } from '@furystack/core'
21
- * import { getDataSetFor } from '@furystack/repository'
22
- * import { usingAsync } from '@furystack/utils'
23
- *
24
- * // Server-side write with an elevated identity
25
20
  * await usingAsync(
26
21
  * useSystemIdentityContext({ injector, username: 'background-job' }),
27
22
  * async (systemInjector) => {
28
- * const dataSet = getDataSetFor(systemInjector, MyModel, 'id')
29
- * await dataSet.add(systemInjector, newEntity)
23
+ * const dataSet = getDataSetFor(systemInjector, UserDataSet)
24
+ * await dataSet.add(systemInjector, { username: 'alice', roles: [] })
30
25
  * },
31
26
  * )
32
27
  * ```
@@ -48,64 +43,18 @@ export declare class DataSet<T, TPrimaryKey extends keyof T, TWritableData = Wit
48
43
  onListenerError: ListenerErrorPayload;
49
44
  }> implements Disposable {
50
45
  readonly settings: DataSetSettings<T, TPrimaryKey, TWritableData>;
51
- /**
52
- * Primary key of the contained entity
53
- */
54
46
  primaryKey: TPrimaryKey;
55
- /**
56
- * Adds an entity to the DataSet.
57
- * Runs authorization checks, applies modification hooks, persists to the physical store,
58
- * and emits an `onEntityAdded` event for each created entity.
59
- * @param injector The injector from the caller's context. For server-side or background operations
60
- * without an HTTP request, use a child injector with an elevated {@link IdentityContext}.
61
- * @param entities The entities to add
62
- * @returns The CreateResult with the created entities
63
- */
64
47
  add(injector: Injector, ...entities: TWritableData[]): Promise<CreateResult<T>>;
65
- /**
66
- * Updates an entity in the store.
67
- * Runs authorization checks, applies modification hooks, persists to the physical store,
68
- * and emits an `onEntityUpdated` event.
69
- * @param injector The injector from the caller's context. For server-side or background operations
70
- * without an HTTP request, use a child injector with an elevated {@link IdentityContext}.
71
- * @param id The identifier of the entity
72
- * @param change The update
73
- */
74
48
  update(injector: Injector, id: T[TPrimaryKey], change: Partial<T>): Promise<void>;
75
- /**
76
- * Returns a Promise with the entity count
77
- * @param injector The Injector from the context
78
- * @param filter The Filter that will be applied
79
- * @returns the Count
80
- */
81
49
  count(injector: Injector, filter?: FilterType<T>): Promise<number>;
82
- /**
83
- * Returns a filtered subset of the entity
84
- * @param injector The Injector from the context
85
- * @param filter The Filter definition
86
- * @returns A result with the current items
87
- */
88
50
  find<TFields extends Array<keyof T>>(injector: Injector, filter: FindOptions<T, TFields>): Promise<Array<PartialResult<T, TFields>>>;
89
- /**
90
- * Returns an entity based on its primary key
91
- * @param injector The injector from the context
92
- * @param key The identifier of the entity
93
- * @param select A field list used for projection
94
- * @returns An item with the current unique key or Undefined
95
- */
96
51
  get<TSelect extends Array<keyof T>>(injector: Injector, key: T[TPrimaryKey], select?: TSelect): Promise<PartialResult<T, TSelect> | undefined>;
97
52
  /**
98
- * Removes one or more entities based on their primary keys.
99
- * Runs authorization checks (all-or-nothing), persists to the physical store,
100
- * and emits an `onEntityRemoved` event for each removed entity.
101
- *
102
- * When `authorizeRemoveEntity` is configured, only entities that exist in the store
103
- * are authorized. Keys that don't match any entity are silently forwarded to the
104
- * physical store's `remove()` call.
105
- * @param injector The injector from the caller's context. For server-side or background operations
106
- * without an HTTP request, use a child injector with an elevated {@link IdentityContext}.
107
- * @param keys The primary keys of the entities to remove
108
- * @returns A promise that will be resolved / rejected based on the remove success
53
+ * Removes by primary key. Pre-load `authorizeRemove` and per-entity
54
+ * `authorizeRemoveEntity` are all-or-nothing — any rejection aborts the
55
+ * whole batch before any persist call. When `authorizeRemoveEntity` is
56
+ * configured, missing keys are silently forwarded to the physical store
57
+ * (no entity to authorize).
109
58
  */
110
59
  remove(injector: Injector, ...keys: Array<T[TPrimaryKey]>): Promise<void>;
111
60
  constructor(settings: DataSetSettings<T, TPrimaryKey, TWritableData>);
@@ -1 +1 @@
1
- {"version":3,"file":"data-set.d.ts","sourceRoot":"","sources":["../src/data-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAE3G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,OAAO,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,CACjG,SAAQ,QAAQ,CAAC;IACf,aAAa,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,CAAC,CAAA;KAAE,CAAA;IAChD,eAAe,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,CAAA;IAC/E,eAAe,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;KAAE,CAAA;IAC5D,eAAe,EAAE,oBAAoB,CAAA;CACtC,CACD,YAAW,UAAU;aAwLO,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC;IAtLpF;;OAEG;IACI,UAAU,EAAE,WAAW,CAAA;IAE9B;;;;;;;;OAQG;IACU,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAyB5F;;;;;;;;OAQG;IACU,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB9F;;;;;OAKG;IACU,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAU/E;;;;;OAKG;IACU,IAAI,CAAC,OAAO,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,EAC9C,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAW5C;;;;;;OAMG;IACU,GAAG,CAAC,OAAO,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,EAC7C,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,EACnB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAwBjD;;;;;;;;;;;;OAYG;IACU,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;gBA2B1D,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC;CAIrF"}
1
+ {"version":3,"file":"data-set.d.ts","sourceRoot":"","sources":["../src/data-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EAEb,cAAc,EACf,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,OAAO,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,CACjG,SAAQ,QAAQ,CAAC;IACf,aAAa,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,CAAC,CAAA;KAAE,CAAA;IAChD,eAAe,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,CAAA;IAC/E,eAAe,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;KAAE,CAAA;IAC5D,eAAe,EAAE,oBAAoB,CAAA;CACtC,CACD,YAAW,UAAU;aA0IO,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC;IAxI7E,UAAU,EAAE,WAAW,CAAA;IAEjB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAyB/E,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBjF,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAUlE,IAAI,CAAC,OAAO,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,EAC9C,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAW/B,GAAG,CAAC,OAAO,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,EAC7C,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,EACnB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAwBjD;;;;;;OAMG;IACU,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;gBA2B1D,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC;CAIrF"}
package/esm/data-set.js CHANGED
@@ -1,49 +1,32 @@
1
1
  import { AuthorizationError, selectFields } from '@furystack/core';
2
2
  import { EventHub } from '@furystack/utils';
3
3
  /**
4
- * An authorized Repository Store instance that wraps a {@link PhysicalStore} with authorization,
5
- * modification hooks, and event dispatching.
4
+ * Authorization-enforcing wrapper around a {@link PhysicalStore}. The
5
+ * recommended write gateway for application code — `furystack/no-direct-store-token`
6
+ * enforces this. Each mutation runs the relevant `authorize*` and
7
+ * `modify*` callbacks from {@link DataSetSettings}, persists, then emits
8
+ * `onEntityAdded` / `onEntityUpdated` / `onEntityRemoved` (consumed by
9
+ * entity sync, audit logs).
6
10
  *
7
- * The DataSet is the **recommended write gateway** for all entity mutations. Writing through the DataSet
8
- * ensures that authorization rules are enforced, modification hooks are applied, and change events
9
- * (`onEntityAdded`, `onEntityUpdated`, `onEntityRemoved`) are emitted -- which are required for features
10
- * like entity sync to function correctly.
11
- *
12
- * All mutating methods require an `injector` parameter that provides the caller's context (e.g. the current
13
- * user's identity). For server-side or background operations that don't originate from an HTTP request,
14
- * use {@link useSystemIdentityContext} to create a scoped child injector with elevated privileges.
11
+ * Mutating methods take an `injector` parameter to surface caller identity
12
+ * to the authorizers. For server-side / background work without an HTTP
13
+ * request, wrap the injector with `useSystemIdentityContext` from
14
+ * `@furystack/core`.
15
15
  *
16
16
  * @example
17
17
  * ```ts
18
- * import { useSystemIdentityContext } from '@furystack/core'
19
- * import { getDataSetFor } from '@furystack/repository'
20
- * import { usingAsync } from '@furystack/utils'
21
- *
22
- * // Server-side write with an elevated identity
23
18
  * await usingAsync(
24
19
  * useSystemIdentityContext({ injector, username: 'background-job' }),
25
20
  * async (systemInjector) => {
26
- * const dataSet = getDataSetFor(systemInjector, MyModel, 'id')
27
- * await dataSet.add(systemInjector, newEntity)
21
+ * const dataSet = getDataSetFor(systemInjector, UserDataSet)
22
+ * await dataSet.add(systemInjector, { username: 'alice', roles: [] })
28
23
  * },
29
24
  * )
30
25
  * ```
31
26
  */
32
27
  export class DataSet extends EventHub {
33
28
  settings;
34
- /**
35
- * Primary key of the contained entity
36
- */
37
29
  primaryKey;
38
- /**
39
- * Adds an entity to the DataSet.
40
- * Runs authorization checks, applies modification hooks, persists to the physical store,
41
- * and emits an `onEntityAdded` event for each created entity.
42
- * @param injector The injector from the caller's context. For server-side or background operations
43
- * without an HTTP request, use a child injector with an elevated {@link IdentityContext}.
44
- * @param entities The entities to add
45
- * @returns The CreateResult with the created entities
46
- */
47
30
  async add(injector, ...entities) {
48
31
  await Promise.all(entities.map(async (entity) => {
49
32
  if (this.settings.authorizeAdd) {
@@ -62,15 +45,6 @@ export class DataSet extends EventHub {
62
45
  });
63
46
  return createResult;
64
47
  }
65
- /**
66
- * Updates an entity in the store.
67
- * Runs authorization checks, applies modification hooks, persists to the physical store,
68
- * and emits an `onEntityUpdated` event.
69
- * @param injector The injector from the caller's context. For server-side or background operations
70
- * without an HTTP request, use a child injector with an elevated {@link IdentityContext}.
71
- * @param id The identifier of the entity
72
- * @param change The update
73
- */
74
48
  async update(injector, id, change) {
75
49
  if (this.settings.authorizeUpdate) {
76
50
  const result = await this.settings.authorizeUpdate({ injector, change });
@@ -93,12 +67,6 @@ export class DataSet extends EventHub {
93
67
  await this.settings.physicalStore.update(id, parsed);
94
68
  this.emit('onEntityUpdated', { injector, change: parsed, id });
95
69
  }
96
- /**
97
- * Returns a Promise with the entity count
98
- * @param injector The Injector from the context
99
- * @param filter The Filter that will be applied
100
- * @returns the Count
101
- */
102
70
  async count(injector, filter) {
103
71
  if (this.settings.authorizeGet) {
104
72
  const result = await this.settings.authorizeGet({ injector });
@@ -108,12 +76,6 @@ export class DataSet extends EventHub {
108
76
  }
109
77
  return await this.settings.physicalStore.count(filter);
110
78
  }
111
- /**
112
- * Returns a filtered subset of the entity
113
- * @param injector The Injector from the context
114
- * @param filter The Filter definition
115
- * @returns A result with the current items
116
- */
117
79
  async find(injector, filter) {
118
80
  if (this.settings.authorizeGet) {
119
81
  const result = await this.settings.authorizeGet({ injector });
@@ -124,13 +86,6 @@ export class DataSet extends EventHub {
124
86
  const parsedFilter = this.settings.addFilter ? await this.settings.addFilter({ injector, filter }) : filter;
125
87
  return this.settings.physicalStore.find(parsedFilter);
126
88
  }
127
- /**
128
- * Returns an entity based on its primary key
129
- * @param injector The injector from the context
130
- * @param key The identifier of the entity
131
- * @param select A field list used for projection
132
- * @returns An item with the current unique key or Undefined
133
- */
134
89
  async get(injector, key, select) {
135
90
  if (this.settings.authorizeGet) {
136
91
  const result = await this.settings.authorizeGet({ injector });
@@ -155,17 +110,11 @@ export class DataSet extends EventHub {
155
110
  return await this.settings.physicalStore.get(key, select);
156
111
  }
157
112
  /**
158
- * Removes one or more entities based on their primary keys.
159
- * Runs authorization checks (all-or-nothing), persists to the physical store,
160
- * and emits an `onEntityRemoved` event for each removed entity.
161
- *
162
- * When `authorizeRemoveEntity` is configured, only entities that exist in the store
163
- * are authorized. Keys that don't match any entity are silently forwarded to the
164
- * physical store's `remove()` call.
165
- * @param injector The injector from the caller's context. For server-side or background operations
166
- * without an HTTP request, use a child injector with an elevated {@link IdentityContext}.
167
- * @param keys The primary keys of the entities to remove
168
- * @returns A promise that will be resolved / rejected based on the remove success
113
+ * Removes by primary key. Pre-load `authorizeRemove` and per-entity
114
+ * `authorizeRemoveEntity` are all-or-nothing — any rejection aborts the
115
+ * whole batch before any persist call. When `authorizeRemoveEntity` is
116
+ * configured, missing keys are silently forwarded to the physical store
117
+ * (no entity to authorize).
169
118
  */
170
119
  async remove(injector, ...keys) {
171
120
  if (keys.length === 0) {
@@ -182,7 +131,7 @@ export class DataSet extends EventHub {
182
131
  filter: { [this.primaryKey]: { $in: keys } },
183
132
  });
184
133
  await Promise.all(entities.map(async (entity) => {
185
- const removeResult = await this.settings.authorizeRemoveEntity({ injector, entity: entity });
134
+ const removeResult = await this.settings.authorizeRemoveEntity({ injector, entity });
186
135
  if (!removeResult.isAllowed) {
187
136
  throw new AuthorizationError(removeResult.message);
188
137
  }
@@ -1 +1 @@
1
- {"version":3,"file":"data-set.js","sourceRoot":"","sources":["../src/data-set.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-set.js","sourceRoot":"","sources":["../src/data-set.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-set.spec.js","sourceRoot":"","sources":["../src/data-set.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-set.spec.js","sourceRoot":"","sources":["../src/data-set.spec.ts"],"names":[],"mappings":"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"}
@@ -31,38 +31,20 @@ export type DefineDataSetSettings<T, TPrimaryKey extends keyof T, TWritableData
31
31
  */
32
32
  export type DefineDataSetOptions<T, TPrimaryKey extends keyof T, TWritableData = WithOptionalId<T, TPrimaryKey>> = {
33
33
  /**
34
- * Human-readable identifier used for debug/readability. Token identity is
35
- * established by the returned {@link DataSetToken} object reference.
34
+ * Debug-only identifier. Token identity is established by the returned
35
+ * {@link DataSetToken} object reference, not this string.
36
36
  */
37
37
  name: string;
38
- /**
39
- * The store this data set is backed by. Its `model` and `primaryKey` are
40
- * propagated onto the returned token.
41
- */
38
+ /** Backing store; its `model` and `primaryKey` propagate to the returned token. */
42
39
  store: StoreToken<T, TPrimaryKey>;
43
- /**
44
- * Authorizers, modification hooks and filter post-processors. Optional —
45
- * a data set without settings performs no authorization and forwards
46
- * operations straight to the physical store.
47
- */
48
40
  settings?: NoInfer<DefineDataSetSettings<T, TPrimaryKey, TWritableData>>;
49
41
  };
50
42
  /**
51
- * Defines a {@link DataSet} as a first-class DI token backed by a
52
- * {@link StoreToken}.
53
- *
54
- * The returned token resolves to a singleton `DataSet`. On the first
55
- * resolution the factory:
56
- *
57
- * 1. Resolves the backing physical store through the injector.
58
- * 2. Constructs a {@link DataSet} with the supplied {@link DefineDataSetSettings}
59
- * and that store.
60
- * 3. Registers a disposal callback that clears the DataSet's event
61
- * subscriptions when the owning injector is disposed.
62
- *
63
- * The token also carries the `model` and `primaryKey` of the backing store so
64
- * that downstream tooling (entity sync, OpenAPI generators, test harnesses)
65
- * can discover the dataset's shape without additional wiring.
43
+ * Defines a singleton {@link DataSet} token backed by a {@link StoreToken}.
44
+ * The token mirrors the store's `model` and `primaryKey` so reflection
45
+ * tools (entity sync, OpenAPI generators, test harnesses) can discover the
46
+ * dataset's shape from the token alone. Disposal of the owning injector
47
+ * tears down the dataset's event subscriptions.
66
48
  *
67
49
  * @example
68
50
  * ```ts
@@ -1 +1 @@
1
- {"version":3,"file":"define-data-set.d.ts","sourceRoot":"","sources":["../src/define-data-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAiB,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC/F,OAAO,KAAK,EAAkB,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAkBvC;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,KAAK,CAC9G,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,EACtC,WAAW,CACZ,GAAG;IACF,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAA;CACjC,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,CAC/B,CAAC,EACD,WAAW,SAAS,MAAM,CAAC,EAC3B,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,IAC5C,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAA;AAEzE;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI;IACjH;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAA;CACzE,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,KAAK,CAAC,WAAW,SAAS,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,EAChH,SAAS,oBAAoB,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,KAC3D,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAsB5C,CAAA"}
1
+ {"version":3,"file":"define-data-set.d.ts","sourceRoot":"","sources":["../src/define-data-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAiB,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC/F,OAAO,KAAK,EAAkB,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAkBvC;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI,KAAK,CAC9G,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,EACtC,WAAW,CACZ,GAAG;IACF,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAA;CACjC,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,CAC/B,CAAC,EACD,WAAW,SAAS,MAAM,CAAC,EAC3B,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,IAC5C,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAA;AAEzE;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,IAAI;IACjH;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ,mFAAmF;IACnF,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAA;CACzE,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,KAAK,CAAC,WAAW,SAAS,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,EAChH,SAAS,oBAAoB,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,KAC3D,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAsB5C,CAAA"}
@@ -12,21 +12,11 @@ import { DataSet } from './data-set.js';
12
12
  */
13
13
  const resolvePhysicalStore = (ctx, store) => ctx.inject(store);
14
14
  /**
15
- * Defines a {@link DataSet} as a first-class DI token backed by a
16
- * {@link StoreToken}.
17
- *
18
- * The returned token resolves to a singleton `DataSet`. On the first
19
- * resolution the factory:
20
- *
21
- * 1. Resolves the backing physical store through the injector.
22
- * 2. Constructs a {@link DataSet} with the supplied {@link DefineDataSetSettings}
23
- * and that store.
24
- * 3. Registers a disposal callback that clears the DataSet's event
25
- * subscriptions when the owning injector is disposed.
26
- *
27
- * The token also carries the `model` and `primaryKey` of the backing store so
28
- * that downstream tooling (entity sync, OpenAPI generators, test harnesses)
29
- * can discover the dataset's shape without additional wiring.
15
+ * Defines a singleton {@link DataSet} token backed by a {@link StoreToken}.
16
+ * The token mirrors the store's `model` and `primaryKey` so reflection
17
+ * tools (entity sync, OpenAPI generators, test harnesses) can discover the
18
+ * dataset's shape from the token alone. Disposal of the owning injector
19
+ * tears down the dataset's event subscriptions.
30
20
  *
31
21
  * @example
32
22
  * ```ts
@@ -1 +1 @@
1
- {"version":3,"file":"define-data-set.js","sourceRoot":"","sources":["../src/define-data-set.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC;;;;;;;;;GASG;AACH,MAAM,oBAAoB,GAAG,CAC3B,GAAgC,EAChC,KAAiC,EACa,EAAE,CAChD,GAAG,CAAC,MAAM,CAAC,KAAK,CAA4D,CAAA;AAyD9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAA4D,EACf,EAAE;IAC/C,MAAM,KAAK,GAAG,aAAa,CAAC;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,CAAC,GAAgC,EAAE,EAAE;YAC5C,MAAM,aAAa,GAAG,oBAAoB,CAAgC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;YAC7F,MAAM,OAAO,GAAG,IAAI,OAAO,CAAgC;gBACzD,GAAG,OAAO,CAAC,QAAQ;gBACnB,aAAa;aACoC,CAAC,CAAA;YACpD,qEAAqE;YACrE,uEAAuE;YACvE,0DAA0D;YAC1D,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC9C,OAAO,OAAO,CAAA;QAChB,CAAC;KACF,CAAC,CAAA;IACF,MAAM,MAAM,GAAgD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;QAC/E,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;QAC1B,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;KACrC,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
1
+ {"version":3,"file":"define-data-set.js","sourceRoot":"","sources":["../src/define-data-set.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC;;;;;;;;;GASG;AACH,MAAM,oBAAoB,GAAG,CAC3B,GAAgC,EAChC,KAAiC,EACa,EAAE,CAChD,GAAG,CAAC,MAAM,CAAC,KAAK,CAA4D,CAAA;AAiD9E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAA4D,EACf,EAAE;IAC/C,MAAM,KAAK,GAAG,aAAa,CAAC;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,CAAC,GAAgC,EAAE,EAAE;YAC5C,MAAM,aAAa,GAAG,oBAAoB,CAAgC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;YAC7F,MAAM,OAAO,GAAG,IAAI,OAAO,CAAgC;gBACzD,GAAG,OAAO,CAAC,QAAQ;gBACnB,aAAa;aACd,CAAC,CAAA;YACF,qEAAqE;YACrE,uEAAuE;YACvE,0DAA0D;YAC1D,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC9C,OAAO,OAAO,CAAA;QAChB,CAAC;KACF,CAAC,CAAA;IACF,MAAM,MAAM,GAAgD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;QAC/E,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;QAC1B,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;KACrC,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
package/esm/helpers.d.ts CHANGED
@@ -3,30 +3,14 @@ import type { Injector } from '@furystack/inject';
3
3
  import type { DataSet } from './data-set.js';
4
4
  import type { DataSetToken } from './define-data-set.js';
5
5
  /**
6
- * Resolves the {@link DataSet} identified by the supplied {@link DataSetToken}
7
- * on the given injector.
8
- *
9
- * Writing through the returned DataSet ensures authorization, modification
10
- * hooks and change events (required for features such as entity sync) are
11
- * triggered. Prefer this over direct physical-store access in application
12
- * code.
13
- *
14
- * For server-side or background operations that don't originate from an HTTP
15
- * request, use
16
- * {@link import('@furystack/core').useSystemIdentityContext | useSystemIdentityContext}
17
- * to create a scoped child injector with elevated privileges before calling
18
- * this helper.
19
- *
20
- * @param injector - Any injector in the scope chain.
21
- * @param token - The data-set token created by `defineDataSet`.
22
- * @returns The cached {@link DataSet} instance.
6
+ * Resolves the {@link DataSet} for `token` on `injector`. The preferred
7
+ * write gateway for application code — `furystack/no-direct-store-token`
8
+ * forbids resolving the underlying `StoreToken` directly. For server-side
9
+ * or background work, wrap `injector` with `useSystemIdentityContext` from
10
+ * `@furystack/core` to obtain an elevated identity before calling this.
23
11
  *
24
12
  * @example
25
13
  * ```ts
26
- * import { useSystemIdentityContext } from '@furystack/core'
27
- * import { getDataSetFor } from '@furystack/repository'
28
- * import { usingAsync } from '@furystack/utils'
29
- *
30
14
  * await usingAsync(
31
15
  * useSystemIdentityContext({ injector, username: 'background-job' }),
32
16
  * async (systemInjector) => {
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,EAC1G,UAAU,QAAQ,EAClB,OAAO,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,KACjD,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAwB,CAAA"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,EAC1G,UAAU,QAAQ,EAClB,OAAO,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,KACjD,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAwB,CAAA"}
package/esm/helpers.js CHANGED
@@ -1,28 +1,12 @@
1
1
  /**
2
- * Resolves the {@link DataSet} identified by the supplied {@link DataSetToken}
3
- * on the given injector.
4
- *
5
- * Writing through the returned DataSet ensures authorization, modification
6
- * hooks and change events (required for features such as entity sync) are
7
- * triggered. Prefer this over direct physical-store access in application
8
- * code.
9
- *
10
- * For server-side or background operations that don't originate from an HTTP
11
- * request, use
12
- * {@link import('@furystack/core').useSystemIdentityContext | useSystemIdentityContext}
13
- * to create a scoped child injector with elevated privileges before calling
14
- * this helper.
15
- *
16
- * @param injector - Any injector in the scope chain.
17
- * @param token - The data-set token created by `defineDataSet`.
18
- * @returns The cached {@link DataSet} instance.
2
+ * Resolves the {@link DataSet} for `token` on `injector`. The preferred
3
+ * write gateway for application code — `furystack/no-direct-store-token`
4
+ * forbids resolving the underlying `StoreToken` directly. For server-side
5
+ * or background work, wrap `injector` with `useSystemIdentityContext` from
6
+ * `@furystack/core` to obtain an elevated identity before calling this.
19
7
  *
20
8
  * @example
21
9
  * ```ts
22
- * import { useSystemIdentityContext } from '@furystack/core'
23
- * import { getDataSetFor } from '@furystack/repository'
24
- * import { usingAsync } from '@furystack/utils'
25
- *
26
10
  * await usingAsync(
27
11
  * useSystemIdentityContext({ injector, username: 'background-job' }),
28
12
  * async (systemInjector) => {
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAAkB,EAClB,KAAkD,EACV,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAAkB,EAClB,KAAkD,EACV,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@furystack/repository",
3
- "version": "11.0.0",
3
+ "version": "11.0.1",
4
4
  "description": "Repository implementation for FuryStack",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -38,13 +38,13 @@
38
38
  },
39
39
  "homepage": "https://github.com/furystack/furystack",
40
40
  "dependencies": {
41
- "@furystack/core": "^17.0.0",
42
- "@furystack/inject": "^13.0.0",
43
- "@furystack/utils": "^9.0.0"
41
+ "@furystack/core": "^17.1.0",
42
+ "@furystack/inject": "^13.0.1",
43
+ "@furystack/utils": "^9.0.1"
44
44
  },
45
45
  "devDependencies": {
46
46
  "typescript": "^6.0.3",
47
- "vitest": "^4.1.4"
47
+ "vitest": "^4.1.7"
48
48
  },
49
49
  "engines": {
50
50
  "node": ">=22.0.0"
@@ -1,90 +1,76 @@
1
- import type { FindOptions, PhysicalStore, WithOptionalId } from '@furystack/core'
1
+ import type { AuthorizationError, FindOptions, PhysicalStore, WithOptionalId } from '@furystack/core'
2
2
  import type { Injector } from '@furystack/inject'
3
+ import type { DataSet } from './data-set.js'
3
4
 
4
- /**
5
- * The result model returned by authorizers
6
- */
5
+ /** Discriminated union returned by authorizer callbacks. */
7
6
  export type AuthorizationResult = SuccessfullyValidationResult | FailedValidationResult
8
7
 
9
8
  export interface SuccessfullyValidationResult {
10
- /**
11
- * Indicates if the validation was successful
12
- */
13
9
  isAllowed: true
14
10
  }
15
11
 
16
12
  export interface FailedValidationResult {
17
- /**
18
- * Indicates if the validation was successful
19
- */
20
-
21
13
  isAllowed: false
22
- /**
23
- * The error message string
24
- */
14
+ /** Surfaced as the message of the thrown {@link AuthorizationError}. */
25
15
  message: string
26
16
  }
27
17
 
28
18
  /**
29
- * Model for authorizers
19
+ * Configuration for a {@link DataSet}: backing store + authorization +
20
+ * modification hooks + filter post-processing. Every callback is optional —
21
+ * an empty `DataSetSettings` performs no checks and forwards calls straight
22
+ * to the physical store.
23
+ *
24
+ * Authorization callbacks come in two flavours:
25
+ *
26
+ * - `authorizeX` — runs **before** the entity is loaded. Use for cheap,
27
+ * identity-only checks ("is the user logged in?", "is the user an admin?").
28
+ * When omitted, no pre-check is performed.
29
+ * - `authorizeXEntity` — runs **after** the entity is loaded, with the
30
+ * loaded entity in scope. Use for ownership / row-level checks. Missing
31
+ * entities skip the per-entity check entirely.
32
+ *
33
+ * A callback returning `{ isAllowed: false }` makes the operation throw
34
+ * {@link AuthorizationError}.
30
35
  */
31
36
  export interface DataSetSettings<T, TPrimaryKey extends keyof T, TWritableData = WithOptionalId<T, TPrimaryKey>> {
32
- /**
33
- * An instance of a physical store
34
- */
35
37
  physicalStore: PhysicalStore<T, TPrimaryKey, TWritableData>
36
38
 
37
- /**
38
- * Authorizes the entity creation
39
- */
39
+ /** Pre-persist authorization for `add`. */
40
40
  authorizeAdd?: (options: { injector: Injector; entity: TWritableData }) => Promise<AuthorizationResult>
41
41
 
42
- /**
43
- * modifies an entity before persisting on creation
44
- */
42
+ /** Pre-persist mutation for `add` (default fields, hashing, normalisation). */
45
43
  modifyOnAdd?: (options: { injector: Injector; entity: TWritableData }) => Promise<TWritableData>
46
44
 
47
- /**
48
- * Authorizes entity updates (before the entity gets loaded from the store)
49
- */
45
+ /** Pre-load authorization for `update`. Sees the change, not the entity. */
50
46
  authorizeUpdate?: (options: { injector: Injector; change: Partial<T> }) => Promise<AuthorizationResult>
51
47
 
52
- /**
53
- * Authorizes entity updates per loaded entity
54
- */
48
+ /** Post-load authorization for `update`. Sees both the loaded entity and the change. */
55
49
  authorizeUpdateEntity?: (options: {
56
50
  injector: Injector
57
51
  entity: T
58
52
  change: Partial<T>
59
53
  }) => Promise<AuthorizationResult>
60
54
 
61
- /**
62
- * modifies an entity before persisting on update
63
- */
55
+ /** Pre-persist mutation for `update`. */
64
56
  modifyOnUpdate?: (options: { injector: Injector; id: T[keyof T]; entity: Partial<T> }) => Promise<Partial<T>>
65
57
 
66
- /**
67
- * Authorizes entity removal (before the entity gets loaded from the store)
68
- */
58
+ /** Pre-load authorization for `remove`. */
69
59
  authorizeRemove?: (options: { injector: Injector }) => Promise<AuthorizationResult>
70
60
 
71
- /**
72
- * Authorizes entity removal per loaded entity
73
- */
61
+ /** Post-load authorization for `remove`, per loaded entity. */
74
62
  authorizeRemoveEntity?: (options: { injector: Injector; entity: T }) => Promise<AuthorizationResult>
75
63
 
76
- /**
77
- * Authorizes entity retrieval without entity loading
78
- */
64
+ /** Pre-load authorization for `get` / `find` / `count`. No entity in scope. */
79
65
  authorizeGet?: (options: { injector: Injector }) => Promise<AuthorizationResult>
80
66
 
81
- /**
82
- * Authorizes entity retrieval
83
- */
67
+ /** Post-load authorization for `get`, per loaded entity. */
84
68
  authorizeGetEntity?: (options: { injector: Injector; entity: T }) => Promise<AuthorizationResult>
85
69
 
86
70
  /**
87
- * Additional filter parsing to be appended per filter / query
71
+ * Filter post-processor. Receives the caller's {@link FindOptions} and
72
+ * returns a (potentially augmented) one. Use to inject mandatory clauses
73
+ * (tenant scoping, soft-delete masks) the caller cannot bypass.
88
74
  */
89
75
  addFilter?: <TFields extends Array<keyof T>>(options: {
90
76
  injector: Injector
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion -- false positives: discriminated `AuthorizationResult` mocks need explicit casts so vi.fn return types match the union (rule's tsutils-based check disagrees with tsc) */
1
2
  import type { StoreToken, WithOptionalId } from '@furystack/core'
2
3
  import { AuthorizationError, defineStore, InMemoryStore } from '@furystack/core'
3
4
  import { createInjector, type Injector } from '@furystack/inject'
package/src/data-set.ts CHANGED
@@ -1,34 +1,36 @@
1
- import type { CreateResult, FilterType, FindOptions, PartialResult, WithOptionalId } from '@furystack/core'
1
+ import type {
2
+ CreateResult,
3
+ FilterType,
4
+ FindOptions,
5
+ PartialResult,
6
+ PhysicalStore,
7
+ WithOptionalId,
8
+ } from '@furystack/core'
2
9
  import { AuthorizationError, selectFields } from '@furystack/core'
3
10
  import type { Injector } from '@furystack/inject'
4
11
  import { EventHub, type ListenerErrorPayload } from '@furystack/utils'
5
12
  import type { DataSetSettings } from './data-set-setting.js'
6
13
 
7
14
  /**
8
- * An authorized Repository Store instance that wraps a {@link PhysicalStore} with authorization,
9
- * modification hooks, and event dispatching.
15
+ * Authorization-enforcing wrapper around a {@link PhysicalStore}. The
16
+ * recommended write gateway for application code — `furystack/no-direct-store-token`
17
+ * enforces this. Each mutation runs the relevant `authorize*` and
18
+ * `modify*` callbacks from {@link DataSetSettings}, persists, then emits
19
+ * `onEntityAdded` / `onEntityUpdated` / `onEntityRemoved` (consumed by
20
+ * entity sync, audit logs).
10
21
  *
11
- * The DataSet is the **recommended write gateway** for all entity mutations. Writing through the DataSet
12
- * ensures that authorization rules are enforced, modification hooks are applied, and change events
13
- * (`onEntityAdded`, `onEntityUpdated`, `onEntityRemoved`) are emitted -- which are required for features
14
- * like entity sync to function correctly.
15
- *
16
- * All mutating methods require an `injector` parameter that provides the caller's context (e.g. the current
17
- * user's identity). For server-side or background operations that don't originate from an HTTP request,
18
- * use {@link useSystemIdentityContext} to create a scoped child injector with elevated privileges.
22
+ * Mutating methods take an `injector` parameter to surface caller identity
23
+ * to the authorizers. For server-side / background work without an HTTP
24
+ * request, wrap the injector with `useSystemIdentityContext` from
25
+ * `@furystack/core`.
19
26
  *
20
27
  * @example
21
28
  * ```ts
22
- * import { useSystemIdentityContext } from '@furystack/core'
23
- * import { getDataSetFor } from '@furystack/repository'
24
- * import { usingAsync } from '@furystack/utils'
25
- *
26
- * // Server-side write with an elevated identity
27
29
  * await usingAsync(
28
30
  * useSystemIdentityContext({ injector, username: 'background-job' }),
29
31
  * async (systemInjector) => {
30
- * const dataSet = getDataSetFor(systemInjector, MyModel, 'id')
31
- * await dataSet.add(systemInjector, newEntity)
32
+ * const dataSet = getDataSetFor(systemInjector, UserDataSet)
33
+ * await dataSet.add(systemInjector, { username: 'alice', roles: [] })
32
34
  * },
33
35
  * )
34
36
  * ```
@@ -42,20 +44,8 @@ export class DataSet<T, TPrimaryKey extends keyof T, TWritableData = WithOptiona
42
44
  }>
43
45
  implements Disposable
44
46
  {
45
- /**
46
- * Primary key of the contained entity
47
- */
48
47
  public primaryKey: TPrimaryKey
49
48
 
50
- /**
51
- * Adds an entity to the DataSet.
52
- * Runs authorization checks, applies modification hooks, persists to the physical store,
53
- * and emits an `onEntityAdded` event for each created entity.
54
- * @param injector The injector from the caller's context. For server-side or background operations
55
- * without an HTTP request, use a child injector with an elevated {@link IdentityContext}.
56
- * @param entities The entities to add
57
- * @returns The CreateResult with the created entities
58
- */
59
49
  public async add(injector: Injector, ...entities: TWritableData[]): Promise<CreateResult<T>> {
60
50
  await Promise.all(
61
51
  entities.map(async (entity) => {
@@ -81,15 +71,6 @@ export class DataSet<T, TPrimaryKey extends keyof T, TWritableData = WithOptiona
81
71
  return createResult
82
72
  }
83
73
 
84
- /**
85
- * Updates an entity in the store.
86
- * Runs authorization checks, applies modification hooks, persists to the physical store,
87
- * and emits an `onEntityUpdated` event.
88
- * @param injector The injector from the caller's context. For server-side or background operations
89
- * without an HTTP request, use a child injector with an elevated {@link IdentityContext}.
90
- * @param id The identifier of the entity
91
- * @param change The update
92
- */
93
74
  public async update(injector: Injector, id: T[TPrimaryKey], change: Partial<T>): Promise<void> {
94
75
  if (this.settings.authorizeUpdate) {
95
76
  const result = await this.settings.authorizeUpdate({ injector, change })
@@ -113,12 +94,6 @@ export class DataSet<T, TPrimaryKey extends keyof T, TWritableData = WithOptiona
113
94
  this.emit('onEntityUpdated', { injector, change: parsed, id })
114
95
  }
115
96
 
116
- /**
117
- * Returns a Promise with the entity count
118
- * @param injector The Injector from the context
119
- * @param filter The Filter that will be applied
120
- * @returns the Count
121
- */
122
97
  public async count(injector: Injector, filter?: FilterType<T>): Promise<number> {
123
98
  if (this.settings.authorizeGet) {
124
99
  const result = await this.settings.authorizeGet({ injector })
@@ -129,12 +104,6 @@ export class DataSet<T, TPrimaryKey extends keyof T, TWritableData = WithOptiona
129
104
  return await this.settings.physicalStore.count(filter)
130
105
  }
131
106
 
132
- /**
133
- * Returns a filtered subset of the entity
134
- * @param injector The Injector from the context
135
- * @param filter The Filter definition
136
- * @returns A result with the current items
137
- */
138
107
  public async find<TFields extends Array<keyof T>>(
139
108
  injector: Injector,
140
109
  filter: FindOptions<T, TFields>,
@@ -149,13 +118,6 @@ export class DataSet<T, TPrimaryKey extends keyof T, TWritableData = WithOptiona
149
118
  return this.settings.physicalStore.find(parsedFilter)
150
119
  }
151
120
 
152
- /**
153
- * Returns an entity based on its primary key
154
- * @param injector The injector from the context
155
- * @param key The identifier of the entity
156
- * @param select A field list used for projection
157
- * @returns An item with the current unique key or Undefined
158
- */
159
121
  public async get<TSelect extends Array<keyof T>>(
160
122
  injector: Injector,
161
123
  key: T[TPrimaryKey],
@@ -172,30 +134,24 @@ export class DataSet<T, TPrimaryKey extends keyof T, TWritableData = WithOptiona
172
134
  if (!fullEntity) {
173
135
  return undefined
174
136
  }
175
- const result = await this.settings.authorizeGetEntity({ injector, entity: fullEntity as T })
137
+ const result = await this.settings.authorizeGetEntity({ injector, entity: fullEntity })
176
138
  if (!result.isAllowed) {
177
139
  throw new AuthorizationError(result.message)
178
140
  }
179
141
  if (select) {
180
142
  return selectFields(fullEntity as T & object, ...select)
181
143
  }
182
- return fullEntity as PartialResult<T, TSelect>
144
+ return fullEntity
183
145
  }
184
146
  return await this.settings.physicalStore.get(key, select)
185
147
  }
186
148
 
187
149
  /**
188
- * Removes one or more entities based on their primary keys.
189
- * Runs authorization checks (all-or-nothing), persists to the physical store,
190
- * and emits an `onEntityRemoved` event for each removed entity.
191
- *
192
- * When `authorizeRemoveEntity` is configured, only entities that exist in the store
193
- * are authorized. Keys that don't match any entity are silently forwarded to the
194
- * physical store's `remove()` call.
195
- * @param injector The injector from the caller's context. For server-side or background operations
196
- * without an HTTP request, use a child injector with an elevated {@link IdentityContext}.
197
- * @param keys The primary keys of the entities to remove
198
- * @returns A promise that will be resolved / rejected based on the remove success
150
+ * Removes by primary key. Pre-load `authorizeRemove` and per-entity
151
+ * `authorizeRemoveEntity` are all-or-nothing — any rejection aborts the
152
+ * whole batch before any persist call. When `authorizeRemoveEntity` is
153
+ * configured, missing keys are silently forwarded to the physical store
154
+ * (no entity to authorize).
199
155
  */
200
156
  public async remove(injector: Injector, ...keys: Array<T[TPrimaryKey]>): Promise<void> {
201
157
  if (keys.length === 0) {
@@ -213,7 +169,7 @@ export class DataSet<T, TPrimaryKey extends keyof T, TWritableData = WithOptiona
213
169
  })
214
170
  await Promise.all(
215
171
  entities.map(async (entity) => {
216
- const removeResult = await this.settings.authorizeRemoveEntity!({ injector, entity: entity as T })
172
+ const removeResult = await this.settings.authorizeRemoveEntity!({ injector, entity })
217
173
  if (!removeResult.isAllowed) {
218
174
  throw new AuthorizationError(removeResult.message)
219
175
  }
@@ -58,39 +58,21 @@ export type DefineDataSetSettings<
58
58
  */
59
59
  export type DefineDataSetOptions<T, TPrimaryKey extends keyof T, TWritableData = WithOptionalId<T, TPrimaryKey>> = {
60
60
  /**
61
- * Human-readable identifier used for debug/readability. Token identity is
62
- * established by the returned {@link DataSetToken} object reference.
61
+ * Debug-only identifier. Token identity is established by the returned
62
+ * {@link DataSetToken} object reference, not this string.
63
63
  */
64
64
  name: string
65
- /**
66
- * The store this data set is backed by. Its `model` and `primaryKey` are
67
- * propagated onto the returned token.
68
- */
65
+ /** Backing store; its `model` and `primaryKey` propagate to the returned token. */
69
66
  store: StoreToken<T, TPrimaryKey>
70
- /**
71
- * Authorizers, modification hooks and filter post-processors. Optional —
72
- * a data set without settings performs no authorization and forwards
73
- * operations straight to the physical store.
74
- */
75
67
  settings?: NoInfer<DefineDataSetSettings<T, TPrimaryKey, TWritableData>>
76
68
  }
77
69
 
78
70
  /**
79
- * Defines a {@link DataSet} as a first-class DI token backed by a
80
- * {@link StoreToken}.
81
- *
82
- * The returned token resolves to a singleton `DataSet`. On the first
83
- * resolution the factory:
84
- *
85
- * 1. Resolves the backing physical store through the injector.
86
- * 2. Constructs a {@link DataSet} with the supplied {@link DefineDataSetSettings}
87
- * and that store.
88
- * 3. Registers a disposal callback that clears the DataSet's event
89
- * subscriptions when the owning injector is disposed.
90
- *
91
- * The token also carries the `model` and `primaryKey` of the backing store so
92
- * that downstream tooling (entity sync, OpenAPI generators, test harnesses)
93
- * can discover the dataset's shape without additional wiring.
71
+ * Defines a singleton {@link DataSet} token backed by a {@link StoreToken}.
72
+ * The token mirrors the store's `model` and `primaryKey` so reflection
73
+ * tools (entity sync, OpenAPI generators, test harnesses) can discover the
74
+ * dataset's shape from the token alone. Disposal of the owning injector
75
+ * tears down the dataset's event subscriptions.
94
76
  *
95
77
  * @example
96
78
  * ```ts
@@ -124,7 +106,7 @@ export const defineDataSet = <T, const TPrimaryKey extends keyof T, TWritableDat
124
106
  const dataSet = new DataSet<T, TPrimaryKey, TWritableData>({
125
107
  ...options.settings,
126
108
  physicalStore,
127
- } as DataSetSettings<T, TPrimaryKey, TWritableData>)
109
+ })
128
110
  // Disposal is delegated to the injector via `onDispose`; the dataset
129
111
  // outlives this factory invocation and is torn down on scope teardown.
130
112
  // eslint-disable-next-line furystack/prefer-using-wrapper
package/src/helpers.ts CHANGED
@@ -4,30 +4,14 @@ import type { DataSet } from './data-set.js'
4
4
  import type { DataSetToken } from './define-data-set.js'
5
5
 
6
6
  /**
7
- * Resolves the {@link DataSet} identified by the supplied {@link DataSetToken}
8
- * on the given injector.
9
- *
10
- * Writing through the returned DataSet ensures authorization, modification
11
- * hooks and change events (required for features such as entity sync) are
12
- * triggered. Prefer this over direct physical-store access in application
13
- * code.
14
- *
15
- * For server-side or background operations that don't originate from an HTTP
16
- * request, use
17
- * {@link import('@furystack/core').useSystemIdentityContext | useSystemIdentityContext}
18
- * to create a scoped child injector with elevated privileges before calling
19
- * this helper.
20
- *
21
- * @param injector - Any injector in the scope chain.
22
- * @param token - The data-set token created by `defineDataSet`.
23
- * @returns The cached {@link DataSet} instance.
7
+ * Resolves the {@link DataSet} for `token` on `injector`. The preferred
8
+ * write gateway for application code — `furystack/no-direct-store-token`
9
+ * forbids resolving the underlying `StoreToken` directly. For server-side
10
+ * or background work, wrap `injector` with `useSystemIdentityContext` from
11
+ * `@furystack/core` to obtain an elevated identity before calling this.
24
12
  *
25
13
  * @example
26
14
  * ```ts
27
- * import { useSystemIdentityContext } from '@furystack/core'
28
- * import { getDataSetFor } from '@furystack/repository'
29
- * import { usingAsync } from '@furystack/utils'
30
- *
31
15
  * await usingAsync(
32
16
  * useSystemIdentityContext({ injector, username: 'background-job' }),
33
17
  * async (systemInjector) => {