@cavelang/core 0.5.0 → 0.12.0

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.
@@ -18,6 +18,10 @@ export type Prefix = (typeof prefixes)[number];
18
18
  export declare const prefix: (context: Context) => undefined | Prefix;
19
19
  /** @returns canonical `@ctx` text. */
20
20
  export declare const format: (context: Context) => string;
21
+ /** @returns `src:`-prefixed source context for an actor: `cli` → `src:cli`. */
22
+ export declare const source: (actor: string) => Context;
23
+ /** @returns whether any context is a `src:` source context (spec §9.5). */
24
+ export declare const hasSource: (contexts: readonly Context[]) => boolean;
21
25
  /**
22
26
  * @returns deduplicated contexts in original order. Claim keys use the
23
27
  * sorted form (see `Key`); emission preserves author order.
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAE5B,MAAM,MAAM,CAAC,GAAG,OAAO,CAAA;AAEvB,gDAAgD;AAChD,eAAO,MAAM,QAAQ,0CAA2C,CAAA;AAEhE,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;AAI9C;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,SAAS,OAAO,KAAG,SAAS,GAAG,MAOrD,CAAA;AAED,sCAAsC;AACtC,eAAO,MAAM,MAAM,GAAI,SAAS,OAAO,KAAG,MAC3B,CAAA;AAEf;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,UAAU,SAAS,OAAO,EAAE,KAAG,OAAO,EACrC,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAE5B,MAAM,MAAM,CAAC,GAAG,OAAO,CAAA;AAEvB,gDAAgD;AAChD,eAAO,MAAM,QAAQ,0CAA2C,CAAA;AAEhE,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;AAI9C;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,SAAS,OAAO,KAAG,SAAS,GAAG,MAOrD,CAAA;AAED,sCAAsC;AACtC,eAAO,MAAM,MAAM,GAAI,SAAS,OAAO,KAAG,MAC3B,CAAA;AAEf,+EAA+E;AAC/E,eAAO,MAAM,MAAM,GAAI,OAAO,MAAM,KAAG,OACvB,CAAA;AAEhB,2EAA2E;AAC3E,eAAO,MAAM,SAAS,GAAI,UAAU,SAAS,OAAO,EAAE,KAAG,OACJ,CAAA;AAErD;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,UAAU,SAAS,OAAO,EAAE,KAAG,OAAO,EACrC,CAAA"}
@@ -23,6 +23,10 @@ export const prefix = (context) => {
23
23
  };
24
24
  /** @returns canonical `@ctx` text. */
25
25
  export const format = (context) => `@${context}`;
26
+ /** @returns `src:`-prefixed source context for an actor: `cli` → `src:cli`. */
27
+ export const source = (actor) => `src:${actor}`;
28
+ /** @returns whether any context is a `src:` source context (spec §9.5). */
29
+ export const hasSource = (contexts) => contexts.some(context => prefix(context) === 'src');
26
30
  /**
27
31
  * @returns deduplicated contexts in original order. Claim keys use the
28
32
  * sorted form (see `Key`); emission preserves author order.
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,gDAAgD;AAChD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAU,CAAA;AAIhE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,QAAQ,CAAC,CAAA;AAE3C;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAsB,EAAE;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACpC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IACtC,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAc,CAAC,CAAC,CAAC,SAAS,CAAA;AACzD,CAAC,CAAA;AAED,sCAAsC;AACtC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAU,EAAE,CACjD,IAAI,OAAO,EAAE,CAAA;AAEf;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAA4B,EAAa,EAAE,CAChE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,gDAAgD;AAChD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAU,CAAA;AAIhE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,QAAQ,CAAC,CAAA;AAE3C;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAsB,EAAE;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACpC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IACtC,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAc,CAAC,CAAC,CAAC,SAAS,CAAA;AACzD,CAAC,CAAA;AAED,sCAAsC;AACtC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAU,EAAE,CACjD,IAAI,OAAO,EAAE,CAAA;AAEf,+EAA+E;AAC/E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAa,EAAW,EAAE,CAC/C,OAAO,KAAK,EAAE,CAAA;AAEhB,2EAA2E;AAC3E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAA4B,EAAW,EAAE,CACjE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,CAAA;AAErD;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAA4B,EAAa,EAAE,CAChE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA"}
@@ -23,6 +23,11 @@ export declare const at: (ms: number, seq: number, rand: Uint8Array) => string;
23
23
  * within the process even across same-millisecond calls and clock skew.
24
24
  */
