@owlmeans/client-planning 0.1.18-rc.20 → 0.1.18-rc.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +2 -2
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/client-planning/SKILL.md +1 -1
  4. package/build/commits.d.ts +1 -1
  5. package/build/commits.d.ts.map +1 -1
  6. package/build/commits.js +9 -7
  7. package/build/commits.js.map +1 -1
  8. package/build/consts.d.ts +0 -12
  9. package/build/consts.d.ts.map +1 -1
  10. package/build/consts.js +0 -14
  11. package/build/consts.js.map +1 -1
  12. package/build/events.d.ts +1 -1
  13. package/build/events.d.ts.map +1 -1
  14. package/build/events.js +9 -9
  15. package/build/events.js.map +1 -1
  16. package/build/feed.d.ts.map +1 -1
  17. package/build/feed.js +5 -3
  18. package/build/feed.js.map +1 -1
  19. package/build/index.d.ts +1 -0
  20. package/build/index.d.ts.map +1 -1
  21. package/build/index.js +1 -0
  22. package/build/index.js.map +1 -1
  23. package/build/stores.d.ts +1 -1
  24. package/build/stores.d.ts.map +1 -1
  25. package/build/stores.js +7 -7
  26. package/build/stores.js.map +1 -1
  27. package/build/types.local.d.ts +6 -0
  28. package/build/types.local.d.ts.map +1 -0
  29. package/build/types.local.js +2 -0
  30. package/build/types.local.js.map +1 -0
  31. package/build/utils/record.d.ts +26 -7
  32. package/build/utils/record.d.ts.map +1 -1
  33. package/build/utils/record.js +9 -7
  34. package/build/utils/record.js.map +1 -1
  35. package/build/utils/types.d.ts +3 -0
  36. package/build/utils/types.d.ts.map +1 -0
  37. package/build/utils/types.js +2 -0
  38. package/build/utils/types.js.map +1 -0
  39. package/build/utils.d.ts +13 -0
  40. package/build/utils.d.ts.map +1 -0
  41. package/build/utils.js +15 -0
  42. package/build/utils.js.map +1 -0
  43. package/package.json +17 -16
  44. package/src/commits.ts +10 -17
  45. package/src/consts.ts +0 -21
  46. package/src/events.ts +10 -11
  47. package/src/feed.ts +7 -5
  48. package/src/index.ts +1 -0
  49. package/src/stores.ts +8 -9
  50. package/src/types.local.ts +6 -0
  51. package/src/utils/record.ts +11 -7
  52. package/src/utils/types.ts +3 -0
  53. package/src/utils.ts +20 -0
package/README.md CHANGED
@@ -9,7 +9,7 @@ planning service runs in-process.
9
9
  ## Installation
10
10
 
11
11
  ```bash
12
- bun add @owlmeans/client-planning@^0.1.18-rc.20
12
+ bun add @owlmeans/client-planning@^0.1.18-rc.21
13
13
  ```
14
14
 
15
15
  ## Concepts
@@ -119,7 +119,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
119
119
  your project's skill store (`.agents/skills/`):
120
120
 
121
121
  ```sh
122
- npx @owlmeans/agent-skills@^0.1.18-rc.46
122
+ npx @owlmeans/agent-skills@^0.1.18-rc.48
123
123
  ```
124
124
 
125
125
  The embedded files are version-matched to this package release. Do not edit them
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@owlmeans/client-planning",
4
- "version": "0.1.18-rc.20",
5
- "generatedAt": "2026-10-04T01:01:54.403Z",
4
+ "version": "0.1.18-rc.21",
5
+ "generatedAt": "2026-10-05T08:32:19.119Z",
6
6
  "canonicalRepo": "https://github.com/owlmeans/common",
