@owlmeans/client-planning 0.1.18-rc.2 → 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.
- package/README.md +2 -2
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/client-planning/SKILL.md +39 -16
- package/build/client.d.ts.map +1 -1
- package/build/client.js +7 -0
- package/build/client.js.map +1 -1
- package/build/commits.d.ts +1 -1
- package/build/commits.d.ts.map +1 -1
- package/build/commits.js +9 -7
- package/build/commits.js.map +1 -1
- package/build/consts.d.ts +0 -12
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +0 -14
- package/build/consts.js.map +1 -1
- package/build/definitions.d.ts +13 -0
- package/build/definitions.d.ts.map +1 -0
- package/build/definitions.js +64 -0
- package/build/definitions.js.map +1 -0
- package/build/events.d.ts +1 -1
- package/build/events.d.ts.map +1 -1
- package/build/events.js +9 -9
- package/build/events.js.map +1 -1
- package/build/facade.d.ts.map +1 -1
- package/build/facade.js +13 -2
- package/build/facade.js.map +1 -1
- package/build/feed.d.ts.map +1 -1
- package/build/feed.js +5 -3
- package/build/feed.js.map +1 -1
- package/build/index.d.ts +2 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/stores.d.ts +1 -1
- package/build/stores.d.ts.map +1 -1
- package/build/stores.js +7 -7
- package/build/stores.js.map +1 -1
- package/build/types.d.ts +16 -1
- package/build/types.d.ts.map +1 -1
- package/build/types.local.d.ts +6 -0
- package/build/types.local.d.ts.map +1 -0
- package/build/types.local.js +2 -0
- package/build/types.local.js.map +1 -0
- package/build/utils/record.d.ts +26 -7
- package/build/utils/record.d.ts.map +1 -1
- package/build/utils/record.js +9 -7
- package/build/utils/record.js.map +1 -1
- package/build/utils/types.d.ts +3 -0
- package/build/utils/types.d.ts.map +1 -0
- package/build/utils/types.js +2 -0
- package/build/utils/types.js.map +1 -0
- package/build/utils.d.ts +13 -0
- package/build/utils.d.ts.map +1 -0
- package/build/utils.js +15 -0
- package/build/utils.js.map +1 -0
- package/package.json +17 -16
- package/src/client.ts +9 -0
- package/src/commits.ts +10 -17
- package/src/consts.ts +0 -21
- package/src/definitions.ts +88 -0
- package/src/events.ts +10 -11
- package/src/facade.ts +14 -2
- package/src/feed.ts +7 -5
- package/src/index.ts +2 -0
- package/src/stores.ts +8 -9
- package/src/types.local.ts +6 -0
- package/src/types.ts +20 -3
- package/src/utils/record.ts +11 -7
- package/src/utils/types.ts +3 -0
- package/src/utils.ts +20 -0
- package/tests/context.ts +14 -3
- package/tests/definitions.spec.ts +56 -0
package/build/facade.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"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"}
|
package/build/feed.d.ts.map
CHANGED
|
@@ -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;
|
|
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 {
|
|
5
|
-
const
|
|
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
|
-
|
|
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":"AACA,OAAO,EAAE,UAAU,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"feed.js","sourceRoot":"","sources":["../src/feed.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
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';
|
|
6
|
+
export * from './definitions.js';
|
|
5
7
|
export * from './commits.js';
|
|
6
8
|
export * from './stores.js';
|
|
7
9
|
export * from './events.js';
|
package/build/index.d.ts.map
CHANGED
|
@@ -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,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
package/build/index.js.map
CHANGED
|
@@ -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,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
|
|
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
|
package/build/stores.d.ts.map
CHANGED
|
@@ -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;
|
|
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 './
|
|
3
|
-
import {
|
|
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
|
}
|
package/build/stores.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stores.js","sourceRoot":"","sources":["../src/stores.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"stores.js","sourceRoot":"","sources":["../src/stores.ts"],"names":[],"mappings":"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"}
|
package/build/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ClientConfig, ClientContext } from '@owlmeans/client-context';
|
|
2
2
|
import type { LazyService } from '@owlmeans/context';
|
|
3
3
|
import type { AbstractRequest, EntrypointProtocolDeclaration } from '@owlmeans/entrypoint';
|
|
4
|
-
import type { CommitFilter, CommitSource, CommitState, PlanningFacade, PlanningProtocols, PlanningSchemaRegistry, PlanningScope, PlanningService, Relationship, RelationshipQuery, TransitionAction, Workcard, WorkcardKind, WorkcardQuery } from '@owlmeans/planning';
|
|
4
|
+
import type { CommitFilter, CommitSource, CommitState, PlanningDefinitions, PlanningFacade, PlanningProtocols, PlanningSchemaRegistry, PlanningScope, PlanningService, Relationship, RelationshipQuery, TransitionAction, Workcard, WorkcardKind, WorkcardQuery } from '@owlmeans/planning';
|
|
5
5
|
import type { Criteria, ResourceRecord } from '@owlmeans/resource';
|
|
6
6
|
import type { Connection } from '@owlmeans/socket';
|
|
7
7
|
import type { StateAlias, StateResource } from '@owlmeans/state';
|
|
@@ -51,6 +51,19 @@ export interface PlanningClientService extends PlanningService, LazyService {
|
|
|
51
51
|
}) => Promise<PlanningSchemaRegistry>;
|
|
52
52
|
/** Release the shared commit socket. */
|
|
53
53
|
close: () => Promise<void>;
|
|
54
|
+
/** Data-defined types and flows — present when the tree was declared with `definitions: true`. */
|
|
55
|
+
definitions?: RemoteDefinitions;
|
|
56
|
+
}
|
|
57
|
+
/** The client half of `PlanningDefinitions`: layers cached per project, dropped on any write. */
|
|
58
|
+
export interface RemoteDefinitions extends PlanningDefinitions {
|
|
59
|
+
/** Forget every cached layer — the next read asks the server. */
|
|
60
|
+
invalidate: () => void;
|
|
61
|
+
}
|
|
62
|
+
export interface RemoteDefinitionsOptions {
|
|
63
|
+
/** Milliseconds, for every definitions call. */
|
|
64
|
+
timeout?: number;
|
|
65
|
+
/** Called after every write (the service reloads its own bundle on the next `model()`). */
|
|
66
|
+
onWrite?: () => void;
|
|
54
67
|
}
|
|
55
68
|
export interface WithPlanningClient {
|
|
56
69
|
planning: () => PlanningClientService;
|
|
@@ -77,6 +90,8 @@ export interface RemoteFacadeOptions {
|
|
|
77
90
|
loadSchemas?: () => Promise<PlanningSchemaRegistry>;
|
|
78
91
|
timeout?: number;
|
|
79
92
|
stores?: () => PlanningStores | null;
|
|
93
|
+
/** The data-defined schema surface, shared by every facade of the service. */
|
|
94
|
+
definitions?: RemoteDefinitions;
|
|
80
95
|
}
|
|
81
96
|
/** One row per transition the client wrote or saw settle. */
|
|
82
97
|
export interface PlanningCommitRecord extends ResourceRecord {
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAA;AAC1F,OAAO,KAAK,EACV,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"types.local.js","sourceRoot":"","sources":["../src/types.local.ts"],"names":[],"mappings":""}
|
package/build/utils/record.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
15
|
-
|
|
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
|
-
|
|
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
|
-
|
|
19
|
+
declare const putCommit: (store: StateResource<PlanningCommitRecord>, record: Partial<PlanningCommitRecord> & {
|
|
20
20
|
id: string;
|
|
21
21
|
state: CommitState;
|
|
22
22
|
}) => Promise<PlanningCommitRecord>;
|
|
23
|
-
|
|
24
|
-
|
|
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,
|
|
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"}
|
package/build/utils/record.js
CHANGED
|
@@ -11,7 +11,7 @@ const stable = (value) => {
|
|
|
11
11
|
return value;
|
|
12
12
|
};
|
|
13
13
|
/** Same content, whatever order the keys arrived in. */
|
|
14
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
71
|
-
|
|
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":"AAKA,MAAM,MAAM,GAAG,CAAC,KAAc,EAAW,EAAE;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IACD,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aACvE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;aAC1C,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACnE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,wDAAwD;AACxD,MAAM,
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/utils/record.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":""}
|
package/build/utils.d.ts
ADDED
|
@@ -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.
|
|
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.
|
|
27
|
-
"@owlmeans/client-context": "^0.1.18-rc.
|
|
28
|
-
"@owlmeans/client-entrypoint": "^0.1.18-rc.
|
|
29
|
-
"@owlmeans/context": "^0.1.18-rc.
|
|
30
|
-
"@owlmeans/entrypoint": "^0.1.18-rc.
|
|
31
|
-
"@owlmeans/error": "^0.1.18-rc.
|
|
32
|
-
"@owlmeans/planning": "^0.1.18-rc.
|
|
33
|
-
"@owlmeans/resource": "^0.1.18-rc.
|
|
34
|
-
"@owlmeans/
|
|
35
|
-
"@owlmeans/
|
|
36
|
-
"@owlmeans/
|
|
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.
|
|
45
|
-
"@owlmeans/test": "^0.1.18-rc.
|
|
46
|
-
"@types/bun": "^1.4.
|
|
47
|
-
"ajv": "^8.
|
|
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/client.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
} from '@owlmeans/planning'
|
|
7
7
|
import type { PlanningFacade, PlanningPlugin, PlanningSchemaRegistry } from '@owlmeans/planning'
|
|
8
8
|
import { makeRemoteCommitSource } from './commits.js'
|
|
9
|
+
import { makeRemoteDefinitions } from './definitions.js'
|
|
9
10
|
import { makeRemoteFacade } from './facade.js'
|
|
10
11
|
import { planningStoresOf } from './stores.js'
|
|
11
12
|
import type {
|
|
@@ -65,9 +66,15 @@ export const makePlanningClientService = <C extends Config, T extends Context<C>
|
|
|
65
66
|
return await loading
|
|
66
67
|
}
|
|
67
68
|
|
|
69
|
+
// A write of data-defined schemas moves the organization's bundle too: the next `model()` reloads it.
|
|
70
|
+
const definitions = options.protocols.schema.define == null
|
|
71
|
+
? undefined
|
|
72
|
+
: makeRemoteDefinitions(context, options.protocols, { timeout: options.timeout, onWrite: () => { loaded = false; loading = null } })
|
|
73
|
+
|
|
68
74
|
const facadeFor = (scope: Parameters<PlanningClientService['for']>[0]): PlanningFacade =>
|
|
69
75
|
makeRemoteFacade(context, options.protocols, { ...options.scope, ...scope }, {
|
|
70
76
|
commits, schemas: registry, loadSchemas, timeout: options.timeout, stores,
|
|
77
|
+
...(definitions != null ? { definitions } : {}),
|
|
71
78
|
})
|
|
72
79
|
|
|
73
80
|
let fallback: PlanningFacade | null = null
|
|
@@ -106,6 +113,8 @@ export const makePlanningClientService = <C extends Config, T extends Context<C>
|
|
|
106
113
|
},
|
|
107
114
|
|
|
108
115
|
close: async () => await commits.close(),
|
|
116
|
+
|
|
117
|
+
...(definitions != null ? { definitions } : {}),
|
|
109
118
|
})
|
|
110
119
|
}
|
|
111
120
|
|
package/src/commits.ts
CHANGED
|
@@ -1,20 +1,13 @@
|
|
|
1
1
|
import type { BasicConfig, BasicContext } from '@owlmeans/context'
|
|
2
|
-
import {
|
|
3
|
-
|
|
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 {
|
|
7
|
+
import type { Subscription } from './types.local.js'
|
|
8
|
+
import { recordHelper } from './utils/record.js'
|
|
13
9
|
|
|
14
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|