25
25
  export declare const next: (now?: () => number) => string;
26
+ /**
27
+ * @returns the unix millisecond timestamp encoded in a UUIDv7's first
28
+ * 48 bits — how transaction ids answer *when* (spec §9.1, §20.2 staleness).
29
+ */
30
+ export declare const msOf: (id: string) => number;
26
31
  /** @returns `true` if `s` is a well-formed UUIDv7 string. */
27
32
  export declare const is: (s: string) => boolean;
28
33
  //# sourceMappingURL=uuidv7.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uuidv7.d.ts","sourceRoot":"","sources":["../../src/uuidv7.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH;;;;;;;GAOG;AACH,eAAO,MAAM,EAAE,GAAI,IAAI,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,KAAG,MAmB9D,CAAA;AAKD;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,MAAK,MAAM,MAAiB,KAAG,MAgBnD,CAAA;AAID,6DAA6D;AAC7D,eAAO,MAAM,EAAE,GAAI,GAAG,MAAM,KAAG,OACf,CAAA"}
1
+ {"version":3,"file":"uuidv7.d.ts","sourceRoot":"","sources":["../../src/uuidv7.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH;;;;;;;GAOG;AACH,eAAO,MAAM,EAAE,GAAI,IAAI,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,KAAG,MAmB9D,CAAA;AAKD;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,MAAK,MAAM,MAAiB,KAAG,MAgBnD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,IAAI,MAAM,KAAG,MACqB,CAAA;AAIvD,6DAA6D;AAC7D,eAAO,MAAM,EAAE,GAAI,GAAG,MAAM,KAAG,OACf,CAAA"}
@@ -63,6 +63,11 @@ export const next = (now = Date.now) => {
63
63
  randomFillSync(rand);
64
64
  return at(ms, lastSeq, rand);
65
65
  };
66
+ /**
67
+ * @returns the unix millisecond timestamp encoded in a UUIDv7's first
68
+ * 48 bits — how transaction ids answer *when* (spec §9.1, §20.2 staleness).
69
+ */
70
+ export const msOf = (id) => Number.parseInt(id.slice(0, 8) + id.slice(9, 13), 16);
66
71
  const uuidRe = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
67
72
  /** @returns `true` if `s` is a well-formed UUIDv7 string. */
68
73
  export const is = (s) => uuidRe.test(s);
@@ -1 +1 @@
1
- {"version":3,"file":"uuidv7.js","sourceRoot":"","sources":["../../src/uuidv7.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uuidv7.js","sourceRoot":"","sources":["../../src/uuidv7.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,MAAc,EAAU,EAAE,CAChD,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAEtC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAU,EAAE,GAAW,EAAE,IAAgB,EAAU,EAAE;IACtE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,gBAAgB,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAA;IACtE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,GAAG,CAAC,CAAA;IAC1D,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IACjE,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACxB,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IAC5C,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;QACjB,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC;QACtC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;KACzD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACb,CAAC,CAAA;AAED,IAAI,MAAM,GAAG,CAAC,CAAC,CAAA;AACf,IAAI,OAAO,GAAG,CAAC,CAAA;AAEf;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAoB,IAAI,CAAC,GAAG,EAAU,EAAE;IAC3D,IAAI,EAAE,GAAG,GAAG,EAAE,CAAA;IACd,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;QACjB,EAAE,GAAG,MAAM,CAAA;QACX,OAAO,IAAI,CAAC,CAAA;QACZ,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC;YACpB,EAAE,IAAI,CAAC,CAAA;YACP,OAAO,GAAG,CAAC,CAAA;QACb,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CAAC,CAAA;IACb,CAAC;IACD,MAAM,GAAG,EAAE,CAAA;IACX,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;IAC9B,cAAc,CAAC,IAAI,CAAC,CAAA;IACpB,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAAU,EAAU,EAAE,CACzC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;AAEvD,MAAM,MAAM,GAAG,uEAAuE,CAAA;AAEtF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAS,EAAW,EAAE,CACvC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA"}
@@ -24,6 +24,8 @@ export declare const qualifiers: readonly ["WHEN", "UNLESS", "VIA", "BECAUSE"];
24
24
  export type Qualifier = (typeof qualifiers)[number];
25
25
  /** The inverse-declaration verb (spec §5.5). */
26
26
  export declare const REVERSE = "REVERSE";
27
+ /** The shape-expectation meta-verb (spec §20.1). */
28
+ export declare const EXPECTS = "EXPECTS";
27
29
  /** The standard inverse names (spec §5.5's declaration block). */
28
30
  export declare const standardInverses: readonly ["PART-OF", "CAUSED-BY", "FOLLOWS", "USED-BY", "NEEDED-BY", "ENABLED-BY", "BLOCKED-BY", "EXTENDED-BY"];
29
31
  /** All standard relational verbs (qualifiers excluded). */
@@ -39,7 +41,8 @@ export declare const isStandard: (v: string) => boolean;
39
41
  export declare const isQualifier: (v: string) => v is Qualifier;
40
42
  /**
41
43
  * @returns `true` if `v` belongs to the known standard vocabulary —
42
- * standard verbs, `HAS`, `REVERSE`, and the standard §5.5 inverse names.
44
+ * standard verbs, `HAS`, `REVERSE`, `EXPECTS`, and the standard §5.5
45
+ * inverse names.
43
46
  * Used by the parser's indentation tiebreak: `USES JWT` is a continuation
44
47
  * (JWT is not a known verb) while `API NEEDS auth` is a full triple.
45
48
  */
@@ -1 +1 @@
1
- {"version":3,"file":"verb.d.ts","sourceRoot":"","sources":["../../src/verb.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,IAAI,GAAG,MAAM,CAAA;AAEzB,MAAM,MAAM,CAAC,GAAG,IAAI,CAAA;AAEpB,mCAAmC;AACnC,eAAO,MAAM,SAAS,wBAAyB,CAAA;AAE/C,yCAAyC;AACzC,eAAO,MAAM,QAAQ,uDAAwD,CAAA;AAE7E,wCAAwC;AACxC,eAAO,MAAM,SAAS,sCAAuC,CAAA;AAE7D,6CAA6C;AAC7C,eAAO,MAAM,UAAU,2DAA4D,CAAA;AAEnF,0CAA0C;AAC1C,eAAO,MAAM,SAAS,oDAAqD,CAAA;AAE3E,+EAA+E;AAC/E,eAAO,MAAM,UAAU,+CAAgD,CAAA;AAEvE,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnD,gDAAgD;AAChD,eAAO,MAAM,OAAO,YAAY,CAAA;AAEhC,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,iHAGnB,CAAA;AAEV,2DAA2D;AAC3D,eAAO,MAAM,QAAQ,EAAE,SAAS,IAAI,EAKnC,CAAA;AAMD;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,KAAG,OACJ,CAAA;AAEpC,sEAAsE;AACtE,eAAO,MAAM,UAAU,GAAI,GAAG,MAAM,KAAG,OACnB,CAAA;AAEpB,uFAAuF;AACvF,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,SACxB,CAAA;AAErB;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,KAAG,OACnB,CAAA"}
1
+ {"version":3,"file":"verb.d.ts","sourceRoot":"","sources":["../../src/verb.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,IAAI,GAAG,MAAM,CAAA;AAEzB,MAAM,MAAM,CAAC,GAAG,IAAI,CAAA;AAEpB,mCAAmC;AACnC,eAAO,MAAM,SAAS,wBAAyB,CAAA;AAE/C,yCAAyC;AACzC,eAAO,MAAM,QAAQ,uDAAwD,CAAA;AAE7E,wCAAwC;AACxC,eAAO,MAAM,SAAS,sCAAuC,CAAA;AAE7D,6CAA6C;AAC7C,eAAO,MAAM,UAAU,2DAA4D,CAAA;AAEnF,0CAA0C;AAC1C,eAAO,MAAM,SAAS,oDAAqD,CAAA;AAE3E,+EAA+E;AAC/E,eAAO,MAAM,UAAU,+CAAgD,CAAA;AAEvE,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnD,gDAAgD;AAChD,eAAO,MAAM,OAAO,YAAY,CAAA;AAEhC,oDAAoD;AACpD,eAAO,MAAM,OAAO,YAAY,CAAA;AAEhC,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,iHAGnB,CAAA;AAEV,2DAA2D;AAC3D,eAAO,MAAM,QAAQ,EAAE,SAAS,IAAI,EAKnC,CAAA;AAMD;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,KAAG,OACJ,CAAA;AAEpC,sEAAsE;AACtE,eAAO,MAAM,UAAU,GAAI,GAAG,MAAM,KAAG,OACnB,CAAA;AAEpB,uFAAuF;AACvF,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,SACxB,CAAA;AAErB;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,KAAG,OACnB,CAAA"}
package/dist/src/verb.js CHANGED
@@ -21,6 +21,8 @@ export const structure = ['CONTAINS', 'PRECEDES', 'EXCEEDS', 'VS'];
21
21
  export const qualifiers = ['WHEN', 'UNLESS', 'VIA', 'BECAUSE'];
22
22
  /** The inverse-declaration verb (spec §5.5). */
23
23
  export const REVERSE = 'REVERSE';
24
+ /** The shape-expectation meta-verb (spec §20.1). */
25
+ export const EXPECTS = 'EXPECTS';
24
26
  /** The standard inverse names (spec §5.5's declaration block). */
25
27
  export const standardInverses = [
26
28
  'PART-OF', 'CAUSED-BY', 'FOLLOWS', 'USED-BY',
@@ -35,7 +37,7 @@ export const standard = [
35
37
  ];
36
38
  const standardSet = new Set(standard);
37
39
  const qualifierSet = new Set(qualifiers);
38
- const knownSet = new Set([...standard, 'HAS', REVERSE, ...standardInverses]);
40
+ const knownSet = new Set([...standard, 'HAS', REVERSE, EXPECTS, ...standardInverses]);
39
41
  /**
40
42
  * @returns `true` if `s` has the lexical shape of a verb — an uppercase atom:
41
43
  * uppercase letters and internal `-` (spec §16 `uppercase_atom`).
@@ -47,7 +49,8 @@ export const isStandard = (v) => standardSet.has(v);
47
49
  export const isQualifier = (v) => qualifierSet.has(v);
48
50
  /**
49
51
  * @returns `true` if `v` belongs to the known standard vocabulary —
50
- * standard verbs, `HAS`, `REVERSE`, and the standard §5.5 inverse names.
52
+ * standard verbs, `HAS`, `REVERSE`, `EXPECTS`, and the standard §5.5
53
+ * inverse names.
51
54
  * Used by the parser's indentation tiebreak: `USES JWT` is a continuation
52
55
  * (JWT is not a known verb) while `API NEEDS auth` is a full triple.
53
56
  */
@@ -1 +1 @@
1
- {"version":3,"file":"verb.js","sourceRoot":"","sources":["../../src/verb.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,mCAAmC;AACnC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,KAAK,CAAU,CAAA;AAE/C,yCAAyC;AACzC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAA;AAE7E,wCAAwC;AACxC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAU,CAAA;AAE7D,6CAA6C;AAC7C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAA;AAEnF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAU,CAAA;AAE3E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAU,CAAA;AAIvE,gDAAgD;AAChD,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAA;AAEhC,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS;IAC5C,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa;CAC9C,CAAA;AAEV,2DAA2D;AAC3D,MAAM,CAAC,MAAM,QAAQ,GAAoB;IACvC,GAAG,QAAQ;IACX,GAAG,SAAS;IACZ,GAAG,UAAU;IACb,GAAG,SAAS;CACb,CAAA;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,QAAQ,CAAC,CAAA;AAC7C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,UAAU,CAAC,CAAA;AAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAA;AAEpF;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAW,EAAE,CAChD,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEpC,sEAAsE;AACtE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAW,EAAE,CAC/C,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAEpB,uFAAuF;AACvF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAkB,EAAE,CACvD,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAErB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAW,EAAE,CAC5C,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"verb.js","sourceRoot":"","sources":["../../src/verb.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,mCAAmC;AACnC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,KAAK,CAAU,CAAA;AAE/C,yCAAyC;AACzC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAA;AAE7E,wCAAwC;AACxC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAU,CAAA;AAE7D,6CAA6C;AAC7C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAA;AAEnF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAU,CAAA;AAE3E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAU,CAAA;AAIvE,gDAAgD;AAChD,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAA;AAEhC,oDAAoD;AACpD,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAA;AAEhC,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS;IAC5C,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa;CAC9C,CAAA;AAEV,2DAA2D;AAC3D,MAAM,CAAC,MAAM,QAAQ,GAAoB;IACvC,GAAG,QAAQ;IACX,GAAG,SAAS;IACZ,GAAG,UAAU;IACb,GAAG,SAAS;CACb,CAAA;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,QAAQ,CAAC,CAAA;AAC7C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,UAAU,CAAC,CAAA;AAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAA;AAE7F;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAW,EAAE,CAChD,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEpC,sEAAsE;AACtE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAW,EAAE,CAC/C,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAEpB,uFAAuF;AACvF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAkB,EAAE,CACvD,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAErB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAW,EAAE,CAC5C,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cavelang/core",
3
- "version": "0.5.0",
3
+ "version": "0.12.0",
4
4
  "type": "module",
5
5
  "description": "CAVE domain model — claims, values, units, uncertainty, claim keys, UUIDv7 transactions.",
6
6
  "license": "CC0-1.0",
package/src/context.ts CHANGED
@@ -35,6 +35,14 @@ export const prefix = (context: Context): undefined | Prefix => {
35
35
  export const format = (context: Context): string =>
36
36
  `@${context}`
37
37
 
38
+ /** @returns `src:`-prefixed source context for an actor: `cli` → `src:cli`. */
39
+ export const source = (actor: string): Context =>
40
+ `src:${actor}`
41
+
42
+ /** @returns whether any context is a `src:` source context (spec §9.5). */
43
+ export const hasSource = (contexts: readonly Context[]): boolean =>
44
+ contexts.some(context => prefix(context) === 'src')
45
+
38
46
  /**
39
47
  * @returns deduplicated contexts in original order. Claim keys use the
40
48
  * sorted form (see `Key`); emission preserves author order.
package/src/uuidv7.ts CHANGED
@@ -69,6 +69,13 @@ export const next = (now: () => number = Date.now): string => {
69
69
  return at(ms, lastSeq, rand)
70
70
  }
71
71
 
72
+ /**
73
+ * @returns the unix millisecond timestamp encoded in a UUIDv7's first
74
+ * 48 bits — how transaction ids answer *when* (spec §9.1, §20.2 staleness).
75
+ */
76
+ export const msOf = (id: string): number =>
77
+ Number.parseInt(id.slice(0, 8) + id.slice(9, 13), 16)
78
+
72
79
  const uuidRe = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/
73
80
 
74
81
  /** @returns `true` if `s` is a well-formed UUIDv7 string. */
package/src/verb.ts CHANGED
@@ -35,6 +35,9 @@ export type Qualifier = (typeof qualifiers)[number]
35
35
  /** The inverse-declaration verb (spec §5.5). */
36
36
  export const REVERSE = 'REVERSE'
37
37
 
38
+ /** The shape-expectation meta-verb (spec §20.1). */
39
+ export const EXPECTS = 'EXPECTS'
40
+
38
41
  /** The standard inverse names (spec §5.5's declaration block). */
39
42
  export const standardInverses = [
40
43
  'PART-OF', 'CAUSED-BY', 'FOLLOWS', 'USED-BY',
@@ -51,7 +54,7 @@ export const standard: readonly Verb[] = [
51
54
 
52
55
  const standardSet = new Set<string>(standard)
53
56
  const qualifierSet = new Set<string>(qualifiers)
54
- const knownSet = new Set<string>([...standard, 'HAS', REVERSE, ...standardInverses])
57
+ const knownSet = new Set<string>([...standard, 'HAS', REVERSE, EXPECTS, ...standardInverses])
55
58
 
56
59
  /**
57
60
  * @returns `true` if `s` has the lexical shape of a verb — an uppercase atom:
@@ -70,7 +73,8 @@ export const isQualifier = (v: string): v is Qualifier =>
70
73
 
71
74
  /**
72
75
  * @returns `true` if `v` belongs to the known standard vocabulary —
73
- * standard verbs, `HAS`, `REVERSE`, and the standard §5.5 inverse names.
76
+ * standard verbs, `HAS`, `REVERSE`, `EXPECTS`, and the standard §5.5
77
+ * inverse names.
74
78
  * Used by the parser's indentation tiebreak: `USES JWT` is a continuation
75
79
  * (JWT is not a known verb) while `API NEEDS auth` is a full triple.
76
80
  */
package/License.md DELETED
@@ -1,6 +0,0 @@
1
- # CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
2
-
3
- To the extent possible under law, the authors listed in [Authors.md](./Authors.md) have waived all copyright and related or neighboring rights to this software and associated documentation files (the "Software").
4
-
5
- For more information, please see:
6
- https://creativecommons.org/publicdomain/zero/1.0/