7
7
  "entries": [
8
8
  {
@@ -8,7 +8,7 @@ user-invocable: false
8
8
  # @owlmeans/client-planning
9
9
 
10
10
  **Layer:** Client
11
- **Install:** `"@owlmeans/client-planning": "^0.1.18-rc.20"` in `dependencies`
11
+ **Install:** `"@owlmeans/client-planning": "^0.1.18-rc.21"` in `dependencies`
12
12
 
13
13
  The client half of OwlMeans planning. It answers the `PlanningFacade` interface of
14
14
  `@owlmeans/planning` over the protocol tree a server mounted with `@owlmeans/server-planning`, keeps
@@ -1,5 +1,5 @@
1
1
  import type { BasicConfig, BasicContext } from '@owlmeans/context';
2
- import type { PlanningProtocols } from '@owlmeans/planning';
2
+ import { type PlanningProtocols } from '@owlmeans/planning';
3
3
  import type { RemoteCommitSource, RemoteCommitSourceOptions } from './types.js';
4
4
  /**
5
5
  * The commit source of a remote facade: the `commit.get` long poll and, when the host injects a
@@ -1 +1 @@
1
- {"version":3,"file":"commits.d.ts","sourceRoot":"","sources":["../src/commits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKlE,OAAO,KAAK,EAC+B,iBAAiB,EAC3D,MAAM,oBAAoB,CAAA;AAG3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAuB/E;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,WAC5E,CAAC,aAAa,iBAAiB,SAAS,yBAAyB,KACzE,kBAuMF,CAAA"}
1
+ {"version":3,"file":"commits.d.ts","sourceRoot":"","sources":["../src/commits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAsN,KAAK,iBAAiB,EAAmC,MAAM,oBAAoB,CAAA;AAGhT,OAAO,KAAK,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAqB/E;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,WAC5E,CAAC,aAAa,iBAAiB,SAAS,yBAAyB,KACzE,kBAuMF,CAAA"}
package/build/commits.js CHANGED
@@ -1,6 +1,8 @@
1
- import { CommitFailed, CommitState, CommitTimeout, DEFAULT_COMMIT_POLL, DEFAULT_COMMIT_TIMEOUT, MAX_COMMIT_POLL, PLANNING_COMMIT_EVENT, PlanningError, WorkcardKind, } from '@owlmeans/planning';
1
+ import { logger } from '@owlmeans/log';
2
+ import { CommitFailed, CommitState, CommitTimeout, DEFAULT_COMMIT_POLL, DEFAULT_COMMIT_TIMEOUT, MAX_COMMIT_POLL, PLANNING_COMMIT_EVENT, PlanningError, WorkcardKind } from '@owlmeans/planning';
2
3
  import { EARLY_POLL_LADDER, EARLY_POLL_MS, LONG_POLL_GRACE } from './consts.js';
3
- import { dropCard, putCard, putCommit } from './utils/record.js';
4
+ import { recordHelper } from './utils/record.js';
5
+ const log = logger('client-planning');
4
6
  const matches = (filter, event) => filter == null || ((filter.entityId == null || filter.entityId === event.entityId)
5
7
  && (filter.project == null || filter.project === event.project)
6
8
  && (filter.card == null || filter.card === event.card)
@@ -37,7 +39,7 @@ export const makeRemoteCommitSource = (context, protocols, opts) => {
37
39
  await subscription.listener(event);
38
40
  }
39
41
  catch (e) {
40
- console.error('Planning commit listener error:', e);
42
+ log.error('Planning commit listener failed', e);
41
43
  }
42
44
  }
43
45
  };
@@ -62,7 +64,7 @@ export const makeRemoteCommitSource = (context, protocols, opts) => {
62
64
  }
63
65
  catch (e) {
64
66
  opening = null;
65
- console.error('Planning commit socket error:', e);
67
+ log.warn('Planning commit socket failed to open', e);
66
68
  return null;
67
69
  }
68
70
  })();
@@ -94,17 +96,17 @@ export const makeRemoteCommitSource = (context, protocols, opts) => {
94
96
  return;
95
97
  }
96
98
  const known = await stores.commits.load(transition);
97
- await putCommit(stores.commits, {
99
+ await recordHelper.putCommit(stores.commits, {
98
100
  id: transition, state: settled.state, at: settled.at, error: settled.error,
99
101
  });
100
102
  if (settled.state !== CommitState.Committed) {
101
103
  return;
102
104
  }
103
105
  if (settled.card != null) {
104
- await putCard(stores.cards, settled.card);
106
+ await recordHelper.putCard(stores.cards, settled.card);
105
107
  }
106
108
  else if (settled.card === null && known?.card != null) {
107
- await dropCard(stores, known.card, known.kind === WorkcardKind.Project);
109
+ await recordHelper.dropCard(stores, known.card, known.kind === WorkcardKind.Project);
108
110
  }
109
111
  };
110
112
  const answer = async (transition, settled) => {
@@ -1 +1 @@
1
- {"version":3,"file":"commits.js","sourceRoot":"","sources":["../src/commits.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,eAAe,EACtG,qBAAqB,EAAE,aAAa,EAAE,YAAY,GACnD,MAAM,oBAAoB,CAAA;AAK3B,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE/E,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAOhE,MAAM,OAAO,GAAG,CAAC,MAAgC,EAAE,KAAkB,EAAW,EAAE,CAChF,MAAM,IAAI,IAAI,IAAI,CAChB,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC;OAC5D,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;OAC5D,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;OACnD,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CACvD,CAAA;AAEH,MAAM,KAAK,GAAG,CAAC,EAAU,EAAkD,EAAE;IAC3E,IAAI,MAAiD,CAAA;IACrD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,GAAG,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;IAE/F,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAA;AACxD,CAAC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,OAAU,EAAE,SAA4B,EAAE,IAAgC,EACtD,EAAE;IACtB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAA;IACtF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAgB,CAAA;IAE7C,IAAI,OAAO,GAAsC,IAAI,CAAA;IACrD,IAAI,IAAI,GAAsB,IAAI,CAAA;IAClC,IAAI,MAAM,GAAwB,IAAI,CAAA;IAEtC,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAkB,EAAiB,EAAE;QAC3D,KAAK,MAAM,YAAY,IAAI,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;gBACzC,SAAQ;YACV,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACpC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,IAAgC,EAAE;QACpD,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAA;QAC3B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,IAAI,EAAE;YACtB,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;gBACvE,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;oBACvB,mFAAmF;oBACnF,OAAO,GAAG,IAAI,CAAA;oBACd,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,IAAI,GAAG,UAAU,CAAA;gBACjB,MAAM,GAAG,UAAU,CAAC,OAAO,CAAc,qBAAqB,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;oBAC9E,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBACjC,CAAC,CAAC,CAAA;gBACF,OAAO,UAAU,CAAA;YACnB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,GAAG,IAAI,CAAA;gBACd,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAA;gBACjD,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,OAAO,MAAM,OAAO,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAE/D,MAAM,MAAM,GAAG,KAAK,EAAE,UAAkB,EAAyB,EAAE,CAAC,MAAM,QAAQ,EAAE,CAAC,IAAI,CAAC;QACxF,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO;KACnE,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,KAAK,EAAE,UAAkB,EAAE,IAAY,EAAE,MAAmB,EAAyB,EAAE;QAClG,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,EAAE,CAAC,IAAI,CAAC;gBAC3B,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI,GAAG,eAAe,EAAE,MAAM;aACxF,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC;gBACjD,MAAM,CAAC,CAAA;YACT,CAAC;YACD,2FAA2F;YAC3F,mEAAmE;YACnE,OAAO,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;QACjC,CAAC;IACH,CAAC,CAAA;IAED,2EAA2E;IAC3E,MAAM,IAAI,GAAG,KAAK,EAAE,UAAkB,EAAE,OAAqB,EAAiB,EAAE;QAC9E,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,CAAA;QAC/B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACnD,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;YAC9B,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;SAC3E,CAAC,CAAA;QACF,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YAC5C,OAAM;QACR,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAC3C,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;YACxD,MAAM,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,OAAO,CAAC,CAAA;QACzE,CAAC;IACH,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,EAAE,UAAkB,EAAE,OAAqB,EAA4B,EAAE;QAC3F,MAAM,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAC/B,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,CAAA;QACrD,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,IAAI,IAAI,CAAA;IAC7B,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,EACrB,QAAkC,EAAE,MAAqB,EACnC,EAAE;QACxB,MAAM,YAAY,GAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;QACvD,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAC/B,MAAM,MAAM,EAAE,CAAA;QAEd,OAAO,GAAG,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA,CAAC,CAAC,CAAA;IACrD,CAAC,CAAA;IAED,MAAM,MAAM,GAAuB;QACjC,MAAM;QAEN,SAAS;QAET,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,sBAAsB,CAAC,CAAA;YAC3E,wFAAwF;YACxF,MAAM,KAAK,GAAmC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAC9D,IAAI,IAAI,GAAe,GAAG,EAAE,GAAG,CAAC,CAAA;YAChC,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE;gBAC1C,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;oBAC3E,KAAK,CAAC,MAAM,GAAG,KAAK,CAAA;oBACpB,IAAI,EAAE,CAAA;gBACR,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,yFAAyF;YACzF,MAAM,SAAS,GAAG,KAAK,EAAE,KAAkB,EAA4B,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;gBAClG,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE;oBACzB,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM;iBACrF,CAAC;gBACF,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;YAEtD,IAAI,CAAC;gBACH,IAAI,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;gBACtC,IAAI,KAAK,GAAG,CAAC,CAAA;gBACb,OAAO,OAAO,CAAC,KAAK,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;oBAC7C,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;wBACzB,OAAO,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;oBACtC,CAAC;oBACD,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;oBACvC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;wBACnB,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,CAAA;oBACrC,CAAC;oBAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAA;oBACxD,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAA;oBACnC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;oBAC9B,MAAM,MAAM,GAAG,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;oBACjF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;oBAC1B,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;4BACjC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;4BACpC,MAAM;4BACN,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAmB,CAAC;yBAC9C,CAAC,CAAA;wBACF,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;4BAClD,SAAQ;wBACV,CAAC;wBACD,OAAO,GAAG,OAAO,CAAA;oBACnB,CAAC;4BAAS,CAAC;wBACT,KAAK,CAAC,KAAK,EAAE,CAAA;wBACb,KAAK,CAAC,MAAM,EAAE,CAAA;wBACd,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAA;oBAClB,CAAC;oBAED,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,aAAa,EAAE,CAAC;wBAClF,mFAAmF;wBACnF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAC1B,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CACxF,CAAC,CAAA;wBACF,KAAK,IAAI,CAAC,CAAA;wBACV,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,GAAG,IAAI,GAAG,OAAO,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;wBACrF,KAAK,CAAC,MAAM,EAAE,CAAA;wBACd,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAA;oBAClB,CAAC;yBAAM,CAAC;wBACN,KAAK,GAAG,CAAC,CAAA;oBACX,CAAC;gBACH,CAAC;gBAED,OAAO,MAAM,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAC1C,CAAC;oBAAS,CAAC;gBACT,WAAW,EAAE,CAAA;YACf,CAAC;QACH,CAAC;QAED,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI;QAE7B,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,EAAE,CAAA;YACV,MAAM,GAAG,IAAI,CAAA;YACb,MAAM,UAAU,GAAG,IAAI,CAAA;YACvB,IAAI,GAAG,IAAI,CAAA;YACX,OAAO,GAAG,IAAI,CAAA;YACd,MAAM,UAAU,EAAE,KAAK,EAAE,CAAA;QAC3B,CAAC;KACF,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
1
+ {"version":3,"file":"commits.js","sourceRoot":"","sources":["../src/commits.ts"],"names":[],"mappings":"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"}
package/build/consts.d.ts CHANGED
@@ -1,15 +1,3 @@
1
- import type { Relationship, Workcard } from '@owlmeans/planning';
2
- import type { StateAlias } from '@owlmeans/state';
3
- import type { PlanningCommitRecord, PlanningStoreAliases } from './types.js';
4
- /**
5
- * The ONE card store. Projects, cards and specifications share an id space on the server, so they
6
- * share it here too — a store per kind would let a list reload of one kind drop another's rows.
7
- */
8
- export declare const CARDS: StateAlias<Workcard>;
9
- export declare const LINKS: StateAlias<Relationship>;
10
- /** What the client has learned about each transition it wrote or saw, keyed by transition id. */
11
- export declare const COMMITS: StateAlias<PlanningCommitRecord>;
12
- export declare const DEFAULT_STORE_ALIASES: Readonly<PlanningStoreAliases>;
13
1
  /**
14
2
  * How much longer than its own `wait` a long poll's HTTP deadline is, in milliseconds — a held
15
3
  * response must outlast the hold, or every quiet poll reads as a broken connection.
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAE5E;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,UAAU,CAAC,QAAQ,CAA+C,CAAA;AAEtF,eAAO,MAAM,KAAK,EAAE,UAAU,CAAC,YAAY,CAAmD,CAAA;AAE9F,iGAAiG;AACjG,eAAO,MAAM,OAAO,EAAE,UAAU,CAAC,oBAAoB,CAA6D,CAAA;AAElH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,oBAAoB,CAI/D,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAS,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAuC,CAAA;AAEtF,0DAA0D;AAC1D,eAAO,MAAM,aAAa,MAAM,CAAA"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAS,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAuC,CAAA;AAEtF,0DAA0D;AAC1D,eAAO,MAAM,aAAa,MAAM,CAAA"}
package/build/consts.js CHANGED
@@ -1,17 +1,3 @@
1
- import { stateAlias } from '@owlmeans/state';
2
- /**
3
- * The ONE card store. Projects, cards and specifications share an id space on the server, so they
4
- * share it here too — a store per kind would let a list reload of one kind drop another's rows.
5
- */
6
- export const CARDS = stateAlias('planning-card-state');
7
- export const LINKS = stateAlias('planning-link-state');
8
- /** What the client has learned about each transition it wrote or saw, keyed by transition id. */
9
- export const COMMITS = stateAlias('planning-commit-state');
10
- export const DEFAULT_STORE_ALIASES = Object.freeze({
11
- cards: CARDS,
12
- links: LINKS,
13
- commits: COMMITS,
14
- });
15
1
  /**
16
2
  * How much longer than its own `wait` a long poll's HTTP deadline is, in milliseconds — a held
17
3
  * response must outlast the hold, or every quiet poll reads as a broken connection.
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAI5C;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAyB,UAAU,CAAW,qBAAqB,CAAC,CAAA;AAEtF,MAAM,CAAC,MAAM,KAAK,GAA6B,UAAU,CAAe,qBAAqB,CAAC,CAAA;AAE9F,iGAAiG;AACjG,MAAM,CAAC,MAAM,OAAO,GAAqC,UAAU,CAAuB,uBAAuB,CAAC,CAAA;AAElH,MAAM,CAAC,MAAM,qBAAqB,GAAmC,MAAM,CAAC,MAAM,CAAC;IACjF,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,OAAO;CACjB,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAA;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;AAEtF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA"}
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAA;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;AAEtF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA"}
package/build/events.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { CommitEvent, PlanningFacade, TransitionReceiptView, Workcard } from '@owlmeans/planning';
1
+ import { type CommitEvent, type PlanningFacade, type TransitionReceiptView, type Workcard } from '@owlmeans/planning';
2
2
  import type { PlanningStores } from './types.js';
3
3
  /**
4
4
  * Fold one commit frame into the mirror.
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAEtG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAGhD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,WACnB,cAAc,SAAS,WAAW,WAAW,cAAc,KAClE,OAAO,CAAC,IAAI,CAkDd,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,WAAkB,cAAc,WAAW,qBAAqB,KAAG,OAAO,CAAC,IAAI,CAiCvG,CAAA;AAED,+FAA+F;AAC/F,eAAO,MAAM,UAAU,WAAkB,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,SAAS,QAAQ,EAAE,KAAG,OAAO,CAAC,IAAI,CAIvG,CAAA"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,qBAAqB,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAElK,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAGhD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,WACnB,cAAc,SAAS,WAAW,WAAW,cAAc,KAClE,OAAO,CAAC,IAAI,CAkDd,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,WAAkB,cAAc,WAAW,qBAAqB,KAAG,OAAO,CAAC,IAAI,CAiCvG,CAAA;AAED,+FAA+F;AAC/F,eAAO,MAAM,UAAU,WAAkB,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,SAAS,QAAQ,EAAE,KAAG,OAAO,CAAC,IAAI,CAIvG,CAAA"}
package/build/events.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { CommitState, TransitionAction, WorkcardKind } from '@owlmeans/planning';
2
2
  import { syncLinks } from './stores.js';
3
- import { dropCard, putCard, putCommit } from './utils/record.js';
3
+ import { recordHelper } from './utils/record.js';
4
4
  /**
5
5
  * Fold one commit frame into the mirror.
6
6
  *
@@ -16,7 +16,7 @@ import { dropCard, putCard, putCommit } from './utils/record.js';
16
16
  */
17
17
  export const applyCommitEvent = async (stores, event, facade) => {
18
18
  const known = await stores.cards.load(event.card);
19
- await putCommit(stores.commits, {
19
+ await recordHelper.putCommit(stores.commits, {
20
20
  id: event.transition,
21
21
  card: event.card,
22
22
  entityId: event.entityId,
@@ -42,7 +42,7 @@ export const applyCommitEvent = async (stores, event, facade) => {
42
42
  return;
43
43
  }
44
44
  if (event.action === TransitionAction.Delete) {
45
- await dropCard(stores, event.card, event.kind === WorkcardKind.Project);
45
+ await recordHelper.dropCard(stores, event.card, event.kind === WorkcardKind.Project);
46
46
  return;
47
47
  }
48
48
  const record = event.record !== undefined
@@ -50,10 +50,10 @@ export const applyCommitEvent = async (stores, event, facade) => {
50
50
  : facade != null ? await facade.cards.load(event.card) : undefined;
51
51
  if (record === null) {
52
52
  // Committed, and gone by the time it was read: a later delete won the race.
53
- await dropCard(stores, event.card, event.kind === WorkcardKind.Project);
53
+ await recordHelper.dropCard(stores, event.card, event.kind === WorkcardKind.Project);
54
54
  }
55
55
  else if (record !== undefined) {
56
- await putCard(stores.cards, record);
56
+ await recordHelper.putCard(stores.cards, record);
57
57
  }
58
58
  if (facade != null && (event.action === TransitionAction.Link || event.action === TransitionAction.Unlink)) {
59
59
  const links = await facade.relationships.list({ from: event.card, size: 0 });
@@ -70,7 +70,7 @@ export const applyCommitEvent = async (stores, event, facade) => {
70
70
  export const applyReceipt = async (stores, receipt) => {
71
71
  const { transition } = receipt;
72
72
  if (transition.id != null) {
73
- await putCommit(stores.commits, {
73
+ await recordHelper.putCommit(stores.commits, {
74
74
  id: transition.id,
75
75
  card: transition.card,
76
76
  entityId: transition.entityId,
@@ -88,11 +88,11 @@ export const applyReceipt = async (stores, receipt) => {
88
88
  return;
89
89
  }
90
90
  if (transition.commit.state === CommitState.Committed && transition.action === TransitionAction.Delete) {
91
- await dropCard(stores, transition.card, transition.kind === WorkcardKind.Project);
91
+ await recordHelper.dropCard(stores, transition.card, transition.kind === WorkcardKind.Project);
92
92
  return;
93
93
  }
94
94
  if (receipt.card != null) {
95
- await putCard(stores.cards, receipt.card);
95
+ await recordHelper.putCard(stores.cards, receipt.card);
96
96
  return;
97
97
  }
98
98
  const known = await stores.cards.load(transition.card);
@@ -103,7 +103,7 @@ export const applyReceipt = async (stores, receipt) => {
103
103
  /** Write cards the caller read on its own, under the same newer-fold-wins rule as a commit. */
104
104
  export const applyCards = async (stores, cards) => {
105
105
  for (const card of cards) {
106
- await putCard(stores.cards, card);
106
+ await recordHelper.putCard(stores.cards, card);
107
107
  }
108
108
  };
109
109
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../src/feed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAMlE,OAAO,KAAK,EAAyB,YAAY,EAAE,mBAAmB,EAAqB,MAAM,YAAY,CAAA;AAM7G;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,WACtE,CAAC,SAAQ,mBAAmB,KACpC,YAsGF,CAAA"}
1
+ {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../src/feed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAMlE,OAAO,KAAK,EAAyB,YAAY,EAAE,mBAAmB,EAAqB,MAAM,YAAY,CAAA;AAQ7G;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,WACtE,CAAC,SAAQ,mBAAmB,KACpC,YAsGF,CAAA"}
package/build/feed.js CHANGED
@@ -1,8 +1,10 @@
1
+ import { logger } from '@owlmeans/log';
1
2
  import { criteriaOf, PLANNING_SERVICE } from '@owlmeans/planning';
2
3
  import { applyCards, applyCommitEvent } from './events.js';
3
4
  import { planningStoresOf, syncCards, syncLinks } from './stores.js';
4
- import { clean } from './utils/record.js';
5
- const linkCriteriaOf = (query) => clean({ from: query.from, to: query.to, type: query.type });
5
+ import { recordHelper } from './utils/record.js';
6
+ const log = logger('client-planning');
7
+ const linkCriteriaOf = (query) => recordHelper.clean({ from: query.from, to: query.to, type: query.type });
6
8
  /**
7
9
  * Keep the state mirror current: subscribe to commits FIRST, then seed from the list, then fold
8
10
  * every frame — and, with `refresh`, re-seed on an interval as the authoritative backstop to a
@@ -86,7 +88,7 @@ export const makePlanningFeed = (context, opts = {}) => {
86
88
  await applyCommitEvent(stores, event, facade);
87
89
  }
88
90
  catch (e) {
89
- console.error('Planning feed apply error:', e);
91
+ log.warn('Planning feed apply failed', { card: event.card, error: e });
90
92
  }
91
93
  }, opts.filter);
92
94
  if (stopped) {
package/build/feed.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"feed.js","sourceRoot":"","sources":["../src/feed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feed.js","sourceRoot":"","sources":["../src/feed.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export type * from './types.js';
2
2
  export * from './consts.js';
3
+ export * from './utils.js';
3
4
  export * from './client.js';
4
5
  export * from './facade.js';
5
6
  export * from './definitions.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAE/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAE/B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA"}
package/build/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './consts.js';
2
+ export * from './utils.js';
2
3
  export * from './client.js';
3
4
  export * from './facade.js';
4
5
  export * from './definitions.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA"}
package/build/stores.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { BasicConfig, BasicContext } from '@owlmeans/context';
2
2
  import type { Relationship, Workcard } from '@owlmeans/planning';
3
3
  import type { Criteria } from '@owlmeans/resource';
4
- import type { StateResourceAppend } from '@owlmeans/state';
4
+ import { type StateResourceAppend } from '@owlmeans/state';
5
5
  import type { PlanningStoreAliases, PlanningStores, SyncOptions, WithPlanningStores } from './types.js';
6
6
  /**
7
7
  * Register the planning state mirror: ONE card store for every kind, a link store and a commit
@@ -1 +1 @@
1
- {"version":3,"file":"stores.d.ts","sourceRoot":"","sources":["../src/stores.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAGvG;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,WAC1E,CAAC,YAAY,OAAO,CAAC,oBAAoB,CAAC,KAClD,CAAC,GAAG,kBAAkB,GAAG,mBAgB3B,CAAA;AAED,0FAA0F;AAC1F,eAAO,MAAM,gBAAgB,YAAa,YAAY,CAAC,GAAG,CAAC,KAAG,cAAc,GAAG,IAI9E,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,UACb,cAAc,CAAC,OAAO,CAAC,SAAS,QAAQ,EAAE,UAAU,QAAQ,CAAC,QAAQ,CAAC,SAAS,WAAW,KAChG,OAAO,CAAC,IAAI,CAKd,CAAA;AAED,4CAA4C;AAC5C,eAAO,MAAM,SAAS,UACb,cAAc,CAAC,OAAO,CAAC,SAAS,YAAY,EAAE,UAAU,QAAQ,CAAC,YAAY,CAAC,SAAS,WAAW,KACxG,OAAO,CAAC,IAAI,CAKd,CAAA"}
1
+ {"version":3,"file":"stores.d.ts","sourceRoot":"","sources":["../src/stores.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAGvG;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,WAC1E,CAAC,YAAY,OAAO,CAAC,oBAAoB,CAAC,KAClD,CAAC,GAAG,kBAAkB,GAAG,mBAgB3B,CAAA;AAED,0FAA0F;AAC1F,eAAO,MAAM,gBAAgB,YAAa,YAAY,CAAC,GAAG,CAAC,KAAG,cAAc,GAAG,IAI9E,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,UACb,cAAc,CAAC,OAAO,CAAC,SAAS,QAAQ,EAAE,UAAU,QAAQ,CAAC,QAAQ,CAAC,SAAS,WAAW,KAChG,OAAO,CAAC,IAAI,CAKd,CAAA;AAED,4CAA4C;AAC5C,eAAO,MAAM,SAAS,UACb,cAAc,CAAC,OAAO,CAAC,SAAS,YAAY,EAAE,UAAU,QAAQ,CAAC,YAAY,CAAC,SAAS,WAAW,KACxG,OAAO,CAAC,IAAI,CAKd,CAAA"}
package/build/stores.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { appendStateResource } from '@owlmeans/state';
2
- import { DEFAULT_STORE_ALIASES } from './consts.js';
3
- import { idsOf, putCard, putLink } from './utils/record.js';
2
+ import { DEFAULT_STORE_ALIASES } from './utils.js';
3
+ import { recordHelper } from './utils/record.js';
4
4
  /**
5
5
  * Register the planning state mirror: ONE card store for every kind, a link store and a commit
6
6
  * store, and `context.planningStores()`.
@@ -38,22 +38,22 @@ export const planningStoresOf = (context) => {
38
38
  * Unchanged cards are not rewritten, so a periodic re-seed wakes no subscriber.
39
39
  */
40
40
  export const syncCards = async (store, items, where, opts) => {
41
- await dropUnnamed(store, idsOf(items), where, opts);
41
+ await dropUnnamed(store, recordHelper.idsOf(items), where, opts);
42
42
  for (const item of items) {
43
- await putCard(store, item);
43
+ await recordHelper.putCard(store, item);
44
44
  }
45
45
  };
46
46
  /** {@link syncCards} for the link store. */
47
47
  export const syncLinks = async (store, items, where, opts) => {
48
- await dropUnnamed(store, idsOf(items), where, opts);
48
+ await dropUnnamed(store, recordHelper.idsOf(items), where, opts);
49
49
  for (const item of items) {
50
- await putLink(store, item);
50
+ await recordHelper.putLink(store, item);
51
51
  }
52
52
  };
53
53
  const dropUnnamed = async (store, named, where, opts) => {
54
54
  const keep = new Set([...named, ...(opts?.keep ?? [])]);
55
55
  const scoped = await store.list(where);
56
- const stale = idsOf(scoped.items).filter(id => !keep.has(id));
56
+ const stale = recordHelper.idsOf(scoped.items).filter(id => !keep.has(id));
57
57
  if (stale.length > 0) {
58
58
  await store.purge({ id: { $in: stale } });
59
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stores.js","sourceRoot":"","sources":["../src/stores.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stores.js","sourceRoot":"","sources":["../src/stores.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { CommitEvent, CommitFilter } from '@owlmeans/planning';
2
+ export interface Subscription {
3
+ listener: (event: CommitEvent) => void | Promise<void>;
4
+ filter?: CommitFilter;
5
+ }
6
+ //# sourceMappingURL=types.local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.local.d.ts","sourceRoot":"","sources":["../src/types.local.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEnE,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.local.js","sourceRoot":"","sources":["../src/types.local.ts"],"names":[],"mappings":""}
@@ -3,7 +3,7 @@ import type { CommitState, Relationship, Workcard } from '@owlmeans/planning';
3
3
  import type { ResourceRecord } from '@owlmeans/resource';
4
4
  import type { StateResource } from '@owlmeans/state';
5
5
  /** Same content, whatever order the keys arrived in. */
6
- export declare const sameRecord: (left: unknown, right: unknown) => boolean;
6
+ declare const sameRecord: (left: unknown, right: unknown) => boolean;
7
7
  /**
8
8
  * Write one card unless the store already holds a NEWER fold of it.
9
9
  *
@@ -11,15 +11,34 @@ export declare const sameRecord: (left: unknown, right: unknown) => boolean;
11
11
  * commit landed must not undo that commit. The head only ever grows: a head this client allocated
12
12
  * (`applyReceipt`) stays until a fold catches up with it.
13
13
  */
14
- export declare const putCard: (store: StateResource<Workcard>, card: Workcard) => Promise<Workcard>;
15
- export declare const putLink: (store: StateResource<Relationship>, link: Relationship) => Promise<void>;
14
+ declare const putCard: (store: StateResource<Workcard>, card: Workcard) => Promise<Workcard>;
15
+ declare const putLink: (store: StateResource<Relationship>, link: Relationship) => Promise<void>;
16
16
  /** Drop a card, whatever lives under it when it is a project, and every link touching any of them. */
17
- export declare const dropCard: (stores: PlanningStores, id: string, project: boolean) => Promise<void>;
17
+ declare const dropCard: (stores: PlanningStores, id: string, project: boolean) => Promise<void>;
18
18
  /** Record what is known about a transition, merged over what was known before. */
19
- export declare const putCommit: (store: StateResource<PlanningCommitRecord>, record: Partial<PlanningCommitRecord> & {
19
+ declare const putCommit: (store: StateResource<PlanningCommitRecord>, record: Partial<PlanningCommitRecord> & {
20
20
  id: string;
21
21
  state: CommitState;
22
22
  }) => Promise<PlanningCommitRecord>;
23
- export declare const clean: <T extends object>(record: T) => T;
24
- export declare const idsOf: <T extends ResourceRecord>(records: T[]) => string[];
23
+ declare const clean: <T extends object>(record: T) => T;
24
+ declare const idsOf: <T extends ResourceRecord>(records: T[]) => string[];
25
+ export declare const createRecordHelper: () => {
26
+ sameRecord: typeof sameRecord;
27
+ putCard: typeof putCard;
28
+ putLink: typeof putLink;
29
+ dropCard: typeof dropCard;
30
+ putCommit: typeof putCommit;
31
+ clean: typeof clean;
32
+ idsOf: typeof idsOf;
33
+ };
34
+ export declare const recordHelper: {
35
+ sameRecord: typeof sameRecord;
36
+ putCard: typeof putCard;
37
+ putLink: typeof putLink;
38
+ dropCard: typeof dropCard;
39
+ putCommit: typeof putCommit;
40
+ clean: typeof clean;
41
+ idsOf: typeof idsOf;
42
+ };
43
+ export {};
25
44
  //# sourceMappingURL=record.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/utils/record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAgBpD,wDAAwD;AACxD,eAAO,MAAM,UAAU,SAAU,OAAO,SAAS,OAAO,KAAG,OACK,CAAA;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,UAAiB,aAAa,CAAC,QAAQ,CAAC,QAAQ,QAAQ,KAAG,OAAO,CAAC,QAAQ,CAgB9F,CAAA;AAED,eAAO,MAAM,OAAO,UAAiB,aAAa,CAAC,YAAY,CAAC,QAAQ,YAAY,KAAG,OAAO,CAAC,IAAI,CASlG,CAAA;AAED,sGAAsG;AACtG,eAAO,MAAM,QAAQ,WAAkB,cAAc,MAAM,MAAM,WAAW,OAAO,KAAG,OAAO,CAAC,IAAI,CAUjG,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,SAAS,UACb,aAAa,CAAC,oBAAoB,CAAC,UAAU,OAAO,CAAC,oBAAoB,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,KACrH,OAAO,CAAC,oBAAoB,CAS9B,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,MAAM,UAAU,CAAC,KAAG,CACwC,CAAA;AAE5F,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,cAAc,WAAW,CAAC,EAAE,KAAG,MAAM,EACM,CAAA"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/utils/record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAgBpD,wDAAwD;AACxD,QAAA,MAAM,UAAU,SAAU,OAAO,SAAS,OAAO,KAAG,OACY,CAAA;AAEhE;;;;;;GAMG;AACH,QAAA,MAAM,OAAO,UAAiB,aAAa,CAAC,QAAQ,CAAC,QAAQ,QAAQ,KAAG,OAAO,CAAC,QAAQ,CAgBvF,CAAA;AAED,QAAA,MAAM,OAAO,UAAiB,aAAa,CAAC,YAAY,CAAC,QAAQ,YAAY,KAAG,OAAO,CAAC,IAAI,CAS3F,CAAA;AAED,sGAAsG;AACtG,QAAA,MAAM,QAAQ,WAAkB,cAAc,MAAM,MAAM,WAAW,OAAO,KAAG,OAAO,CAAC,IAAI,CAU1F,CAAA;AAED,kFAAkF;AAClF,QAAA,MAAM,SAAS,UACN,aAAa,CAAC,oBAAoB,CAAC,UAAU,OAAO,CAAC,oBAAoB,CAAC,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,KACrH,OAAO,CAAC,oBAAoB,CAS9B,CAAA;AAED,QAAA,MAAM,KAAK,GAAI,CAAC,SAAS,MAAM,UAAU,CAAC,KAAG,CAC+C,CAAA;AAE5F,QAAA,MAAM,KAAK,GAAI,CAAC,SAAS,cAAc,WAAW,CAAC,EAAE,KAAG,MAAM,EACa,CAAA;AAE3E,eAAO,MAAM,kBAAkB;;;;;;;;CAA8E,CAAA;AAE7G,eAAO,MAAM,YAAY;;;;;;;;CAAuB,CAAA"}
@@ -11,7 +11,7 @@ const stable = (value) => {
11
11
  return value;
12
12
  };
13
13
  /** Same content, whatever order the keys arrived in. */
14
- export const sameRecord = (left, right) => JSON.stringify(stable(left)) === JSON.stringify(stable(right));
14
+ const sameRecord = (left, right) => JSON.stringify(stable(left)) === JSON.stringify(stable(right));
15
15
  /**
16
16
  * Write one card unless the store already holds a NEWER fold of it.
17
17
  *
@@ -19,7 +19,7 @@ export const sameRecord = (left, right) => JSON.stringify(stable(left)) === JSON
19
19
  * commit landed must not undo that commit. The head only ever grows: a head this client allocated
20
20
  * (`applyReceipt`) stays until a fold catches up with it.
21
21
  */
22
- export const putCard = async (store, card) => {
22
+ const putCard = async (store, card) => {
23
23
  if (card.id == null) {
24
24
  return card;
25
25
  }
@@ -35,7 +35,7 @@ export const putCard = async (store, card) => {
35
35
  await store.save(next);
36
36
  return next;
37
37
  };
38
- export const putLink = async (store, link) => {
38
+ const putLink = async (store, link) => {
39
39
  if (link.id == null) {
40
40
  return;
41
41
  }
@@ -46,7 +46,7 @@ export const putLink = async (store, link) => {
46
46
  await store.save(link);
47
47
  };
48
48
  /** Drop a card, whatever lives under it when it is a project, and every link touching any of them. */
49
- export const dropCard = async (stores, id, project) => {
49
+ const dropCard = async (stores, id, project) => {
50
50
  const ids = [id];
51
51
  if (project) {
52
52
  const children = await stores.cards.list({ parents: { $contains: [id] } });
@@ -58,7 +58,7 @@ export const dropCard = async (stores, id, project) => {
58
58
  }
59
59
  };
60
60
  /** Record what is known about a transition, merged over what was known before. */
61
- export const putCommit = async (store, record) => {
61
+ const putCommit = async (store, record) => {
62
62
  const known = await store.load(record.id);
63
63
  const next = { ...known, ...clean(record) };
64
64
  if (known != null && sameRecord(known, next)) {
@@ -67,6 +67,8 @@ export const putCommit = async (store, record) => {
67
67
  await store.save(next);
68
68
  return next;
69
69
  };
70
- export const clean = (record) => Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined));
71
- export const idsOf = (records) => records.map(record => record.id).filter((id) => id != null);
70
+ const clean = (record) => Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined));
71
+ const idsOf = (records) => records.map(record => record.id).filter((id) => id != null);
72
+ export const createRecordHelper = () => ({ sameRecord, putCard, putLink, dropCard, putCommit, clean, idsOf });
73
+ export const recordHelper = createRecordHelper();
72
74
  //# sourceMappingURL=record.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/utils/record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/utils/record.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { createRecordHelper } from './record.js';
2
+ export type RecordHelper = ReturnType<typeof createRecordHelper>;
3
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { type StateAlias } from '@owlmeans/state';
2
+ import type { Relationship, Workcard } from '@owlmeans/planning';
3
+ import type { PlanningCommitRecord, PlanningStoreAliases } from './types.js';
4
+ /**
5
+ * The ONE card store. Projects, cards and specifications share an id space on the server, so they
6
+ * share it here too — a store per kind would let a list reload of one kind drop another's rows.
7
+ */
8
+ export declare const CARDS: StateAlias<Workcard>;
9
+ export declare const LINKS: StateAlias<Relationship>;
10
+ /** What the client has learned about each transition it wrote or saw, keyed by transition id. */
11
+ export declare const COMMITS: StateAlias<PlanningCommitRecord>;
12
+ export declare const DEFAULT_STORE_ALIASES: Readonly<PlanningStoreAliases>;
13
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAc,MAAM,iBAAiB,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAE5E;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,UAAU,CAAC,QAAQ,CAA+C,CAAA;AAEtF,eAAO,MAAM,KAAK,EAAE,UAAU,CAAC,YAAY,CAAmD,CAAA;AAE9F,iGAAiG;AACjG,eAAO,MAAM,OAAO,EAAE,UAAU,CAAC,oBAAoB,CAA6D,CAAA;AAElH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,oBAAoB,CAI/D,CAAA"}
package/build/utils.js ADDED
@@ -0,0 +1,15 @@
1
+ import { stateAlias } from '@owlmeans/state';
2
+ /**
3
+ * The ONE card store. Projects, cards and specifications share an id space on the server, so they
4
+ * share it here too — a store per kind would let a list reload of one kind drop another's rows.
5
+ */
6
+ export const CARDS = stateAlias('planning-card-state');
7
+ export const LINKS = stateAlias('planning-link-state');
8
+ /** What the client has learned about each transition it wrote or saw, keyed by transition id. */
9
+ export const COMMITS = stateAlias('planning-commit-state');
10
+ export const DEFAULT_STORE_ALIASES = Object.freeze({
11
+ cards: CARDS,
12
+ links: LINKS,
13
+ commits: COMMITS,
14
+ });
15
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAI7D;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAyB,UAAU,CAAW,qBAAqB,CAAC,CAAA;AAEtF,MAAM,CAAC,MAAM,KAAK,GAA6B,UAAU,CAAe,qBAAqB,CAAC,CAAA;AAE9F,iGAAiG;AACjG,MAAM,CAAC,MAAM,OAAO,GAAqC,UAAU,CAAuB,uBAAuB,CAAC,CAAA;AAElH,MAAM,CAAC,MAAM,qBAAqB,GAAmC,MAAM,CAAC,MAAM,CAAC;IACjF,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,OAAO;CACjB,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/client-planning",
3
- "version": "0.1.18-rc.20",
3
+ "version": "0.1.18-rc.21",
4
4
  "license": "MIT",
5
5
  "description": "The client half of OwlMeans planning — the remote planning facade, the state mirror and its commit fold, and the subscribe-then-poll commit wait. React-free: it runs in a browser and in a Node client alike.",
6
6
  "type": "module",
@@ -23,17 +23,18 @@
23
23
  }
24
24
  },
25
25
  "dependencies": {
26
- "@owlmeans/auth": "^0.1.18-rc.38",
27
- "@owlmeans/client-context": "^0.1.18-rc.45",
28
- "@owlmeans/client-entrypoint": "^0.1.18-rc.44",
29
- "@owlmeans/context": "^0.1.18-rc.32",
30
- "@owlmeans/entrypoint": "^0.1.18-rc.39",
31
- "@owlmeans/error": "^0.1.18-rc.36",
32
- "@owlmeans/planning": "^0.1.18-rc.17",
33
- "@owlmeans/resource": "^0.1.18-rc.37",
34
- "@owlmeans/route": "^0.1.18-rc.33",
35
- "@owlmeans/socket": "^0.1.18-rc.37",
36
- "@owlmeans/state": "^0.1.18-rc.36"
26
+ "@owlmeans/auth": "^0.1.18-rc.39",
27
+ "@owlmeans/client-context": "^0.1.18-rc.47",
28
+ "@owlmeans/client-entrypoint": "^0.1.18-rc.46",
29
+ "@owlmeans/context": "^0.1.18-rc.33",
30
+ "@owlmeans/entrypoint": "^0.1.18-rc.40",
31
+ "@owlmeans/error": "^0.1.18-rc.37",
32
+ "@owlmeans/planning": "^0.1.18-rc.18",
33
+ "@owlmeans/resource": "^0.1.18-rc.39",
34
+ "@owlmeans/log": "^0.1.18-rc.1",
35
+ "@owlmeans/route": "^0.1.18-rc.34",
36
+ "@owlmeans/socket": "^0.1.18-rc.39",
37
+ "@owlmeans/state": "^0.1.18-rc.38"
37
38
  },
38
39
  "peerDependencies": {
39
40
  "ajv": "*",
@@ -41,10 +42,10 @@
41
42
  },
42
43
  "devDependencies": {
43
44
  "@owlmeans/dep-config": "workspace:*",
44
- "@owlmeans/server-planning": "^0.1.18-rc.20",
45
- "@owlmeans/test": "^0.1.18-rc.33",
46
- "@types/bun": "^1.4.0",
47
- "ajv": "^8.17.1",
45
+ "@owlmeans/server-planning": "^0.1.18-rc.21",
46
+ "@owlmeans/test": "^0.1.18-rc.34",
47
+ "@types/bun": "^1.4.2",
48
+ "ajv": "^8.20.0",
48
49
  "ajv-formats": "^3.0.1",
49
50
  "nodemon": "^3.1.14",
50
51
  "typescript": "^7.0.2"
package/src/commits.ts CHANGED
@@ -1,20 +1,13 @@
1
1
  import type { BasicConfig, BasicContext } from '@owlmeans/context'
2
- import {
3
- CommitFailed, CommitState, CommitTimeout, DEFAULT_COMMIT_POLL, DEFAULT_COMMIT_TIMEOUT, MAX_COMMIT_POLL,
4
- PLANNING_COMMIT_EVENT, PlanningError, WorkcardKind,
5
- } from '@owlmeans/planning'
6
- import type {
7
- CommitEvent, CommitFilter, CommitStatus, PlanningProtocols, Unsubscribe, Workcard,
8
- } from '@owlmeans/planning'
2
+ import { logger } from '@owlmeans/log'
3
+ import { CommitFailed, CommitState, CommitTimeout, DEFAULT_COMMIT_POLL, DEFAULT_COMMIT_TIMEOUT, MAX_COMMIT_POLL, PLANNING_COMMIT_EVENT, PlanningError, WorkcardKind, type CommitEvent, type CommitFilter, type CommitStatus, type PlanningProtocols, type Unsubscribe, type Workcard } from '@owlmeans/planning'
9
4
  import type { Connection } from '@owlmeans/socket'
10
5
  import { EARLY_POLL_LADDER, EARLY_POLL_MS, LONG_POLL_GRACE } from './consts.js'
11
6
  import type { RemoteCommitSource, RemoteCommitSourceOptions } from './types.js'
12
- import { dropCard, putCard, putCommit } from './utils/record.js'
7
+ import type { Subscription } from './types.local.js'
8
+ import { recordHelper } from './utils/record.js'
13
9
 
14
- interface Subscription {
15
- listener: (event: CommitEvent) => void | Promise<void>
16
- filter?: CommitFilter
17
- }
10
+ const log = logger('client-planning')
18
11
 
19
12
  const matches = (filter: CommitFilter | undefined, event: CommitEvent): boolean =>
20
13
  filter == null || (
@@ -61,7 +54,7 @@ export const makeRemoteCommitSource = <C extends BasicConfig, T extends BasicCon
61
54
  try {
62
55
  await subscription.listener(event)
63
56
  } catch (e) {
64
- console.error('Planning commit listener error:', e)
57
+ log.error('Planning commit listener failed', e)
65
58
  }
66
59
  }
67
60
  }
@@ -86,7 +79,7 @@ export const makeRemoteCommitSource = <C extends BasicConfig, T extends BasicCon
86
79
  return connection
87
80
  } catch (e) {
88
81
  opening = null
89
- console.error('Planning commit socket error:', e)
82
+ log.warn('Planning commit socket failed to open', e)
90
83
  return null
91
84
  }
92
85
  })()
@@ -122,16 +115,16 @@ export const makeRemoteCommitSource = <C extends BasicConfig, T extends BasicCon
122
115
  return
123
116
  }
124
117
  const known = await stores.commits.load(transition)
125
- await putCommit(stores.commits, {
118
+ await recordHelper.putCommit(stores.commits, {
126
119
  id: transition, state: settled.state, at: settled.at, error: settled.error,
127
120
  })
128
121
  if (settled.state !== CommitState.Committed) {
129
122
  return
130
123
  }
131
124
  if (settled.card != null) {
132
- await putCard(stores.cards, settled.card)
125
+ await recordHelper.putCard(stores.cards, settled.card)
133
126
  } else if (settled.card === null && known?.card != null) {
134
- await dropCard(stores, known.card, known.kind === WorkcardKind.Project)
127
+ await recordHelper.dropCard(stores, known.card, known.kind === WorkcardKind.Project)
135
128
  }
136
129
  }
137
130
 
package/src/consts.ts CHANGED
@@ -1,24 +1,3 @@
1
- import type { Relationship, Workcard } from '@owlmeans/planning'
2
- import { stateAlias } from '@owlmeans/state'
3
- import type { StateAlias } from '@owlmeans/state'
4
- import type { PlanningCommitRecord, PlanningStoreAliases } from './types.js'
5
-
6
- /**
7
- * The ONE card store. Projects, cards and specifications share an id space on the server, so they
8
- * share it here too — a store per kind would let a list reload of one kind drop another's rows.
9
- */
10
- export const CARDS: StateAlias<Workcard> = stateAlias<Workcard>('planning-card-state')
11
-
12
- export const LINKS: StateAlias<Relationship> = stateAlias<Relationship>('planning-link-state')
13
-
14
- /** What the client has learned about each transition it wrote or saw, keyed by transition id. */
15
- export const COMMITS: StateAlias<PlanningCommitRecord> = stateAlias<PlanningCommitRecord>('planning-commit-state')
16
-
17
- export const DEFAULT_STORE_ALIASES: Readonly<PlanningStoreAliases> = Object.freeze({
18
- cards: CARDS,
19
- links: LINKS,
20
- commits: COMMITS,
21
- })
22
1
 
23
2
  /**
24
3
  * How much longer than its own `wait` a long poll's HTTP deadline is, in milliseconds — a held
package/src/events.ts CHANGED
@@ -1,8 +1,7 @@
1
- import { CommitState, TransitionAction, WorkcardKind } from '@owlmeans/planning'
2
- import type { CommitEvent, PlanningFacade, TransitionReceiptView, Workcard } from '@owlmeans/planning'
1
+ import { CommitState, TransitionAction, WorkcardKind, type CommitEvent, type PlanningFacade, type TransitionReceiptView, type Workcard } from '@owlmeans/planning'
3
2
  import { syncLinks } from './stores.js'
4
3
  import type { PlanningStores } from './types.js'
5
- import { dropCard, putCard, putCommit } from './utils/record.js'
4
+ import { recordHelper } from './utils/record.js'
6
5
 
7
6
  /**
8
7
  * Fold one commit frame into the mirror.
@@ -22,7 +21,7 @@ export const applyCommitEvent = async (
22
21
  ): Promise<void> => {
23
22
  const known = await stores.cards.load(event.card)
24
23
 
25
- await putCommit(stores.commits, {
24
+ await recordHelper.putCommit(stores.commits, {
26
25
  id: event.transition,
27
26
  card: event.card,
28
27
  entityId: event.entityId,
@@ -50,7 +49,7 @@ export const applyCommitEvent = async (
50
49
  }
51
50
 
52
51
  if (event.action === TransitionAction.Delete) {
53
- await dropCard(stores, event.card, event.kind === WorkcardKind.Project)
52
+ await recordHelper.dropCard(stores, event.card, event.kind === WorkcardKind.Project)
54
53
  return
55
54
  }
56
55
 
@@ -60,9 +59,9 @@ export const applyCommitEvent = async (
60
59
 
61
60
  if (record === null) {
62
61
  // Committed, and gone by the time it was read: a later delete won the race.
63
- await dropCard(stores, event.card, event.kind === WorkcardKind.Project)
62
+ await recordHelper.dropCard(stores, event.card, event.kind === WorkcardKind.Project)
64
63
  } else if (record !== undefined) {
65
- await putCard(stores.cards, record)
64
+ await recordHelper.putCard(stores.cards, record)
66
65
  }
67
66
 
68
67
  if (facade != null && (event.action === TransitionAction.Link || event.action === TransitionAction.Unlink)) {
@@ -81,7 +80,7 @@ export const applyCommitEvent = async (
81
80
  export const applyReceipt = async (stores: PlanningStores, receipt: TransitionReceiptView): Promise<void> => {
82
81
  const { transition } = receipt
83
82
  if (transition.id != null) {
84
- await putCommit(stores.commits, {
83
+ await recordHelper.putCommit(stores.commits, {
85
84
  id: transition.id,
86
85
  card: transition.card,
87
86
  entityId: transition.entityId,
@@ -99,11 +98,11 @@ export const applyReceipt = async (stores: PlanningStores, receipt: TransitionRe
99
98
  return
100
99
  }
101
100
  if (transition.commit.state === CommitState.Committed && transition.action === TransitionAction.Delete) {
102
- await dropCard(stores, transition.card, transition.kind === WorkcardKind.Project)
101
+ await recordHelper.dropCard(stores, transition.card, transition.kind === WorkcardKind.Project)
103
102
  return
104
103
  }
105
104
  if (receipt.card != null) {
106
- await putCard(stores.cards, receipt.card)
105
+ await recordHelper.putCard(stores.cards, receipt.card)
107
106
  return
108
107
  }
109
108
 
@@ -116,6 +115,6 @@ export const applyReceipt = async (stores: PlanningStores, receipt: TransitionRe
116
115
  /** Write cards the caller read on its own, under the same newer-fold-wins rule as a commit. */
117
116
  export const applyCards = async (stores: Pick<PlanningStores, 'cards'>, cards: Workcard[]): Promise<void> => {
118
117
  for (const card of cards) {
119
- await putCard(stores.cards, card)
118
+ await recordHelper.putCard(stores.cards, card)
120
119
  }
121
120
  }
package/src/feed.ts CHANGED
@@ -1,14 +1,16 @@
1
1
  import type { BasicConfig, BasicContext } from '@owlmeans/context'
2
- import { criteriaOf, PLANNING_SERVICE } from '@owlmeans/planning'
3
- import type { Relationship, RelationshipQuery, Unsubscribe } from '@owlmeans/planning'
2
+ import { logger } from '@owlmeans/log'
3
+ import { criteriaOf, PLANNING_SERVICE, type Relationship, type RelationshipQuery, type Unsubscribe } from '@owlmeans/planning'
4
4
  import type { Criteria } from '@owlmeans/resource'
5
5
  import { applyCards, applyCommitEvent } from './events.js'
6
6
  import { planningStoresOf, syncCards, syncLinks } from './stores.js'
7
7
  import type { PlanningClientService, PlanningFeed, PlanningFeedOptions, PlanningFeedState } from './types.js'
8
- import { clean } from './utils/record.js'
8
+ import { recordHelper } from './utils/record.js'
9
+
10
+ const log = logger('client-planning')
9
11
 
10
12
  const linkCriteriaOf = (query: RelationshipQuery): Criteria<Relationship> =>
11
- clean({ from: query.from, to: query.to, type: query.type }) as Criteria<Relationship>
13
+ recordHelper.clean({ from: query.from, to: query.to, type: query.type }) as Criteria<Relationship>
12
14
 
13
15
  /**
14
16
  * Keep the state mirror current: subscribe to commits FIRST, then seed from the list, then fold
@@ -95,7 +97,7 @@ export const makePlanningFeed = <C extends BasicConfig, T extends BasicContext<C
95
97
  try {
96
98
  await applyCommitEvent(stores, event, facade)
97
99
  } catch (e) {
98
- console.error('Planning feed apply error:', e)
100
+ log.warn('Planning feed apply failed', { card: event.card, error: e })
99
101
  }
100
102
  }, opts.filter)
101
103
  if (stopped) {
package/src/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export type * from './types.js'
2
2
 
3
3
  export * from './consts.js'
4
+ export * from './utils.js'
4
5
  export * from './client.js'
5
6
  export * from './facade.js'
6
7
  export * from './definitions.js'
package/src/stores.ts CHANGED
@@ -1,11 +1,10 @@
1
1
  import type { BasicConfig, BasicContext } from '@owlmeans/context'
2
2
  import type { Relationship, Workcard } from '@owlmeans/planning'
3
3
  import type { Criteria } from '@owlmeans/resource'
4
- import { appendStateResource } from '@owlmeans/state'
5
- import type { StateResourceAppend } from '@owlmeans/state'
6
- import { DEFAULT_STORE_ALIASES } from './consts.js'
4
+ import { appendStateResource, type StateResourceAppend } from '@owlmeans/state'
5
+ import { DEFAULT_STORE_ALIASES } from './utils.js'
7
6
  import type { PlanningStoreAliases, PlanningStores, SyncOptions, WithPlanningStores } from './types.js'
8
- import { idsOf, putCard, putLink } from './utils/record.js'
7
+ import { recordHelper } from './utils/record.js'
9
8
 
10
9
  /**
11
10
  * Register the planning state mirror: ONE card store for every kind, a link store and a commit
@@ -53,9 +52,9 @@ export const planningStoresOf = (context: BasicContext<any>): PlanningStores | n
53
52
  export const syncCards = async (
54
53
  store: PlanningStores['cards'], items: Workcard[], where?: Criteria<Workcard>, opts?: SyncOptions
55
54
  ): Promise<void> => {
56
- await dropUnnamed(store, idsOf(items), where, opts)
55
+ await dropUnnamed(store, recordHelper.idsOf(items), where, opts)
57
56
  for (const item of items) {
58
- await putCard(store, item)
57
+ await recordHelper.putCard(store, item)
59
58
  }
60
59
  }
61
60
 
@@ -63,9 +62,9 @@ export const syncCards = async (
63
62
  export const syncLinks = async (
64
63
  store: PlanningStores['links'], items: Relationship[], where?: Criteria<Relationship>, opts?: SyncOptions
65
64
  ): Promise<void> => {
66
- await dropUnnamed(store, idsOf(items), where, opts)
65
+ await dropUnnamed(store, recordHelper.idsOf(items), where, opts)
67
66
  for (const item of items) {
68
- await putLink(store, item)
67
+ await recordHelper.putLink(store, item)
69
68
  }
70
69
  }
71
70
 
@@ -74,7 +73,7 @@ const dropUnnamed = async <T extends Workcard | Relationship>(
74
73
  ): Promise<void> => {
75
74
  const keep = new Set([...named, ...(opts?.keep ?? [])])
76
75
  const scoped = await (store as PlanningStores['cards']).list(where as Criteria<Workcard>)
77
- const stale = idsOf(scoped.items).filter(id => !keep.has(id))
76
+ const stale = recordHelper.idsOf(scoped.items).filter(id => !keep.has(id))
78
77
  if (stale.length > 0) {
79
78
  await store.purge({ id: { $in: stale } })
80
79
  }
@@ -0,0 +1,6 @@
1
+ import type { CommitEvent, CommitFilter } from '@owlmeans/planning'
2
+
3
+ export interface Subscription {
4
+ listener: (event: CommitEvent) => void | Promise<void>
5
+ filter?: CommitFilter
6
+ }
@@ -18,7 +18,7 @@ const stable = (value: unknown): unknown => {
18
18
  }
19
19
 
20
20
  /** Same content, whatever order the keys arrived in. */
21
- export const sameRecord = (left: unknown, right: unknown): boolean =>
21
+ const sameRecord = (left: unknown, right: unknown): boolean =>
22
22
  JSON.stringify(stable(left)) === JSON.stringify(stable(right))
23
23
 
24
24
  /**
@@ -28,7 +28,7 @@ export const sameRecord = (left: unknown, right: unknown): boolean =>
28
28
  * commit landed must not undo that commit. The head only ever grows: a head this client allocated
29
29
  * (`applyReceipt`) stays until a fold catches up with it.
30
30
  */
31
- export const putCard = async (store: StateResource<Workcard>, card: Workcard): Promise<Workcard> => {
31
+ const putCard = async (store: StateResource<Workcard>, card: Workcard): Promise<Workcard> => {
32
32
  if (card.id == null) {
33
33
  return card
34
34
  }
@@ -46,7 +46,7 @@ export const putCard = async (store: StateResource<Workcard>, card: Workcard): P
46
46
  return next
47
47
  }
48
48
 
49
- export const putLink = async (store: StateResource<Relationship>, link: Relationship): Promise<void> => {
49
+ const putLink = async (store: StateResource<Relationship>, link: Relationship): Promise<void> => {
50
50
  if (link.id == null) {
51
51
  return
52
52
  }
@@ -58,7 +58,7 @@ export const putLink = async (store: StateResource<Relationship>, link: Relation
58
58
  }
59
59
 
60
60
  /** Drop a card, whatever lives under it when it is a project, and every link touching any of them. */
61
- export const dropCard = async (stores: PlanningStores, id: string, project: boolean): Promise<void> => {
61
+ const dropCard = async (stores: PlanningStores, id: string, project: boolean): Promise<void> => {
62
62
  const ids = [id]
63
63
  if (project) {
64
64
  const children = await stores.cards.list({ parents: { $contains: [id] } })
@@ -71,7 +71,7 @@ export const dropCard = async (stores: PlanningStores, id: string, project: bool
71
71
  }
72
72
 
73
73
  /** Record what is known about a transition, merged over what was known before. */
74
- export const putCommit = async (
74
+ const putCommit = async (
75
75
  store: StateResource<PlanningCommitRecord>, record: Partial<PlanningCommitRecord> & { id: string, state: CommitState }
76
76
  ): Promise<PlanningCommitRecord> => {
77
77
  const known = await store.load(record.id)
@@ -84,8 +84,12 @@ export const putCommit = async (
84
84
  return next
85
85
  }
86
86
 
87
- export const clean = <T extends object>(record: T): T =>
87
+ const clean = <T extends object>(record: T): T =>
88
88
  Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined)) as T
89
89
 
90
- export const idsOf = <T extends ResourceRecord>(records: T[]): string[] =>
90
+ const idsOf = <T extends ResourceRecord>(records: T[]): string[] =>
91
91
  records.map(record => record.id).filter((id): id is string => id != null)
92
+
93
+ export const createRecordHelper = () => ({ sameRecord, putCard, putLink, dropCard, putCommit, clean, idsOf })
94
+
95
+ export const recordHelper = createRecordHelper()
@@ -0,0 +1,3 @@
1
+ import type { createRecordHelper } from './record.js'
2
+
3
+ export type RecordHelper = ReturnType<typeof createRecordHelper>
package/src/utils.ts ADDED
@@ -0,0 +1,20 @@
1
+ import { type StateAlias, stateAlias } from '@owlmeans/state'
2
+ import type { Relationship, Workcard } from '@owlmeans/planning'
3
+ import type { PlanningCommitRecord, PlanningStoreAliases } from './types.js'
4
+
5
+ /**
6
+ * The ONE card store. Projects, cards and specifications share an id space on the server, so they
7
+ * share it here too — a store per kind would let a list reload of one kind drop another's rows.
8
+ */
9
+ export const CARDS: StateAlias<Workcard> = stateAlias<Workcard>('planning-card-state')
10
+
11
+ export const LINKS: StateAlias<Relationship> = stateAlias<Relationship>('planning-link-state')
12
+
13
+ /** What the client has learned about each transition it wrote or saw, keyed by transition id. */
14
+ export const COMMITS: StateAlias<PlanningCommitRecord> = stateAlias<PlanningCommitRecord>('planning-commit-state')
15
+
16
+ export const DEFAULT_STORE_ALIASES: Readonly<PlanningStoreAliases> = Object.freeze({
17
+ cards: CARDS,
18
+ links: LINKS,
19
+ commits: COMMITS,
20
+ })