@toa.io/extensions.exposition 1.0.0-alpha.288 → 1.0.0-alpha.289

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 (120) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/components/identity.basic/tsconfig.tsbuildinfo +1 -1
  3. package/components/identity.clients/tsconfig.tsbuildinfo +1 -1
  4. package/components/identity.credentials/tsconfig.tsbuildinfo +1 -1
  5. package/components/identity.federation/tsconfig.tsbuildinfo +1 -1
  6. package/components/identity.grants/tsconfig.tsbuildinfo +1 -1
  7. package/components/identity.keys/tsconfig.tsbuildinfo +1 -1
  8. package/components/identity.otp/tsconfig.tsbuildinfo +1 -1
  9. package/components/identity.passkeys/tsconfig.tsbuildinfo +1 -1
  10. package/components/identity.roles/tsconfig.tsbuildinfo +1 -1
  11. package/components/identity.tokens/tsconfig.tsbuildinfo +1 -1
  12. package/documentation/access.md +3 -2
  13. package/documentation/discovery.md +8 -8
  14. package/documentation/help.md +16 -3
  15. package/documentation/introspection.md +10 -2
  16. package/documentation/octets.md +20 -0
  17. package/features/discovery.feature +4 -2
  18. package/features/discovery.ui.feature +19 -3
  19. package/features/help.feature +46 -0
  20. package/features/octets.feature +59 -0
  21. package/features/steps/Components.ts +4 -2
  22. package/features/steps/Database.ts +7 -1
  23. package/features/steps/Gateway.ts +23 -21
  24. package/features/steps/Parameters.ts +25 -16
  25. package/features/steps/Realtime.ts +3 -3
  26. package/package.json +5 -5
  27. package/source/Directive.ts +0 -11
  28. package/source/Discovery/trunk.ts +13 -3
  29. package/source/Factory.ts +3 -86
  30. package/source/HTTP/Probe.ts +0 -11
  31. package/source/HTTP/Server.ts +2 -3
  32. package/source/HTTP/messages.ts +4 -2
  33. package/source/Introspection.ts +28 -0
  34. package/source/const.ts +18 -0
  35. package/source/deployment.ts +2 -2
  36. package/source/directives/auth/Anonymous.ts +10 -0
  37. package/source/directives/help/Family.ts +5 -1
  38. package/source/directives/help/Help.ts +21 -0
  39. package/source/directives/octets/Directive.ts +7 -0
  40. package/source/directives/octets/Octets.ts +8 -0
  41. package/source/directives/octets/Put.ts +10 -0
  42. package/source/manifest.ts +1 -1
  43. package/source/root.ts +2 -2
  44. package/source/service.ts +94 -0
  45. package/source/shortcuts.ts +14 -0
  46. package/transpiled/Directive.d.ts +0 -1
  47. package/transpiled/Directive.js +0 -11
  48. package/transpiled/Directive.js.map +1 -1
  49. package/transpiled/Discovery/trunk.d.ts +5 -2
  50. package/transpiled/Discovery/trunk.js +12 -4
  51. package/transpiled/Discovery/trunk.js.map +1 -1
  52. package/transpiled/Factory.js +3 -61
  53. package/transpiled/Factory.js.map +1 -1
  54. package/transpiled/HTTP/Probe.d.ts +0 -10
  55. package/transpiled/HTTP/Probe.js +0 -10
  56. package/transpiled/HTTP/Probe.js.map +1 -1
  57. package/transpiled/HTTP/Server.d.ts +0 -1
  58. package/transpiled/HTTP/Server.js +2 -2
  59. package/transpiled/HTTP/Server.js.map +1 -1
  60. package/transpiled/HTTP/messages.js +4 -2
  61. package/transpiled/HTTP/messages.js.map +1 -1
  62. package/transpiled/Introspection.d.ts +21 -0
  63. package/transpiled/Introspection.js +2 -0
  64. package/transpiled/Introspection.js.map +1 -1
  65. package/transpiled/const.d.ts +14 -0
  66. package/transpiled/const.js +14 -0
  67. package/transpiled/const.js.map +1 -1
  68. package/transpiled/deployment.js +2 -2
  69. package/transpiled/deployment.js.map +1 -1
  70. package/transpiled/directives/auth/Anonymous.d.ts +7 -0
  71. package/transpiled/directives/auth/Anonymous.js +8 -0
  72. package/transpiled/directives/auth/Anonymous.js.map +1 -1
  73. package/transpiled/directives/help/Family.d.ts +1 -1
  74. package/transpiled/directives/help/Family.js +4 -0
  75. package/transpiled/directives/help/Family.js.map +1 -1
  76. package/transpiled/directives/help/Help.d.ts +6 -0
  77. package/transpiled/directives/help/Help.js +14 -0
  78. package/transpiled/directives/help/Help.js.map +1 -1
  79. package/transpiled/directives/octets/Directive.d.ts +6 -0
  80. package/transpiled/directives/octets/Directive.js.map +1 -1
  81. package/transpiled/directives/octets/Octets.d.ts +3 -0
  82. package/transpiled/directives/octets/Octets.js +6 -0
  83. package/transpiled/directives/octets/Octets.js.map +1 -1
  84. package/transpiled/directives/octets/Put.d.ts +3 -0
  85. package/transpiled/directives/octets/Put.js +8 -0
  86. package/transpiled/directives/octets/Put.js.map +1 -1
  87. package/transpiled/manifest.js +1 -1
  88. package/transpiled/root.js +2 -2
  89. package/transpiled/root.js.map +1 -1
  90. package/transpiled/service.d.ts +7 -0
  91. package/transpiled/service.js +74 -0
  92. package/transpiled/service.js.map +1 -0
  93. package/transpiled/shortcuts.d.ts +3 -0
  94. package/transpiled/shortcuts.js +13 -0
  95. package/transpiled/shortcuts.js.map +1 -0
  96. package/tsconfig.tsbuildinfo +1 -1
  97. package/ui/dist/_app/immutable/assets/0.Bl7vLmIK.css +2 -0
  98. package/ui/dist/_app/immutable/chunks/{CWJaG9mK.js → CDMRPWCx.js} +2 -2
  99. package/ui/dist/_app/immutable/chunks/DJTKIUs8.js +1 -0
  100. package/ui/dist/_app/immutable/chunks/{yDQhitF9.js → z-DVUbQC.js} +1 -1
  101. package/ui/dist/_app/immutable/entry/{app.WZSMBcGf.js → app.5S2Jtv46.js} +2 -2
  102. package/ui/dist/_app/immutable/entry/start.Bqi6IBmH.js +1 -0
  103. package/ui/dist/_app/immutable/nodes/{0.Dl2DqINo.js → 0.D4LwNilH.js} +1 -1
  104. package/ui/dist/_app/immutable/nodes/{1.CSSnGhVD.js → 1.CSRya9So.js} +1 -1
  105. package/ui/dist/_app/immutable/nodes/{2.DmolQyNG.js → 2.BtiGmR6I.js} +4 -4
  106. package/ui/dist/_app/version.json +1 -1
  107. package/ui/dist/index.html +11 -11
  108. package/components/identity.bans/migrations/0001-system-properties.yaml +0 -14
  109. package/components/identity.basic/migrations/0001-system-properties.yaml +0 -14
  110. package/components/identity.clients/migrations/0001-system-properties.yaml +0 -14
  111. package/components/identity.federation/migrations/0001-system-properties.yaml +0 -14
  112. package/components/identity.grants/migrations/0001-system-properties.yaml +0 -14
  113. package/components/identity.keys/migrations/0001-system-properties.yaml +0 -14
  114. package/components/identity.otp/migrations/0001-system-properties.yaml +0 -14
  115. package/components/identity.passkeys/migrations/0001-system-properties.yaml +0 -14
  116. package/components/identity.roles/migrations/0001-system-properties.yaml +0 -14
  117. package/components/identity.tokens/migrations/0001-system-properties.yaml +0 -14
  118. package/ui/dist/_app/immutable/assets/0.BcIGtTfw.css +0 -2
  119. package/ui/dist/_app/immutable/chunks/BgTrzN6u.js +0 -1
  120. package/ui/dist/_app/immutable/entry/start._LkoC6Lz.js +0 -1
