@balena/contrato 0.16.0 → 0.17.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.
package/README.md CHANGED
@@ -14,8 +14,8 @@ const osContract = new Contract({
14
14
  children: [
15
15
  { type: 'sw.service', slug: 'balena-engine', version: '20.10.43' },
16
16
  { type: 'sw.service', slug: 'NetworkManager', version: '0.6.0' },
17
+ { type: 'sw.feature', slug: 'secureboot' },
17
18
  ],
18
- provides: [{ type: 'sw.feature', slug: 'secureboot' }],
19
19
  });
20
20
 
21
21
  const serviceContract = new Contract({
@@ -36,7 +36,7 @@ if (osContract.satisfiesChildContract(serviceContract)) {
36
36
 
37
37
  ## About contracts
38
38
 
39
- Contracts provide a standardized mechanism to describing _things_. A thing generally refers to something versionable, e.g. a software library, a feature, an API, etc. Relationships between things can be established via composition and referencing (`requires` and `provides`). Through this library, contracts can be validated, composed and combined.
39
+ Contracts provide a standardized mechanism to describing _things_. A thing generally refers to something versionable, e.g. a software library, a feature, an API, etc. Relationships between things can be established via composition and referencing (`children` and `requires`). Through this library, contracts can be validated, composed and combined.
40
40
 
41
41
  ### Why build this?
42
42
 
@@ -99,6 +99,9 @@ Describe a complex _thing_ via a composite contract
99
99
  }
100
100
  ```
101
101
 
102
+ Children are also how a contract declares the capabilities it makes available to
103
+ its context: any child can be matched by another contract's `requires`.
104
+
102
105
  Describe a set of things via [templating](#contract-templating)
103
106
 
104
107
  ```json
@@ -25,7 +25,6 @@ export default class Contract {
25
25
  types?: Set<string>;
26
26
  }): Contract[];
27
27
  getChildrenByType(type: string): Contract[];
28
- findChildrenWithCapabilities(matcher: MatcherObject): Contract[];
29
28
  findChildren(matcher: MatcherObject): Contract[];
30
29
  getChildrenCombinations(options: {
31
30
  type: string;
package/build/contract.js CHANGED
@@ -95,12 +95,6 @@ class Contract {
95
95
  getChildrenByType(type) {
96
96
  return this.#inner.getChildrenByType(type).map((c) => Contract.fromWasm(c));
97
97
  }
98
- findChildrenWithCapabilities(matcher) {
99
- if (!matcher || !('type' in matcher) || !matcher.type) {
100
- return [];
101
- }
102
- return this.#inner.findChildrenWithCapabilities(matcher).map((c) => Contract.fromWasm(c));
103
- }
104
98
  findChildren(matcher) {
105
99
  if (!matcher || !('type' in matcher) || !matcher.type) {
106
100
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../lib/contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../lib/contract.ts"],"names":[],"mappings":"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"}
package/build/types.d.ts CHANGED
@@ -19,7 +19,7 @@ export type ContractRequirement = MatcherObject | {
19
19
  } | {
20
20
  not: MatcherObject[];
21
21
  };
22
- export type ChildrenTree = Record<string, unknown>;
22
+ export type ChildrenTree = Record<string, unknown> | ContractObject[];
23
23
  interface PartialContract {
24
24
  slug?: string;
25
25
  version?: string;
@@ -29,13 +29,9 @@ interface PartialContract {
29
29
  data?: any;
30
30
  assets?: Record<string, Asset>;
31
31
  requires?: ContractRequirement[];
32
- provides?: ContractCapability[];
33
32
  variants?: PartialContract[];
34
33
  children?: ChildrenTree;
35
34
  }
36
- export interface ContractCapability extends PartialContract {
37
- type: string;
38
- }
39
35
  export interface ContractObject extends PartialContract {
40
36
  type: string;
41
37
  canonicalSlug?: string;
@@ -34,22 +34,13 @@ export class Contract {
34
34
  */
35
35
  static build(source: any): Array<any>;
36
36
  /**
37
- * Searches for children matching the given matcher, populating the
38
- * internal search cache on first lookup.
37
+ * Searches for children matching the given matcher.
39
38
  *
40
39
  * `matcher` is a plain JS object shaped like `{ type, slug?,
41
40
  * version?, data? }`, deserialized into [`ContractMatcher`] at the
42
41
  * boundary.
43
42
  */
44
43
  findChildren(matcher: any): Array<any>;
45
- /**
46
- * Searches for children whose `provides` capabilities match the
47
- * given matcher. Unlike [`Self::find_children`], this path is not
48
- * cached.
49
- *
50
- * `matcher` has the same shape as in [`Self::find_children`].
51
- */
52
- findChildrenWithCapabilities(matcher: any): Array<any>;
53
44
  /**
54
45
  * Aggregates every unsatisfied compiled requirement across all
55
46
  * descendants of `self`, as an array of plain JS objects.
@@ -78,8 +78,7 @@ class Contract {
78
78
  return takeFromExternrefTable0(ret[0]);
79
79
  }
80
80
  /**
81
- * Searches for children matching the given matcher, populating the
82
- * internal search cache on first lookup.
81
+ * Searches for children matching the given matcher.
83
82
  *
84
83
  * `matcher` is a plain JS object shaped like `{ type, slug?,
85
84
  * version?, data? }`, deserialized into [`ContractMatcher`] at the
@@ -94,22 +93,6 @@ class Contract {
94
93
  }
95
94
  return takeFromExternrefTable0(ret[0]);
96
95
  }
97
- /**
98
- * Searches for children whose `provides` capabilities match the
99
- * given matcher. Unlike [`Self::find_children`], this path is not
100
- * cached.
101
- *
102
- * `matcher` has the same shape as in [`Self::find_children`].
103
- * @param {any} matcher
104
- * @returns {Array<any>}
105
- */
106
- findChildrenWithCapabilities(matcher) {
107
- const ret = wasm.contract_findChildrenWithCapabilities(this.__wbg_ptr, matcher);
108
- if (ret[2]) {
109
- throw takeFromExternrefTable0(ret[1]);
110
- }
111
- return takeFromExternrefTable0(ret[0]);
112
- }
113
96
  /**
114
97
  * Aggregates every unsatisfied compiled requirement across all
115
98
  * descendants of `self`, as an array of plain JS objects.
@@ -7,7 +7,6 @@ export const contract_addChildren: (a: number, b: number, c: number) => void;
7
7
  export const contract_areChildrenSatisfied: (a: number, b: number, c: number) => number;
8
8
  export const contract_build: (a: any) => [number, number, number];
9
9
  export const contract_findChildren: (a: number, b: any) => [number, number, number];
10
- export const contract_findChildrenWithCapabilities: (a: number, b: any) => [number, number, number];
11
10
  export const contract_getAllNotSatisfiedChildRequirements: (a: number, b: number, c: number) => [number, number, number];
12
11
  export const contract_getAllSlugs: (a: number) => any;
13
12
  export const contract_getCanonicalSlug: (a: number) => [number, number];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@balena/contrato",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "description": "The official contract implementation",
5
5
  "homepage": "https://github.com/balena-io/contrato",
6
6
  "main": "build/index.js",
@@ -72,6 +72,6 @@
72
72
  "npm": ">=10.0.0"
73
73
  },
74
74
  "versionist": {
75
- "publishedAt": "2026-08-17T21:00:16.133Z"
75
+ "publishedAt": "2026-08-24T23:14:58.674Z"
76
76
  }
77
77
  }