@source-repo/rpc 3.0.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.
Files changed (124) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1208 -0
  3. package/dist/Logging/ILogger.d.ts +7 -0
  4. package/dist/Logging/ILogger.d.ts.map +1 -0
  5. package/dist/Logging/ILogger.js +2 -0
  6. package/dist/Logging/ILogger.js.map +1 -0
  7. package/dist/NodeRpcServer.d.ts +55 -0
  8. package/dist/NodeRpcServer.d.ts.map +1 -0
  9. package/dist/NodeRpcServer.js +46 -0
  10. package/dist/NodeRpcServer.js.map +1 -0
  11. package/dist/RPC/Auth.d.ts +98 -0
  12. package/dist/RPC/Auth.d.ts.map +1 -0
  13. package/dist/RPC/Auth.js +14 -0
  14. package/dist/RPC/Auth.js.map +1 -0
  15. package/dist/RPC/Codec.d.ts +24 -0
  16. package/dist/RPC/Codec.d.ts.map +1 -0
  17. package/dist/RPC/Codec.js +21 -0
  18. package/dist/RPC/Codec.js.map +1 -0
  19. package/dist/RPC/Compatibility.d.ts +39 -0
  20. package/dist/RPC/Compatibility.d.ts.map +1 -0
  21. package/dist/RPC/Compatibility.js +195 -0
  22. package/dist/RPC/Compatibility.js.map +1 -0
  23. package/dist/RPC/Core.d.ts +188 -0
  24. package/dist/RPC/Core.d.ts.map +1 -0
  25. package/dist/RPC/Core.js +354 -0
  26. package/dist/RPC/Core.js.map +1 -0
  27. package/dist/RPC/Expose.d.ts +90 -0
  28. package/dist/RPC/Expose.d.ts.map +1 -0
  29. package/dist/RPC/Expose.js +110 -0
  30. package/dist/RPC/Expose.js.map +1 -0
  31. package/dist/RPC/Idempotency.d.ts +90 -0
  32. package/dist/RPC/Idempotency.d.ts.map +1 -0
  33. package/dist/RPC/Idempotency.js +46 -0
  34. package/dist/RPC/Idempotency.js.map +1 -0
  35. package/dist/RPC/Introspection.d.ts +92 -0
  36. package/dist/RPC/Introspection.d.ts.map +1 -0
  37. package/dist/RPC/Introspection.js +188 -0
  38. package/dist/RPC/Introspection.js.map +1 -0
  39. package/dist/RPC/Introspection.types.json +1093 -0
  40. package/dist/RPC/Messages.d.ts +108 -0
  41. package/dist/RPC/Messages.d.ts.map +1 -0
  42. package/dist/RPC/Messages.js +30 -0
  43. package/dist/RPC/Messages.js.map +1 -0
  44. package/dist/RPC/Rpc.d.ts +51 -0
  45. package/dist/RPC/Rpc.d.ts.map +1 -0
  46. package/dist/RPC/Rpc.js +54 -0
  47. package/dist/RPC/Rpc.js.map +1 -0
  48. package/dist/RPC/RpcClientHandler.d.ts +129 -0
  49. package/dist/RPC/RpcClientHandler.d.ts.map +1 -0
  50. package/dist/RPC/RpcClientHandler.js +267 -0
  51. package/dist/RPC/RpcClientHandler.js.map +1 -0
  52. package/dist/RPC/RpcServerHandler.d.ts +226 -0
  53. package/dist/RPC/RpcServerHandler.d.ts.map +1 -0
  54. package/dist/RPC/RpcServerHandler.js +676 -0
  55. package/dist/RPC/RpcServerHandler.js.map +1 -0
  56. package/dist/RPC/Schema.d.ts +150 -0
  57. package/dist/RPC/Schema.d.ts.map +1 -0
  58. package/dist/RPC/Schema.js +198 -0
  59. package/dist/RPC/Schema.js.map +1 -0
  60. package/dist/RPC/Signing.d.ts +118 -0
  61. package/dist/RPC/Signing.d.ts.map +1 -0
  62. package/dist/RPC/Signing.js +171 -0
  63. package/dist/RPC/Signing.js.map +1 -0
  64. package/dist/RPC/Tokens.d.ts +49 -0
  65. package/dist/RPC/Tokens.d.ts.map +1 -0
  66. package/dist/RPC/Tokens.js +45 -0
  67. package/dist/RPC/Tokens.js.map +1 -0
  68. package/dist/RpcClient.d.ts +91 -0
  69. package/dist/RpcClient.d.ts.map +1 -0
  70. package/dist/RpcClient.js +145 -0
  71. package/dist/RpcClient.js.map +1 -0
  72. package/dist/RpcServer.d.ts +191 -0
  73. package/dist/RpcServer.d.ts.map +1 -0
  74. package/dist/RpcServer.js +293 -0
  75. package/dist/RpcServer.js.map +1 -0
  76. package/dist/Transports/Mqtt5Frame.d.ts +107 -0
  77. package/dist/Transports/Mqtt5Frame.d.ts.map +1 -0
  78. package/dist/Transports/Mqtt5Frame.js +162 -0
  79. package/dist/Transports/Mqtt5Frame.js.map +1 -0
  80. package/dist/Transports/MqttTransport.d.ts +279 -0
  81. package/dist/Transports/MqttTransport.d.ts.map +1 -0
  82. package/dist/Transports/MqttTransport.js +843 -0
  83. package/dist/Transports/MqttTransport.js.map +1 -0
  84. package/dist/Transports/Presence.d.ts +68 -0
  85. package/dist/Transports/Presence.d.ts.map +1 -0
  86. package/dist/Transports/Presence.js +21 -0
  87. package/dist/Transports/Presence.js.map +1 -0
  88. package/dist/Transports/SocketIoClientTransport.d.ts +89 -0
  89. package/dist/Transports/SocketIoClientTransport.d.ts.map +1 -0
  90. package/dist/Transports/SocketIoClientTransport.js +280 -0
  91. package/dist/Transports/SocketIoClientTransport.js.map +1 -0
  92. package/dist/Transports/SocketIoServerTransport.d.ts +135 -0
  93. package/dist/Transports/SocketIoServerTransport.d.ts.map +1 -0
  94. package/dist/Transports/SocketIoServerTransport.js +505 -0
  95. package/dist/Transports/SocketIoServerTransport.js.map +1 -0
  96. package/dist/Utilities/Converters.d.ts +22 -0
  97. package/dist/Utilities/Converters.d.ts.map +1 -0
  98. package/dist/Utilities/Converters.js +58 -0
  99. package/dist/Utilities/Converters.js.map +1 -0
  100. package/dist/Utilities/Filter.d.ts +7 -0
  101. package/dist/Utilities/Filter.d.ts.map +1 -0
  102. package/dist/Utilities/Filter.js +14 -0
  103. package/dist/Utilities/Filter.js.map +1 -0
  104. package/dist/Utilities/ReadableName.d.ts +38 -0
  105. package/dist/Utilities/ReadableName.d.ts.map +1 -0
  106. package/dist/Utilities/ReadableName.js +58 -0
  107. package/dist/Utilities/ReadableName.js.map +1 -0
  108. package/dist/Utilities/Switch.d.ts +21 -0
  109. package/dist/Utilities/Switch.d.ts.map +1 -0
  110. package/dist/Utilities/Switch.js +70 -0
  111. package/dist/Utilities/Switch.js.map +1 -0
  112. package/dist/Utilities/TryCatch.d.ts +11 -0
  113. package/dist/Utilities/TryCatch.d.ts.map +1 -0
  114. package/dist/Utilities/TryCatch.js +13 -0
  115. package/dist/Utilities/TryCatch.js.map +1 -0
  116. package/dist/index-web.d.ts +25 -0
  117. package/dist/index-web.d.ts.map +1 -0
  118. package/dist/index-web.js +28 -0
  119. package/dist/index-web.js.map +1 -0
  120. package/dist/index.d.ts +28 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +30 -0
  123. package/dist/index.js.map +1 -0
  124. package/package.json +77 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RpcServerHandler.js","sourceRoot":"","sources":["../../src/RPC/RpcServerHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * A small type language for describing what an exposed method accepts and returns, and a validator
