@toa.io/pointer 1.0.0-alpha.326 → 1.0.0-alpha.329

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toa.io/pointer",
3
- "version": "1.0.0-alpha.326",
3
+ "version": "1.0.0-alpha.329",
4
4
  "type": "module",
5
5
  "description": "Toa Pointer",
6
6
  "homepage": "https://toa.io",
@@ -33,11 +33,11 @@
33
33
  "main": "transpiled/index.js",
34
34
  "types": "transpiled/index.d.ts",
35
35
  "dependencies": {
36
- "@toa.io/generic": "1.0.0-alpha.311",
37
- "@toa.io/schemas": "1.0.0-alpha.326"
36
+ "@toa.io/generic": "1.0.0-alpha.329",
37
+ "@toa.io/schemas": "1.0.0-alpha.329"
38
38
  },
39
39
  "scripts": {
40
40
  "transpile": "tsc"
41
41
  },
42
- "gitHead": "60f11bdc805d0c39bcb06064b2218b11114a35ad"
42
+ "gitHead": "a2751218f403615dda260a6f7469d182eb8864d0"
43
43
  }
package/readme.md CHANGED
@@ -30,23 +30,24 @@ Pointer values can contain [shards](/libraries/generic/readme.md#shards) syntax.
30
30
 
31
31
  ```yaml
32
32
  something:
33
- one: redis://redis{0-2}.example.com
33
+ one: redis://redis[0..31].example.com
34
34
  ```
35
35
 
36
36
  ### `default` namespace
37
37
 
38
- When the Pointer is used for component-specific URLs and the component is in the `default`
39
- namespace (that is, no `namepsace` is specified in its manifest), the annotation value must
40
- explicitly contain the `default` namespace.
38
+ A component that declares no namespace is in `default`. It is keyed by its name; `default`
39
+ keys all of them.
41
40
 
42
41
  ```yaml
43
42
  amqp:
44
- # value for the `default` namespace
43
+ # every component without a namespace
45
44
  default: amqp://default-ns.rmq.example.com
46
- # value for `teapots` component of the `default` namespace
47
- default.teapots: amqp://default-dummy.rmq.example.com
45
+ # the `teapots` component, which declares none
46
+ teapots: amqp://default-dummy.rmq.example.com
48
47
  ```
49
48
 
49
+ `default.teapots` names the same component, and is the key taken where both are written.
50
+
50
51
  ## Resolution
51
52
 
52
53
  Although the most common use case of the Pointer is component-specific connection strings, where
@@ -9,19 +9,26 @@ export function resolve(id, selector) {
9
9
  return withCredentials(variable, urls);
10
10
  }
11
11
  export function resolveRecord(uris, selector) {
12
- if (selector in uris)
13
- return getRecord(uris, selector);
14
12
  const segments = selector.split('.');
15
- while (segments.pop() !== undefined) {
13
+ do {
16
14
  const current = segments.join('.');
17
15
  if (current in uris)
18
16
  return getRecord(uris, current);
19
- }
17
+ // a component that declares no namespace is keyed by its name as well
18
+ const bare = unqualified(current);
19
+ if (bare !== undefined && bare in uris)
20
+ return getRecord(uris, bare);
21
+ } while (segments.pop() !== undefined && segments.length > 0);
20
22
  if ('.' in uris)
21
23
  return getRecord(uris, '.');
22
24
  else
23
25
  throw new Error(`Selector '${selector}' cannot be resolved.`);
24
26
  }
27
+ /** What follows the namespace of a selector in `default`, where anything does. */
28
+ function unqualified(selector) {
29
+ return selector.startsWith(DEFAULT) ? selector.slice(DEFAULT.length) : undefined;
30
+ }
31
+ const DEFAULT = 'default.';
25
32
  function withCredentials(variable, urls) {
26
33
  const username = environment.get(variable + '_USERNAME') ?? '';
27
34
  const password = environment.get(variable + '_PASSWORD') ?? '';
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../source/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,MAAM,UAAU,OAAO,CAAC,EAAU,EAAE,QAAgB;IAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAEvC,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,cAAc,CAAC,CAAA;IAEnE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAE7B,OAAO,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAgB;IAC1D,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAEtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAEpC,OAAO,QAAQ,CAAC,GAAG,EAAE,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAElC,IAAI,OAAO,IAAI,IAAI;YAAE,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;;QACvC,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,uBAAuB,CAAC,CAAA;AACpE,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,IAAc;IACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;IAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;IAE9D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,SAAS,cAAc,CAAC,GAAW,EAAE,QAAgB,EAAE,QAAgB;IACrE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IAExB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACvB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAEvB,OAAO,GAAG,CAAC,IAAI,CAAA;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,GAAW;IAC1C,OAAO;QACL,GAAG;QACH,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC;KACtB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../source/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,MAAM,UAAU,OAAO,CAAC,EAAU,EAAE,QAAgB;IAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAEvC,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,cAAc,CAAC,CAAA;IAEnE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAE7B,OAAO,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAgB;IAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAEpC,GAAG,CAAC;QACF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAElC,IAAI,OAAO,IAAI,IAAI;YAAE,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEpD,sEAAsE;QACtE,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;QAEjC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,IAAI,IAAI;YAAE,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACtE,CAAC,QAAQ,QAAQ,CAAC,GAAG,EAAE,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAC;IAE7D,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;;QACvC,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,uBAAuB,CAAC,CAAA;AACpE,CAAC;AAED,kFAAkF;AAClF,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAClF,CAAC;AAED,MAAM,OAAO,GAAG,UAAU,CAAA;AAE1B,SAAS,eAAe,CAAC,QAAgB,EAAE,IAAc;IACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;IAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;IAE9D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,SAAS,cAAc,CAAC,GAAW,EAAE,QAAgB,EAAE,QAAgB;IACrE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IAExB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACvB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAEvB,OAAO,GAAG,CAAC,IAAI,CAAA;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,GAAW;IAC1C,OAAO;QACL,GAAG;QACH,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC;KACtB,CAAA;AACH,CAAC"}