@@ -3,6 +3,7 @@ import type { Parameter } from '../../RTD/index.js';
3
3
  import type { Unit } from './workflows/index.js';
4
4
  import type { Remotes } from '../../Remotes.js';
5
5
  import type { Component } from '@toa.io/core';
6
+ import type { Introspection } from '../../Introspection.js';
6
7
  import type { Output } from '../../io.js';
7
8
  import type { Input } from './types.js';
8
9
  export declare class Put extends Directive {
@@ -16,6 +17,8 @@ export declare class Put extends Directive {
16
17
  private readonly discovery;
17
18
  private storage;
18
19
  constructor(options: Options | null, discovery: Promise<Component>, remotes: Remotes);
20
+ /** What sending a file here takes: what may be sent, how much of it, and what comes back. */
21
+ describe(introspection: Introspection): void;
19
22
  apply(storage: string, input: Input, parameters: Parameter[]): Promise<Output>;
20
23
  private reply;
21
24
  private execute;
@@ -32,6 +32,14 @@ export class Put extends Directive {
32
32
  cors.allow('content-attributes');
33
33
  cors.allow('content-location');
34
34
  }
35
+ /** What sending a file here takes: what may be sent, how much of it, and what comes back. */
36
+ describe(introspection) {
37
+ introspection.octets = {
38
+ ...(this.accept === undefined ? {} : { accept: this.accept }),
39
+ limit: this.limitString,
40
+ ...(this.workflow === undefined ? {} : { stream: true })
41
+ };
42
+ }
35
43
  async apply(storage, input, parameters) {
36
44
  this.storage ??= await this.discovery.storage;
37
45
  const request = {
@@ -1 +1 @@
1
- {"version":3,"file":"Put.js","sourceRoot":"","sources":["../../../source/directives/octets/Put.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Put.js","sourceRoot":"","sources":["../../../source/directives/octets/Put.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import assert from 'node:assert';
2
2
  import { parse } from './RTD/syntax/index.js';
3
- import { shortcuts } from './Directive.js';
3
+ import { shortcuts } from './shortcuts.js';
4
4
  import * as schemas from './schemas.js';
5
5
  export function manifest(declaration, manifest) {
6
6
  assert.ok(typeof declaration === 'object' && declaration !== null, 'Exposition declaration must be an object');
@@ -1,7 +1,7 @@
1
- import { merge } from '@toa.io/generic';
1
+ import { environment, merge } from '@toa.io/generic';
2
2
  import { syntax } from './RTD/index.js';
3
3
  export function resolve() {
4
- const value = process.env.TOA_EXPOSITION;
4
+ const value = environment.get('TOA_EXPOSITION');
5
5
  const root = value !== undefined ? JSON.parse(value) : syntax.createNode();
6
6
  merge(root, PREDEFINED);
7
7
  return root;
@@ -1 +1 @@
1
- {"version":3,"file":"root.js","sourceRoot":"","sources":["../source/root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,MAAM,UAAU,OAAO;IACrB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;IACxC,MAAM,IAAI,GACR,KAAK,KAAK,SAAS,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;IAEhF,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAEvB,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,GAAgB;IAC9B,MAAM,EAAE;QACN;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,KAAK;wBACX,UAAU,EAAE;4BACV;gCACE,MAAM,EAAE,IAAI;gCACZ,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;6BACvB;4BACD;gCACE,MAAM,EAAE,MAAM;gCACd,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,IAAI;6BACZ;yBACF;qBACF;oBACD;wBACE,IAAI,EAAE,MAAM;wBACZ,UAAU,EAAE;4BACV;gCACE,MAAM,EAAE,IAAI;gCACZ,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;6BACvB;4BACD;gCACE,MAAM,EAAE,MAAM;gCACd,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,IAAI;6BACZ;yBACF;qBACF;iBACF;gBACD,UAAU,EAAE,EAAE;aACf;SACF;KACF;IACD,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,EAAE;CACf,CAAA"}
1
+ {"version":3,"file":"root.js","sourceRoot":"","sources":["../source/root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,MAAM,UAAU,OAAO;IACrB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC/C,MAAM,IAAI,GACR,KAAK,KAAK,SAAS,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;IAEhF,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAEvB,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,GAAgB;IAC9B,MAAM,EAAE;QACN;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,KAAK;wBACX,UAAU,EAAE;4BACV;gCACE,MAAM,EAAE,IAAI;gCACZ,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;6BACvB;4BACD;gCACE,MAAM,EAAE,MAAM;gCACd,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,IAAI;6BACZ;yBACF;qBACF;oBACD;wBACE,IAAI,EAAE,MAAM;wBACZ,UAAU,EAAE;4BACV;gCACE,MAAM,EAAE,IAAI;gCACZ,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;6BACvB;4BACD;gCACE,MAAM,EAAE,MAAM;gCACd,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,IAAI;6BACZ;yBACF;qBACF;iBACF;gBACD,UAAU,EAAE,EAAE;aACf;SACF;KACF;IACD,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,EAAE;CACf,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { Connector } from '@toa.io/core';
2
+ import type { Host } from './Factory.js';
3
+ /**
4
+ * The gateway. A composition loads this extension for its tenants alone, so what the
5
+ * gateway is made of is reached from here and nowhere the factory imports.
6
+ */
7
+ export declare function service(host: Host): Promise<Connector | null>;
@@ -0,0 +1,74 @@
1
+ import assert from 'node:assert';
2
+ import { console, traces } from 'openspan';
3
+ import { Gateway } from './Gateway.js';
4
+ import { Remotes } from './Remotes.js';
5
+ import { Tree } from './RTD/index.js';
6
+ import { EndpointsFactory } from './Endpoint.js';
7
+ import { families, interceptors } from './directives/index.js';
8
+ import { DirectivesFactory } from './Directive.js';
9
+ import { Composition } from './Composition.js';
10
+ import * as root from './root.js';
11
+ import { ATOM_GROUP, CHANNEL } from './const.js';
12
+ import { Interception } from './Interception.js';
13
+ import { Dispatcher } from './RPC/index.js';
14
+ import { Server as Model } from './MCP/index.js';
15
+ import * as http from './HTTP/index.js';
16
+ import { environment } from '@toa.io/generic';
17
+ /**
18
+ * The gateway. A composition loads this extension for its tenants alone, so what the
19
+ * gateway is made of is reached from here and nowhere the factory imports.
20
+ */
21
+ export async function service(host) {
22
+ const properties = environment.get('TOA_EXPOSITION_PROPERTIES');
23
+ assert.ok(properties !== undefined, 'TOA_EXPOSITION_PROPERTIES is undefined');
24
+ configureLogs();
25
+ const options = JSON.parse(properties);
26
+ const broadcast = await host.broadcast(CHANNEL);
27
+ const server = http.Server.create({ ...options });
28
+ const remotes = new Remotes(host);
29
+ const node = root.resolve();
30
+ const methods = new EndpointsFactory(remotes);
31
+ const directives = new DirectivesFactory(families, remotes, host, options);
32
+ const interception = new Interception(interceptors, options);
33
+ const tree = new Tree(node, methods, directives);
34
+ const composition = new Composition(host);
35
+ const dispatcher = options.rpc === undefined ? null : new Dispatcher(options.rpc);
36
+ const mcp = options.mcp === undefined ? null : new Model(options.mcp, tree);
37
+ const gateway = new Gateway(broadcast, tree, interception, directives, dispatcher, mcp);
38
+ gateway.depends(remotes);
39
+ gateway.depends(composition);
40
+ // what the directives meter through; one atom per process, connected once
41
+ gateway.depends(host.atom(ATOM_GROUP));
42
+ server.attach(gateway.process.bind(gateway));
43
+ server.depends(gateway);
44
+ return server;
45
+ }
46
+ const LOGS_PREFIX = 'TOA_TELEMETRY_LOGS';
47
+ const TRACES_ENV = 'TOA_TELEMETRY_TRACES';
48
+ function configureLogs() {
49
+ const globEnv = environment.get(LOGS_PREFIX);
50
+ const level = environment.get('TOA_DEV') === '1' ? 'trace' : 'info';
51
+ const options = globEnv === undefined ? { level } : JSON.parse(globEnv);
52
+ console.configure({ level: options.level ?? level });
53
+ const tracesEnv = environment.get(TRACES_ENV);
54
+ const tracing = tracesEnv === undefined ? development() : JSON.parse(tracesEnv);
55
+ // `openspan` is not Toa's and reads the environment, which no longer holds the context by
56
+ // the time the exporter is made — so the service is named here
57
+ if (tracing.exporters?.otlp !== undefined)
58
+ tracing.exporters.otlp.service ??= environment.get('TOA_CONTEXT');
59
+ traces(tracing);
60
+ }
61
+ /**
62
+ * Tracing is off unless it is configured. The console exporter is a local development
63
+ * mechanism, so it is turned on for `toa dev` and for a boot trace the CLI has already
64
+ * asked for (`runtime/boot/src/span.js`), and nowhere else — a deployment that wants
65
+ * traces annotates `telemetry.traces.exporters`.
66
+ *
67
+ * The gateway boots without the telemetry extension, hence the copy of
68
+ * `extensions/telemetry/source/extension.ts`.
69
+ */
70
+ function development() {
71
+ const local = environment.get('TOA_DEV') === '1' || environment.get('TOA_BOOT_TRACE') === '1';
72
+ return local ? { exporters: { console: {} } } : {};
73
+ }
74
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../source/service.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAsC,MAAM,UAAU,CAAA;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAK7C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAU;IACtC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;IAE/D,MAAM,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,EAAE,wCAAwC,CAAC,CAAA;IAE7E,aAAa,EAAE,CAAA;IAEf,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAiB,CAAA;IACtD,MAAM,SAAS,GAAc,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;IAC3B,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC7C,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAC1E,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAC5D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;IAEhD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACjF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC3E,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;IAEvF,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACxB,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC5B,0EAA0E;IAC1E,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IAEtC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAEvB,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,WAAW,GAAG,oBAAoB,CAAA;AACxC,MAAM,UAAU,GAAG,sBAAsB,CAAA;AAEzC,SAAS,aAAa;IACpB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAc,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9E,MAAM,OAAO,GACX,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAA2B,CAAA;IAEpF,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAA;IAEpD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC7C,MAAM,OAAO,GACX,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAmB,CAAA;IAEpF,0FAA0F;IAC1F,+DAA+D;IAC/D,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,KAAK,SAAS;QACvC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IAEnE,MAAM,CAAC,OAAO,CAAC,CAAA;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,WAAW;IAClB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAA;IAE7F,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACpD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Shortcuts } from './RTD/syntax/index.js';
2
+ /** What a directive may be written as, where the family is implied. */
3
+ export declare const shortcuts: Shortcuts;
@@ -0,0 +1,13 @@
1
+ /** What a directive may be written as, where the family is implied. */
2
+ export const shortcuts = new Map([
3
+ ['anonymous', 'auth:anonymous'],
4
+ ['anyone', 'auth:anyone'],
5
+ ['id', 'auth:id'],
6
+ ['role', 'auth:role'],
7
+ ['rule', 'auth:rule'],
8
+ ['incept', 'auth:incept'],
9
+ ['input', 'io:input'],
10
+ ['output', 'io:output'],
11
+ ['languages', 'map:languages']
12
+ ]);
13
+ //# sourceMappingURL=shortcuts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../source/shortcuts.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,MAAM,CAAC,MAAM,SAAS,GAAc,IAAI,GAAG,CAAC;IAC1C,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAC/B,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,IAAI,EAAE,SAAS,CAAC;IACjB,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,OAAO,EAAE,UAAU,CAAC;IACrB,CAAC,QAAQ,EAAE,WAAW,CAAC;IACvB,CAAC,WAAW,EAAE,eAAe,CAAC;CAC/B,CAAC,CAAA"}