3
+ * for it.
4
+ *
5
+ * Deliberately not JSON Schema. It has to describe what MsgPack actually carries - Uint8Array and
6
+ * Date are values here, not string encodings of them - and it has to be checkable without pulling
7
+ * a validation engine into a package that ships to browsers and embedded targets.
8
+ *
9
+ * Nothing generates these yet; they are written by hand or supplied by a build step. The format
10
+ * carries version and history fields from the start so adding that step later needs no change to
11
+ * the document.
12
+ */
13
+ import type { RpcMethodSemantics } from './Messages.js';
14
+ export type TypeNode =
15
+ /** Accepts anything. Use sparingly: it is the hole every other check is trying to close. */
16
+ {
17
+ kind: 'any';
18
+ } | {
19
+ kind: 'null';
20
+ } | {
21
+ kind: 'boolean';
22
+ } | {
23
+ kind: 'number';
24
+ integer?: boolean;
25
+ min?: number;
26
+ max?: number;
27
+ } | {
28
+ kind: 'string';
29
+ pattern?: string;
30
+ minLength?: number;
31
+ maxLength?: number;
32
+ }
33
+ /** Uint8Array, which MsgPack carries natively. */
34
+ | {
35
+ kind: 'bytes';
36
+ maxBytes?: number;
37
+ } | {
38
+ kind: 'date';
39
+ } | {
40
+ kind: 'literal';
41
+ value: string | number | boolean | null;
42
+ } | {
43
+ kind: 'array';
44
+ items: TypeNode;
45
+ maxItems?: number;
46
+ } | {
47
+ kind: 'tuple';
48
+ items: TypeNode[];
49
+ } | {
50
+ kind: 'object';
51
+ fields: {
52
+ [name: string]: FieldNode;
53
+ };
54
+ additional?: boolean;
55
+ }
56
+ /**
57
+ * A dictionary: keys not known in advance, values all of one type. `{ [tag: string]: Reading }`
58
+ * is how plant data usually arrives, and describing it as an `object` would produce a type that
59
+ * refuses every value, since it has no named properties to declare.
60
+ *
61
+ * `keyPattern` constrains the keys, which is what a numeric index signature becomes - a JS
62
+ * object key is always a string, so `{ [id: number]: X }` is a string key that must read as a
63
+ * number rather than a separate key type.
64
+ */
65
+ | {
66
+ kind: 'record';
67
+ values: TypeNode;
68
+ keyPattern?: string;
69
+ maxEntries?: number;
70
+ } | {
71
+ kind: 'union';
72
+ options: TypeNode[];
73
+ }
74
+ /** Reference to a named type, which is how recursive and shared shapes are expressed. */
75
+ | {
76
+ kind: 'ref';
77
+ name: string;
78
+ };
79
+ export interface FieldNode {
80
+ type: TypeNode;
81
+ optional?: boolean;
82
+ }
83
+ export interface MethodSchema {
84
+ /** One entry per positional parameter. */
85
+ params: TypeNode[];
86
+ /**
87
+ * Parameter names, positionally matching `params`. Carried for tooling that has to present a
88
+ * call to a person - a form needs a label, and "argument 0" is not one. Never used for
89
+ * checking, so a schema written by hand can leave it out.
90
+ */
91
+ paramNames?: string[];
92
+ /** Type of any further arguments, for a rest parameter. Absent means no extra arguments. */
93
+ rest?: TypeNode;
94
+ /** Checked only when result validation is on. */
95
+ returns?: TypeNode;
96
+ /**
97
+ * What calling this does to the world: `query`, `idempotent-command` or
98
+ * `non-repeatable-command`. Part of the contract because it is a promise to the caller, not an
99
+ * implementation detail - it decides whether an uncertain answer may be retried, and a server
100
+ * that quietly stopped being repeatable would break callers that were told it was.
101
+ */
102
+ semantics?: RpcMethodSemantics;
103
+ }
104
+ export interface NamespaceSchema {
105
+ /**
106
+ * Contract version for this namespace, for diagnostics. Reported alongside a validation
107
+ * failure so a stale caller is recognisable as one, rather than looking like a type error.
108
+ */
109
+ version?: string;
110
+ methods: {
111
+ [method: string]: MethodSchema;
112
+ };
113
+ events?: {
114
+ [event: string]: {
115
+ params: TypeNode[];
116
+ };
117
+ };
118
+ /** Skip validation for this namespace, for a hot path where the cost is not worth it. */
119
+ validate?: boolean;
120
+ /**
121
+ * Earlier versions of this namespace, newest last. Reserved for the extraction CLI, which uses
122
+ * them to detect a breaking change before it ships. Not consulted for dispatch: a call that
123
+ * was valid under an older contract still reaches the current implementation, so accepting it
124
+ * would move the failure from the validator into the method body.
125
+ */
126
+ history?: {
127
+ [version: string]: Omit<NamespaceSchema, 'history'>;
128
+ };
129
+ }
130
+ export interface RpcSchema {
131
+ /** Format version of this document, not of the contract it describes. */
132
+ schema: 1;
133
+ /** Contract version covering the document as a whole. */
134
+ version?: string;
135
+ types?: {
136
+ [name: string]: TypeNode;
137
+ };
138
+ namespaces: {
139
+ [namespace: string]: NamespaceSchema;
140
+ };
141
+ }
142
+ /**
143
+ * Returns a human-readable reason the value does not match, or undefined when it does. The path
144
+ * names the offending position, because "expected number" is not much help three levels into an
145
+ * argument.
146
+ */
147
+ export declare const validateValue: (value: unknown, type: TypeNode, types?: RpcSchema['types'], path?: string, depth?: number) => string | undefined;
148
+ /** Returns a reason the arguments do not match the method's parameters, or undefined. */
149
+ export declare const validateParams: (params: unknown[], method: MethodSchema, types?: RpcSchema['types']) => string | undefined;
150
+ //# sourceMappingURL=Schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/RPC/Schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * A small type language for describing what an exposed method accepts and returns, and a validator
3
+ * for it.
4
+ *
5
+ * Deliberately not JSON Schema. It has to describe what MsgPack actually carries - Uint8Array and
6
+ * Date are values here, not string encodings of them - and it has to be checkable without pulling
7
+ * a validation engine into a package that ships to browsers and embedded targets.
8
+ *
9
+ * Nothing generates these yet; they are written by hand or supplied by a build step. The format
10
+ * carries version and history fields from the start so adding that step later needs no change to
11
+ * the document.
12
+ */
13
+ /** Guards against a hostile payload nesting deeply enough to exhaust the stack. */
14
+ const MAX_DEPTH = 32;
15
+ const typeName = (value) => {
16
+ if (value === null)
17
+ return 'null';
18
+ if (Array.isArray(value))
19
+ return 'array';
20
+ if (value instanceof Uint8Array)
21
+ return 'bytes';
22
+ if (value instanceof Date)
23
+ return 'date';
24
+ return typeof value;
25
+ };
26
+ const describe = (type) => {
27
+ switch (type.kind) {
28
+ case 'literal':
29
+ return JSON.stringify(type.value);
30
+ case 'array':
31
+ return `${describe(type.items)}[]`;
32
+ case 'tuple':
33
+ return `[${type.items.map(describe).join(', ')}]`;
34
+ case 'union':
35
+ return type.options.map(describe).join(' | ');
36
+ case 'ref':
37
+ return type.name;
38
+ case 'object':
39
+ return 'object';
40
+ case 'record':
41
+ return `{ [key: string]: ${describe(type.values)} }`;
42
+ default:
43
+ return type.kind;
44
+ }
45
+ };
46
+ /** Rejects the things that are `typeof 'object'` but are values in their own right here. */
47
+ const isPlainObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value) && !(value instanceof Uint8Array) && !(value instanceof Date);
48
+ /**
49
+ * Returns a human-readable reason the value does not match, or undefined when it does. The path
50
+ * names the offending position, because "expected number" is not much help three levels into an
51
+ * argument.
52
+ */
53
+ export const validateValue = (value, type, types = {}, path = '', depth = 0) => {
54
+ if (depth > MAX_DEPTH)
55
+ return `${path || 'value'}: nested deeper than ${MAX_DEPTH} levels`;
56
+ const at = path || 'value';
57
+ switch (type.kind) {
58
+ case 'any':
59
+ return undefined;
60
+ case 'null':
61
+ return value === null ? undefined : `${at}: expected null, got ${typeName(value)}`;
62
+ case 'boolean':
63
+ return typeof value === 'boolean' ? undefined : `${at}: expected boolean, got ${typeName(value)}`;
64
+ case 'number': {
65
+ if (typeof value !== 'number' || Number.isNaN(value))
66
+ return `${at}: expected number, got ${typeName(value)}`;
67
+ if (type.integer && !Number.isInteger(value))
68
+ return `${at}: expected an integer, got ${value}`;
69
+ if (type.min !== undefined && value < type.min)
70
+ return `${at}: ${value} is below the minimum ${type.min}`;
71
+ if (type.max !== undefined && value > type.max)
72
+ return `${at}: ${value} is above the maximum ${type.max}`;
73
+ return undefined;
74
+ }
75
+ case 'string': {
76
+ if (typeof value !== 'string')
77
+ return `${at}: expected string, got ${typeName(value)}`;
78
+ if (type.minLength !== undefined && value.length < type.minLength)
79
+ return `${at}: shorter than ${type.minLength} characters`;
80
+ if (type.maxLength !== undefined && value.length > type.maxLength)
81
+ return `${at}: longer than ${type.maxLength} characters`;
82
+ if (type.pattern !== undefined && !new RegExp(type.pattern).test(value))
83
+ return `${at}: does not match ${type.pattern}`;
84
+ return undefined;
85
+ }
86
+ case 'bytes': {
87
+ if (!(value instanceof Uint8Array))
88
+ return `${at}: expected bytes, got ${typeName(value)}`;
89
+ if (type.maxBytes !== undefined && value.length > type.maxBytes)
90
+ return `${at}: longer than ${type.maxBytes} bytes`;
91
+ return undefined;
92
+ }
93
+ case 'date':
94
+ return value instanceof Date && !Number.isNaN(value.getTime()) ? undefined : `${at}: expected a date, got ${typeName(value)}`;
95
+ case 'literal':
96
+ return value === type.value ? undefined : `${at}: expected ${JSON.stringify(type.value)}`;
97
+ case 'array': {
98
+ if (!Array.isArray(value))
99
+ return `${at}: expected an array, got ${typeName(value)}`;
100
+ if (type.maxItems !== undefined && value.length > type.maxItems)
101
+ return `${at}: more than ${type.maxItems} items`;
102
+ for (let i = 0; i < value.length; i++) {
103
+ const failure = validateValue(value[i], type.items, types, `${at}[${i}]`, depth + 1);
104
+ if (failure)
105
+ return failure;
106
+ }
107
+ return undefined;
108
+ }
109
+ case 'tuple': {
110
+ if (!Array.isArray(value))
111
+ return `${at}: expected a tuple, got ${typeName(value)}`;
112
+ if (value.length !== type.items.length)
113
+ return `${at}: expected ${type.items.length} elements, got ${value.length}`;
114
+ for (let i = 0; i < type.items.length; i++) {
115
+ const failure = validateValue(value[i], type.items[i], types, `${at}[${i}]`, depth + 1);
116
+ if (failure)
117
+ return failure;
118
+ }
119
+ return undefined;
120
+ }
121
+ case 'object': {
122
+ if (!isPlainObject(value))
123
+ return `${at}: expected an object, got ${typeName(value)}`;
124
+ const record = value;
125
+ for (const [name, field] of Object.entries(type.fields)) {
126
+ const present = record[name] !== undefined;
127
+ if (!present) {
128
+ if (field.optional)
129
+ continue;
130
+ return `${at}.${name}: missing`;
131
+ }
132
+ const failure = validateValue(record[name], field.type, types, `${at}.${name}`, depth + 1);
133
+ if (failure)
134
+ return failure;
135
+ }
136
+ if (!type.additional) {
137
+ const extra = Object.keys(record).find((key) => !(key in type.fields));
138
+ // Refused rather than ignored: an unexpected property is usually a caller built
139
+ // against a different contract, and silently dropping it hides that.
140
+ if (extra !== undefined)
141
+ return `${at}.${extra}: not part of this type`;
142
+ }
143
+ return undefined;
144
+ }
145
+ case 'record': {
146
+ if (!isPlainObject(value))
147
+ return `${at}: expected an object, got ${typeName(value)}`;
148
+ const keys = Object.keys(value);
149
+ // Bounded like an array, and for the same reason: a dictionary is the other shape a
150
+ // caller can grow without limit.
151
+ if (type.maxEntries !== undefined && keys.length > type.maxEntries)
152
+ return `${at}: more than ${type.maxEntries} entries`;
153
+ const pattern = type.keyPattern === undefined ? undefined : new RegExp(type.keyPattern);
154
+ for (const key of keys) {
155
+ if (pattern && !pattern.test(key))
156
+ return `${at}.${key}: key does not match ${type.keyPattern}`;
157
+ const failure = validateValue(value[key], type.values, types, `${at}.${key}`, depth + 1);
158
+ if (failure)
159
+ return failure;
160
+ }
161
+ return undefined;
162
+ }
163
+ case 'union': {
164
+ for (const option of type.options)
165
+ if (!validateValue(value, option, types, at, depth + 1))
166
+ return undefined;
167
+ return `${at}: expected ${describe(type)}, got ${typeName(value)}`;
168
+ }
169
+ case 'ref': {
170
+ const target = types[type.name];
171
+ if (!target)
172
+ return `${at}: unknown type '${type.name}'`;
173
+ return validateValue(value, target, types, at, depth + 1);
174
+ }
175
+ }
176
+ // Unreachable for a well-formed node, and deliberately not a silent pass: a kind this validator
177
+ // does not know - a typo, or a document written for a later version of the language - would
178
+ // otherwise fall through as valid, which is an unchecked value wearing a checked type.
179
+ return `${at}: unknown type kind '${type.kind}'`;
180
+ };
181
+ /** Returns a reason the arguments do not match the method's parameters, or undefined. */
182
+ export const validateParams = (params, method, types = {}) => {
183
+ const required = method.params.filter((_, index) => !isOptional(method.params[index])).length;
184
+ if (params.length < required)
185
+ return `expected at least ${required} argument${required === 1 ? '' : 's'}, got ${params.length}`;
186
+ if (params.length > method.params.length && !method.rest)
187
+ return `expected at most ${method.params.length} arguments, got ${params.length}`;
188
+ for (let i = 0; i < params.length; i++) {
189
+ const type = i < method.params.length ? method.params[i] : method.rest;
190
+ const failure = validateValue(params[i], type, types, `argument ${i}`);
191
+ if (failure)
192
+ return failure;
193
+ }
194
+ return undefined;
195
+ };
196
+ /** A parameter is optional when its type admits undefined, expressed as a union with a null literal. */
197
+ const isOptional = (type) => type.kind === 'any' || (type.kind === 'union' && type.options.some((o) => o.kind === 'literal' && o.value === null));
198
+ //# sourceMappingURL=Schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/RPC/Schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import { MessageSigner, MessageVerifier, RpcIdentity, SignedFrame } from './Auth.js';
2
+ /**
3
+ * The exact bytes a signature covers: a JSON array of the header fields, followed by the payload.
4
+ *
5
+ * A JSON array fixes the field order and escapes the values, so no combination of names can be
6
+ * made to look like a different frame. The verifier rebuilds the preamble from the fields it
7
+ * parsed, so it knows where the payload begins without needing a length prefix.
8
+ */
9
+ export declare const canonicalSignedBytes: (frame: SignedFrame) => Uint8Array;
10
+ /** Fields the MQTT 5 layout covers. Signed positionally by value, so property naming never enters
11
+ * the canonical form and renaming one later cannot silently change what verifies. */
12
+ export interface SignedFrameV5 {
13
+ version: string;
14
+ topic: string;
15
+ /**
16
+ * Where the sender asks for its reply, empty when it asks for none. Signed because it is
17
+ * honoured: a receiver publishes the answer where this says, so anything able to rewrite it
18
+ * could have a server deliver a reply to a topic of its choosing.
19
+ */
20
+ responseTopic: string;
21
+ source: string;
22
+ kind: string;
23
+ path: string;
24
+ methodOrEvent: string;
25
+ correlation: string;
26
+ /**
27
+ * How the payload is to be read. Signed, for the reason set out below - it was left out of
28
+ * frame version 1 on reasoning that turned out to be wrong.
29
+ */
30
+ contentType: string;
31
+ /** The RPC error code on a failure frame, which is what the caller acts on. */
32
+ code: string;
33
+ /** The contract version the sender declares, which decides compatibility at the far end. */
34
+ contractVersion: string;
35
+ /**
36
+ * Milliseconds the caller said it would still wait, as a string, empty when it said nothing.
37
+ *
38
+ * A duration rather than a moment, deliberately: an absolute deadline is only as good as the
39
+ * agreement between two clocks, and one of the peers here is a browser, whose clock the user
40
+ * owns. The receiver turns it into a local deadline on arrival, so nobody's clock has to match
41
+ * anybody else's. See RpcServerHandler for what is done with it.
42
+ */
43
+ ttl: string;
44
+ /**
45
+ * Names the command a request is an attempt at, empty when the caller did not distinguish the
46
+ * two. Signed because a receiver with an idempotency store acts on it: rewriting it could turn
47
+ * a retry into a fresh command, or one command into a repeat of somebody else's.
48
+ */
49
+ idempotencyKey: string;
50
+ timestamp: number;
51
+ nonce: string;
52
+ payload: Uint8Array;
53
+ }
54
+ /**
55
+ * The MQTT 5 canonical form. The topic is signed rather than a target field, because under this
56
+ * layout the topic is what carries the addressing.
57
+ *
58
+ * Frame version 1 deliberately left contentType out, on the reasoning that it only says how to read
59
+ * bytes that are themselves covered - so altering it could make the payload fail to parse but never
60
+ * change what was authorised. **That reasoning is wrong**, and the counterexample is one byte long:
61
+ * `0x31` decodes as the JSON text `"1"`, which is the number 1, and as a MsgPack positive fixint,
62
+ * which is the number 49. Both parse. Both verify. Flipping one unsigned property therefore changed
63
+ * a signed setpoint from 1 to 49 with the signature still good.
64
+ *
65
+ * The same argument applies to anything else the receiver acts on rather than merely transports: the
66
+ * error code decides what a caller does about a failure, the declared contract version decides
67
+ * whether the call is accepted at all, the response topic decides where the answer is published, the
68
+ * ttl decides whether the method runs at all, and the idempotency key decides whether it runs again.
69
+ * All five are covered.
70
+ *
71
+ * The MQTT message expiry is deliberately **not** covered, because the broker is meant to decrement
72
+ * it in flight and a signature over it would break on the first queued message. Nothing is lost:
73
+ * expiry may only narrow the signed ttl, never extend it, so rewriting it can delay or drop a frame
74
+ * - which anyone able to rewrite it could do anyway - but cannot buy a stale command more time.
75
+ */
76
+ export declare const canonicalSignedBytesV5: (frame: SignedFrameV5) => Uint8Array;
77
+ /** A nonce with enough entropy that collisions are not a practical concern. */
78
+ export declare const createNonce: () => string;
79
+ /**
80
+ * Rejects frames that are too old and frames whose nonce has been seen before.
81
+ *
82
+ * A signature alone does not stop a captured frame being sent again, which for RPC would mean
83
+ * replaying a command. The freshness window bounds how long a captured frame stays useful and
84
+ * bounds how many nonces have to be remembered to cover it.
85
+ */
86
+ export declare class ReplayGuard {
87
+ /** How far a frame's timestamp may differ from now. Peers need clocks within this of each other. */
88
+ maxClockSkew: number;
89
+ /** Hard cap on remembered nonces, so a flood cannot grow this without bound. */
90
+ maxTrackedNonces: number;
91
+ private seen;
92
+ constructor(
93
+ /** How far a frame's timestamp may differ from now. Peers need clocks within this of each other. */
94
+ maxClockSkew?: number,
95
+ /** Hard cap on remembered nonces, so a flood cannot grow this without bound. */
96
+ maxTrackedNonces?: number);
97
+ /** True if the frame is fresh and previously unseen. Records the nonce as a side effect. */
98
+ accept(nonce: string, time: number, now?: number): boolean;
99
+ private prune;
100
+ get size(): number;
101
+ }
102
+ /** Look up the key material for a peer. Return undefined for peers with no key on file. */
103
+ export type KeyResolver<T> = (source: string) => T | undefined | Promise<T | undefined>;
104
+ /**
105
+ * HMAC-SHA256 with a secret per peer. Universally available, but symmetric: whoever can verify a
106
+ * peer's messages can also forge them, so the secret must only be shared with parties allowed to
107
+ * act as that peer. Use Ed25519 when a compromised verifier must not be able to impersonate.
108
+ */
109
+ export declare const createHmacSigner: (secret: Uint8Array | string) => MessageSigner;
110
+ export declare const createHmacVerifier: (resolveSecret: KeyResolver<Uint8Array | string>, identityFor?: (source: string) => RpcIdentity | undefined) => MessageVerifier;
111
+ /**
112
+ * Ed25519, taking WebCrypto keys directly so key storage and format stay the caller's concern.
113
+ * Asymmetric: the verifier holds only public keys, so compromising a server does not let anyone
114
+ * forge messages from its peers.
115
+ */
116
+ export declare const createEd25519Signer: (privateKey: CryptoKey) => MessageSigner;
117
+ export declare const createEd25519Verifier: (resolvePublicKey: KeyResolver<CryptoKey>, identityFor?: (source: string) => RpcIdentity | undefined) => MessageVerifier;
118
+ //# sourceMappingURL=Signing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Signing.d.ts","sourceRoot":"","sources":["../../src/RPC/Signing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AA4BpF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,UAAW,WAAW,KAAG,UAMzD,CAAA;AAED;sFACsF;AACtF,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAA;IACZ,4FAA4F;IAC5F,eAAe,EAAE,MAAM,CAAA;IACvB;;;;;;;OAOG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,UAAU,CAAA;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,sBAAsB,UAAW,aAAa,KAAG,UAwB7D,CAAA;AAED,+EAA+E;AAC/E,eAAO,MAAM,WAAW,cAAkF,CAAA;AAE1G;;;;;;GAMG;AACH,qBAAa,WAAW;IAIhB,oGAAoG;IAC7F,YAAY;IACnB,gFAAgF;IACzE,gBAAgB;IAN3B,OAAO,CAAC,IAAI,CAA4B;IAExC;IACI,oGAAoG;IAC7F,YAAY,SAAQ;IAC3B,gFAAgF;IACzE,gBAAgB,SAAO,EAC9B;IAEJ,4FAA4F;IAC5F,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAa,WAOnD;IAED,OAAO,CAAC,KAAK;IAYb,IAAI,IAAI,WAEP;CACJ;AAED,2FAA2F;AAC3F,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;AAIvF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,WAAY,UAAU,GAAG,MAAM,KAAG,aAI9D,CAAA;AAED,eAAO,MAAM,kBAAkB,kBACZ,WAAW,CAAC,UAAU,GAAG,MAAM,CAAC,gBACjC,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,KAC1D,eASF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,eAAgB,SAAS,KAAG,aAE3D,CAAA;AAED,eAAO,MAAM,qBAAqB,qBACZ,WAAW,CAAC,SAAS,CAAC,gBAC1B,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,KAC1D,eAOF,CAAA"}