asgard-tide 0.0.1

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 (75) hide show
  1. package/LICENSE +334 -0
  2. package/README.md +103 -0
  3. package/dist/cjs/contracts/BaseContract.d.ts +47 -0
  4. package/dist/cjs/contracts/BaseContract.d.ts.map +1 -0
  5. package/dist/cjs/contracts/BaseContract.js +162 -0
  6. package/dist/cjs/contracts/BaseContract.js.map +1 -0
  7. package/dist/cjs/contracts/GenericRealmAccessThresholdRoleContract.d.ts +8 -0
  8. package/dist/cjs/contracts/GenericRealmAccessThresholdRoleContract.d.ts.map +1 -0
  9. package/dist/cjs/contracts/GenericRealmAccessThresholdRoleContract.js +26 -0
  10. package/dist/cjs/contracts/GenericRealmAccessThresholdRoleContract.js.map +1 -0
  11. package/dist/cjs/contracts/GenericResourceAccessThresholdRoleContract.d.ts +8 -0
  12. package/dist/cjs/contracts/GenericResourceAccessThresholdRoleContract.d.ts.map +1 -0
  13. package/dist/cjs/contracts/GenericResourceAccessThresholdRoleContract.js +26 -0
  14. package/dist/cjs/contracts/GenericResourceAccessThresholdRoleContract.js.map +1 -0
  15. package/dist/cjs/index.d.ts +15 -0
  16. package/dist/cjs/index.d.ts.map +1 -0
  17. package/dist/cjs/index.js +26 -0
  18. package/dist/cjs/index.js.map +1 -0
  19. package/dist/cjs/models/CustomTideRequest.d.ts +19 -0
  20. package/dist/cjs/models/CustomTideRequest.d.ts.map +1 -0
  21. package/dist/cjs/models/CustomTideRequest.js +40 -0
  22. package/dist/cjs/models/CustomTideRequest.js.map +1 -0
  23. package/dist/cjs/models/Policy.d.ts +41 -0
  24. package/dist/cjs/models/Policy.d.ts.map +1 -0
  25. package/dist/cjs/models/Policy.js +268 -0
  26. package/dist/cjs/models/Policy.js.map +1 -0
  27. package/dist/cjs/models/TideRequest.d.ts +48 -0
  28. package/dist/cjs/models/TideRequest.d.ts.map +1 -0
  29. package/dist/cjs/models/TideRequest.js +255 -0
  30. package/dist/cjs/models/TideRequest.js.map +1 -0
  31. package/dist/cjs/utils/Serialization.d.ts +7 -0
  32. package/dist/cjs/utils/Serialization.d.ts.map +1 -0
  33. package/dist/cjs/utils/Serialization.js +106 -0
  34. package/dist/cjs/utils/Serialization.js.map +1 -0
  35. package/dist/cjs/utils/TideMemory.d.ts +10 -0
  36. package/dist/cjs/utils/TideMemory.d.ts.map +1 -0
  37. package/dist/cjs/utils/TideMemory.js +110 -0
  38. package/dist/cjs/utils/TideMemory.js.map +1 -0
  39. package/dist/esm/contracts/BaseContract.d.ts +47 -0
  40. package/dist/esm/contracts/BaseContract.d.ts.map +1 -0
  41. package/dist/esm/contracts/BaseContract.js +154 -0
  42. package/dist/esm/contracts/BaseContract.js.map +1 -0
  43. package/dist/esm/contracts/GenericRealmAccessThresholdRoleContract.d.ts +8 -0
  44. package/dist/esm/contracts/GenericRealmAccessThresholdRoleContract.d.ts.map +1 -0
  45. package/dist/esm/contracts/GenericRealmAccessThresholdRoleContract.js +22 -0
  46. package/dist/esm/contracts/GenericRealmAccessThresholdRoleContract.js.map +1 -0
  47. package/dist/esm/contracts/GenericResourceAccessThresholdRoleContract.d.ts +8 -0
  48. package/dist/esm/contracts/GenericResourceAccessThresholdRoleContract.d.ts.map +1 -0
  49. package/dist/esm/contracts/GenericResourceAccessThresholdRoleContract.js +22 -0
  50. package/dist/esm/contracts/GenericResourceAccessThresholdRoleContract.js.map +1 -0
  51. package/dist/esm/index.d.ts +15 -0
  52. package/dist/esm/index.d.ts.map +1 -0
  53. package/dist/esm/index.js +15 -0
  54. package/dist/esm/index.js.map +1 -0
  55. package/dist/esm/models/CustomTideRequest.d.ts +19 -0
  56. package/dist/esm/models/CustomTideRequest.d.ts.map +1 -0
  57. package/dist/esm/models/CustomTideRequest.js +31 -0
  58. package/dist/esm/models/CustomTideRequest.js.map +1 -0
  59. package/dist/esm/models/Policy.d.ts +41 -0
  60. package/dist/esm/models/Policy.d.ts.map +1 -0
  61. package/dist/esm/models/Policy.js +263 -0
  62. package/dist/esm/models/Policy.js.map +1 -0
  63. package/dist/esm/models/TideRequest.d.ts +48 -0
  64. package/dist/esm/models/TideRequest.d.ts.map +1 -0
  65. package/dist/esm/models/TideRequest.js +252 -0
  66. package/dist/esm/models/TideRequest.js.map +1 -0
  67. package/dist/esm/utils/Serialization.d.ts +7 -0
  68. package/dist/esm/utils/Serialization.d.ts.map +1 -0
  69. package/dist/esm/utils/Serialization.js +98 -0
  70. package/dist/esm/utils/Serialization.js.map +1 -0
  71. package/dist/esm/utils/TideMemory.d.ts +10 -0
  72. package/dist/esm/utils/TideMemory.d.ts.map +1 -0
  73. package/dist/esm/utils/TideMemory.js +106 -0
  74. package/dist/esm/utils/TideMemory.js.map +1 -0
  75. package/package.json +41 -0
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const BaseContract_js_1 = require("../contracts/BaseContract.js");
4
+ const TideMemory_js_1 = require("../utils/TideMemory.js");
5
+ const Policy_js_1 = require("./Policy.js");
6
+ class BaseTideRequest {
7
+ constructor(name, version, authFlow, draft, dyanmicData) {
8
+ this.name = name;
9
+ this.version = version;
10
+ this.authFlow = authFlow;
11
+ this.draft = new TideMemory_js_1.TideMemory(draft.length);
12
+ this.draft.set(draft);
13
+ this.dyanmicData = new TideMemory_js_1.TideMemory(dyanmicData.length);
14
+ this.dyanmicData.set(dyanmicData);
15
+ this.authorization = new TideMemory_js_1.TideMemory();
16
+ this.authorizerCert = new TideMemory_js_1.TideMemory();
17
+ ;
18
+ this.authorizer = new TideMemory_js_1.TideMemory();
19
+ this.expiry = Math.floor(Date.now() / 1000) + 30; // default is 30s
20
+ this.policy = new TideMemory_js_1.TideMemory();
21
+ }
22
+ id() {
23
+ return this.name + ":" + this.version;
24
+ }
25
+ /**
26
+ * This isn't copying. Just created another BaseTideRequest object that allows you to point each individual field to OTHER sections of memory.
27
+ * If you modify an existing 'replicated' field, you'll also modify the other object you originally replicated.
28
+ */
29
+ replicate() {
30
+ const r = new BaseTideRequest(this.name, this.version, this.authFlow, this.draft, this.dyanmicData);
31
+ r.authorization = this.authorization;
32
+ r.authorizerCert = this.authorizerCert;
33
+ r.authorizer = this.authorizer;
34
+ r.expiry = this.expiry;
35
+ r.policy = this.policy;
36
+ return r;
37
+ }
38
+ setNewDynamicData(d) {
39
+ this.dyanmicData = new TideMemory_js_1.TideMemory(d.length);
40
+ this.dyanmicData.set(d);
41
+ return this;
42
+ }
43
+ setCustomExpiry(timeFromNowInSeconds) {
44
+ this.expiry = Math.floor(Date.now() / 1000) + timeFromNowInSeconds;
45
+ return this;
46
+ }
47
+ addAuthorizer(authorizer) {
48
+ this.authorizer = new TideMemory_js_1.TideMemory(authorizer.length);
49
+ this.authorizer.set(authorizer);
50
+ }
51
+ addAuthorizerCertificate(authorizerCertificate) {
52
+ this.authorizerCert = new TideMemory_js_1.TideMemory(authorizerCertificate.length);
53
+ this.authorizerCert.set(authorizerCertificate);
54
+ }
55
+ addAuthorization(authorization) {
56
+ this.authorization = new TideMemory_js_1.TideMemory(authorization.length);
57
+ this.authorization.set(authorization);
58
+ return this;
59
+ }
60
+ addPolicy(policy) {
61
+ this.policy = new TideMemory_js_1.TideMemory(policy.length);
62
+ this.policy.set(policy);
63
+ return this;
64
+ }
65
+ hasPolicy() {
66
+ return this.policy.length != 0;
67
+ }
68
+ async getRequestInitDetails() {
69
+ const te = new TextEncoder();
70
+ return {
71
+ "creationTime": BaseTideRequest.uint32ToUint8ArrayLE(Math.floor(Date.now() / 1000)), // now
72
+ "expireTime": BaseTideRequest.uint32ToUint8ArrayLE(this.expiry),
73
+ "modelId": te.encode(this.id()),
74
+ "draftHash": new TideMemory_js_1.TideMemory(await crypto.subtle.digest("SHA-512", this.draft))
75
+ };
76
+ }
77
+ addCreationSignature(creationTime, sig) {
78
+ this.authorization = TideMemory_js_1.TideMemory.CreateFromArray([
79
+ TideMemory_js_1.TideMemory.CreateFromArray([
80
+ creationTime,
81
+ sig
82
+ ]),
83
+ new TideMemory_js_1.TideMemory() // empty as no approvals have been added yet
84
+ ]);
85
+ return this;
86
+ }
87
+ isInitialized() {
88
+ try {
89
+ // check that creation time and sig fields are present
90
+ if (this.authorization.GetValue(0).GetValue(0).length > 0 && this.authorization.GetValue(0).GetValue(1).length == 64)
91
+ return true;
92
+ else
93
+ return false;
94
+ }
95
+ catch {
96
+ return false;
97
+ }
98
+ }
99
+ getUniqueId() {
100
+ if (!this.isInitialized())
101
+ throw 'Must initialize request to generate unique id';
102
+ const bytes = this.authorization.GetValue(0).GetValue(1);
103
+ return Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join(''); // hex
104
+ }
105
+ getInitializedTime() {
106
+ if (!this.isInitialized())
107
+ throw 'Must initialize request to get creation time';
108
+ const time_bytes = this.authorization.GetValue(0).GetValue(0);
109
+ return BaseTideRequest.uint8ArrayToUint32LE(time_bytes);
110
+ }
111
+ getCurrentApprovalCount() {
112
+ if (!this.isInitialized())
113
+ throw 'Must initialize request to get approval count';
114
+ let i = 0;
115
+ let res = { result: undefined };
116
+ while (this.authorizer.TryGetValue(i, res)) {
117
+ i++;
118
+ }
119
+ return i;
120
+ }
121
+ getPolicy() {
122
+ return Policy_js_1.Policy.from(this.policy);
123
+ }
124
+ removeApproval(approvalVuid) {
125
+ // find if there are any dokens with this approvalVuid
126
+ if (!this.isInitialized())
127
+ return false;
128
+ if (this.getCurrentApprovalCount() == 0)
129
+ return false;
130
+ try {
131
+ // find doken and it's index
132
+ let i = 0;
133
+ let res = { result: new TideMemory_js_1.TideMemory() };
134
+ let dokenWithVuidFound = {};
135
+ let keepTheseDokensList = [];
136
+ let keepTheseApprovalSigs = [];
137
+ while (this.authorizer.TryGetValue(i, res)) {
138
+ const d = new BaseContract_js_1.Doken(res.result);
139
+ if (d.hasVuid(approvalVuid)) {
140
+ dokenWithVuidFound = {
141
+ index: i,
142
+ value: d
143
+ };
144
+ }
145
+ else {
146
+ keepTheseDokensList.push(res.result);
147
+ keepTheseApprovalSigs.push(this.authorization.GetValue(1).GetValue(i));
148
+ }
149
+ i++;
150
+ }
151
+ // reconstruct authorizers and authorizer sigs of request
152
+ if (dokenWithVuidFound) {
153
+ const creationAuth = this.authorization.GetValue(0);
154
+ this.authorization = TideMemory_js_1.TideMemory.CreateFromArray([
155
+ creationAuth,
156
+ TideMemory_js_1.TideMemory.CreateFromArray(keepTheseApprovalSigs)
157
+ ]);
158
+ this.authorizer = TideMemory_js_1.TideMemory.CreateFromArray(keepTheseDokensList);
159
+ return true;
160
+ }
161
+ else
162
+ return false;
163
+ }
164
+ catch (ex) {
165
+ console.error(ex);
166
+ return false;
167
+ }
168
+ }
169
+ encode() {
170
+ if (this.authorizer == null)
171
+ throw Error("Authorizer not added to request");
172
+ if (this.authorizerCert == null)
173
+ throw Error("Authorizer cert not provided");
174
+ if (this.authorization == null)
175
+ throw Error("Authorize this request first with an authorizer");
176
+ const te = new TextEncoder();
177
+ const name_b = te.encode(this.name);
178
+ const version_b = te.encode(this.version);
179
+ const authFlow_b = te.encode(this.authFlow);
180
+ const expiry = BaseTideRequest.uint32ToUint8ArrayLE(this.expiry);
181
+ const req = TideMemory_js_1.TideMemory.CreateFromArray([
182
+ name_b,
183
+ version_b,
184
+ expiry,
185
+ this.draft,
186
+ authFlow_b,
187
+ this.dyanmicData,
188
+ this.authorizer,
189
+ this.authorization,
190
+ this.authorizerCert,
191
+ this.policy
192
+ ]);
193
+ return req;
194
+ }
195
+ static decode(data) {
196
+ const d = new TideMemory_js_1.TideMemory(data.length);
197
+ d.set(data);
198
+ // Read field 0 (name) - this is part of the TideMemory structure
199
+ const name = new TextDecoder().decode(d.GetValue(0));
200
+ // Read all other fields
201
+ const version = new TextDecoder().decode(d.GetValue(1));
202
+ // Check name and version in static members if set
203
+ if (this._name != undefined && this._version != undefined) {
204
+ if (name != this._name || version != this._version)
205
+ throw Error("Name and Version in decoded data don't match this object's set name and version.");
206
+ }
207
+ const expiry = BaseTideRequest.uint8ArrayToUint32LE(d.GetValue(2));
208
+ const draft = d.GetValue(3);
209
+ const authFlow = new TextDecoder().decode(d.GetValue(4));
210
+ const dynamicData = d.GetValue(5);
211
+ const authorizer = d.GetValue(6);
212
+ const authorization = d.GetValue(7);
213
+ const authorizerCert = d.GetValue(8);
214
+ const policy = d.GetValue(9);
215
+ // Create a new instance using 'this' constructor to support subclasses
216
+ const request = new this(name, version, authFlow, draft, dynamicData);
217
+ // Set the remaining fields
218
+ request.expiry = expiry;
219
+ request.authorizer = authorizer;
220
+ request.authorization = authorization;
221
+ request.authorizerCert = authorizerCert;
222
+ request.policy = policy;
223
+ return request;
224
+ }
225
+ static uint32ToUint8ArrayLE(num) {
226
+ // We want 8 bytes to match .NET Int64 (long) layout: low 32 bits in first 4 bytes, rest zero.
227
+ const arr = new Uint8Array(8);
228
+ // low 32 bits, little-endian
229
+ arr[0] = num & 0xff;
230
+ arr[1] = (num >>> 8) & 0xff;
231
+ arr[2] = (num >>> 16) & 0xff;
232
+ arr[3] = (num >>> 24) & 0xff;
233
+ // arr[4..7] are already 0 from Uint8Array init, matching a .NET long with high 32 bits = 0.
234
+ return arr;
235
+ }
236
+ static uint8ArrayToUint32LE(bytes) {
237
+ if (bytes.length !== 8) {
238
+ throw new Error("Expected 8 bytes for a 64-bit value");
239
+ }
240
+ // Optional safety check: ensure high 32 bits are zero (no real 64-bit longs passed).
241
+ // If you *really* want to enforce the "no longs" assumption, uncomment:
242
+ //
243
+ // if (bytes[4] | bytes[5] | bytes[6] | bytes[7]) {
244
+ // throw new Error("High 32 bits are not zero; expected a 32-bit value stored in 64-bit field.");
245
+ // }
246
+ // Reconstruct from the low 4 bytes (little-endian)
247
+ return (bytes[0] +
248
+ (bytes[1] << 8) +
249
+ (bytes[2] << 16) +
250
+ (bytes[3] * 0x1000000) // avoids sign issues of << 24
251
+ );
252
+ }
253
+ }
254
+ exports.default = BaseTideRequest;
255
+ //# sourceMappingURL=TideRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TideRequest.js","sourceRoot":"","sources":["../../../src/models/TideRequest.ts"],"names":[],"mappings":";;AAAA,kEAAqD;AACrD,0DAAoD;AACpD,2CAAqC;AAErC,MAAqB,eAAe;IAehC,YAAY,IAAY,EAAE,OAAe,EAAE,QAAgB,EAAE,KAAiB,EAAE,WAAuB;QACnG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAExB,IAAI,CAAC,KAAK,GAAG,IAAI,0BAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEtB,IAAI,CAAC,WAAW,GAAG,IAAI,0BAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAElC,IAAI,CAAC,aAAa,GAAG,IAAI,0BAAU,EAAE,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,IAAI,0BAAU,EAAE,CAAC;QAAA,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,IAAI,0BAAU,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,iBAAiB;QACnE,IAAI,CAAC,MAAM,GAAG,IAAI,0BAAU,EAAE,CAAC;IACnC,CAAC;IAED,EAAE;QACE,OAAO,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,SAAS;QACL,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACpG,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACrC,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACvC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/B,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACvB,OAAO,CAAC,CAAC;IACb,CAAC;IAED,iBAAiB,CAAC,CAAa;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,0BAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,oBAA4B;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,oBAAoB,CAAC;QACnE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,UAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,0BAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,wBAAwB,CAAC,qBAAiC;QACtD,IAAI,CAAC,cAAc,GAAG,IAAI,0BAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC;IAED,gBAAgB,CAAC,aAAyB;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,0BAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,MAAkB;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,0BAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,qBAAqB;QACvB,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC;QAC7B,OAAO;YACH,cAAc,EAAE,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM;YAC3F,YAAY,EAAE,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;YAC/D,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAC/B,WAAW,EAAE,IAAI,0BAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACjF,CAAA;IACL,CAAC;IAED,oBAAoB,CAAC,YAAwB,EAAE,GAAe;QAC1D,IAAI,CAAC,aAAa,GAAG,0BAAU,CAAC,eAAe,CAAC;YAC5C,0BAAU,CAAC,eAAe,CAAC;gBACvB,YAAY;gBACZ,GAAG;aACN,CAAC;YACF,IAAI,0BAAU,EAAE,CAAC,4CAA4C;SAChE,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,aAAa;QACT,IAAI,CAAC;YACD,sDAAsD;YACtD,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE;gBAAE,OAAO,IAAI,CAAC;;gBAC7H,OAAO,KAAK,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAAE,MAAM,+CAA+C,CAAC;QACjF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAe,CAAC;QACvE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;IACvF,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAAE,MAAM,8CAA8C,CAAC;QAChF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9D,OAAO,eAAe,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,uBAAuB;QACnB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAAE,MAAM,+CAA+C,CAAC;QACjF,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;QAAC,CAAC;QACpD,OAAO,CAAC,CAAC;IACb,CAAC;IAED,SAAS;QACL,OAAO,kBAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,cAAc,CAAC,YAAoB;QAC/B,sDAAsD;QACtD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAEtD,IAAI,CAAC;YACD,4BAA4B;YAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,IAAI,0BAAU,EAAE,EAAE,CAAC;YACvC,IAAI,kBAAkB,GAAG,EAAE,CAAC;YAC5B,IAAI,mBAAmB,GAAG,EAAE,CAAC;YAC7B,IAAI,qBAAqB,GAAG,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,GAAG,IAAI,uBAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAChC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC1B,kBAAkB,GAAG;wBACjB,KAAK,EAAE,CAAC;wBACR,KAAK,EAAE,CAAC;qBACX,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACJ,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACrC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3E,CAAC;gBACD,CAAC,EAAE,CAAC;YACR,CAAC;YAED,yDAAyD;YACzD,IAAI,kBAAkB,EAAE,CAAC;gBACrB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,aAAa,GAAG,0BAAU,CAAC,eAAe,CAAC;oBAC5C,YAAY;oBACZ,0BAAU,CAAC,eAAe,CAAC,qBAAqB,CAAC;iBACpD,CAAC,CAAC;gBACH,IAAI,CAAC,UAAU,GAAG,0BAAU,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC;YAChB,CAAC;;gBAAK,OAAO,KAAK,CAAC;QACvB,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,MAAM;QACF,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI;YAAE,MAAM,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC5E,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI;YAAE,MAAM,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI;YAAE,MAAM,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAE/F,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEjE,MAAM,GAAG,GAAG,0BAAU,CAAC,eAAe,CAAC;YACnC,MAAM;YACN,SAAS;YACT,MAAM;YACN,IAAI,CAAC,KAAK;YACV,UAAU;YACV,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,MAAM;SACd,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,MAAM,CAET,IAAgB;QAEhB,MAAM,CAAC,GAAG,IAAI,0BAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEZ,iEAAiE;QACjE,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAErD,wBAAwB;QACxB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAExD,kDAAkD;QAClD,IAAK,IAAY,CAAC,KAAK,IAAI,SAAS,IAAK,IAAY,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC1E,IAAI,IAAI,IAAK,IAAY,CAAC,KAAK,IAAI,OAAO,IAAK,IAAY,CAAC,QAAQ;gBAAE,MAAM,KAAK,CAAC,kFAAkF,CAAC,CAAA;QACzK,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnE,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE5B,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzD,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,cAAc,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE7B,uEAAuE;QACvE,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAEtE,2BAA2B;QAC3B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;QAChC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;QACtC,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC;QACxC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QAExB,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,GAAW;QAC3C,8FAA8F;QAC9F,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAE9B,6BAA6B;QAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;QACpB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAE7B,4FAA4F;QAC5F,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,KAAiB;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;QAED,qFAAqF;QACrF,wEAAwE;QACxE,EAAE;QACF,mDAAmD;QACnD,qGAAqG;QACrG,IAAI;QAEJ,mDAAmD;QACnD,OAAO,CACH,KAAK,CAAC,CAAC,CAAC;YACR,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACf,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,8BAA8B;SACxD,CAAC;IACN,CAAC;CACJ;AAlSD,kCAkSC"}
@@ -0,0 +1,7 @@
1
+ export declare function bytesToBase64(bytes: Uint8Array): string;
2
+ export declare function base64toBytes(base64: string): Uint8Array;
3
+ export declare function StringToUint8Array(string: string): Uint8Array;
4
+ export declare function StringFromUint8Array(bytes: Uint8Array): string;
5
+ export declare function BigIntToByteArray(value: bigint): Uint8Array;
6
+ export declare function BigIntFromByteArray(bytes: Uint8Array): bigint;
7
+ //# sourceMappingURL=Serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Serialization.d.ts","sourceRoot":"","sources":["../../../src/utils/Serialization.ts"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAI,MAAM,CAoBxD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAkCxD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAI,UAAU,CAG9D;AACD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAI,MAAM,CAG/D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CA4B3D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAS7D"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bytesToBase64 = bytesToBase64;
4
+ exports.base64toBytes = base64toBytes;
5
+ exports.StringToUint8Array = StringToUint8Array;
6
+ exports.StringFromUint8Array = StringFromUint8Array;
7
+ exports.BigIntToByteArray = BigIntToByteArray;
8
+ exports.BigIntFromByteArray = BigIntFromByteArray;
9
+ const base64abc = [
10
+ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
11
+ "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
12
+ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
13
+ "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
14
+ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/"
15
+ ];
16
+ function bytesToBase64(bytes) {
17
+ let result = '', i, l = bytes.length;
18
+ for (i = 2; i < l; i += 3) {
19
+ result += base64abc[bytes[i - 2] >> 2];
20
+ result += base64abc[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];
21
+ result += base64abc[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)];
22
+ result += base64abc[bytes[i] & 0x3F];
23
+ }
24
+ if (i === l + 1) { // 1 octet yet to write
25
+ result += base64abc[bytes[i - 2] >> 2];
26
+ result += base64abc[(bytes[i - 2] & 0x03) << 4];
27
+ result += "==";
28
+ }
29
+ if (i === l) { // 2 octets yet to write
30
+ result += base64abc[bytes[i - 2] >> 2];
31
+ result += base64abc[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];
32
+ result += base64abc[(bytes[i - 1] & 0x0F) << 2];
33
+ result += "=";
34
+ }
35
+ return result;
36
+ }
37
+ function base64toBytes(base64) {
38
+ const lookup = {};
39
+ for (let i = 0; i < base64abc.length; i++) {
40
+ lookup[base64abc[i]] = i;
41
+ }
42
+ const len = base64.length;
43
+ let bufferLength = base64.length * 0.75;
44
+ if (base64[len - 1] === "=") {
45
+ bufferLength--;
46
+ if (base64[len - 2] === "=") {
47
+ bufferLength--;
48
+ }
49
+ }
50
+ const bytes = new Uint8Array(bufferLength);
51
+ let p = 0;
52
+ for (let i = 0; i < len; i += 4) {
53
+ const encoded1 = lookup[base64[i]];
54
+ const encoded2 = lookup[base64[i + 1]];
55
+ const encoded3 = lookup[base64[i + 2]];
56
+ const encoded4 = lookup[base64[i + 3]];
57
+ bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
58
+ if (encoded3 !== undefined) {
59
+ bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
60
+ }
61
+ if (encoded4 !== undefined) {
62
+ bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
63
+ }
64
+ }
65
+ return bytes;
66
+ }
67
+ function StringToUint8Array(string) {
68
+ const enc = new TextEncoder();
69
+ return enc.encode(string);
70
+ }
71
+ function StringFromUint8Array(bytes) {
72
+ const enc = new TextDecoder();
73
+ return enc.decode(bytes);
74
+ }
75
+ function BigIntToByteArray(value) {
76
+ if (value < 0n) {
77
+ throw new Error("Negative BigInt values are not supported");
78
+ }
79
+ const bytes = [];
80
+ let temp = value;
81
+ // Extract bytes in little-endian order
82
+ while (temp > 0n) {
83
+ bytes.push(Number(temp & 0xffn));
84
+ temp = temp >> 8n;
85
+ }
86
+ // Handle zero case
87
+ if (bytes.length === 0) {
88
+ bytes.push(0);
89
+ }
90
+ // Pad or trim to specified length
91
+ const targetLength = bytes.length;
92
+ const result = new Uint8Array(targetLength);
93
+ for (let i = 0; i < Math.min(bytes.length, targetLength); i++) {
94
+ result[i] = bytes[i];
95
+ }
96
+ return result;
97
+ }
98
+ function BigIntFromByteArray(bytes) {
99
+ let result = 0n;
100
+ // Read bytes in little-endian order
101
+ for (let i = bytes.length - 1; i >= 0; i--) {
102
+ result = (result << 8n) | BigInt(bytes[i]);
103
+ }
104
+ return result;
105
+ }
106
+ //# sourceMappingURL=Serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Serialization.js","sourceRoot":"","sources":["../../../src/utils/Serialization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare class TideMemory extends Uint8Array {
2
+ static CreateFromArray(datas: Uint8Array[]): TideMemory;
3
+ static Create(initialValue: Uint8Array, totalLength: number, version?: number): TideMemory;
4
+ WriteValue(index: number, value: Uint8Array): void;
5
+ GetValue(index: number): TideMemory;
6
+ TryGetValue(index: number, returnObj: {
7
+ result: Uint8Array | undefined;
8
+ }): boolean;
9
+ }
10
+ //# sourceMappingURL=TideMemory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TideMemory.d.ts","sourceRoot":"","sources":["../../../src/utils/TideMemory.ts"],"names":[],"mappings":"AACA,qBAAa,UAAW,SAAQ,UAAU;IACtC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU;IASvD,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,MAAU,GAAG,UAAU;IAyB7F,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAwClD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAwCnC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;QAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAA;KAAC,GAAG,OAAO;CASnF"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TideMemory = void 0;
4
+ // Tide Memory Object helper functions from tide-js
5
+ class TideMemory extends Uint8Array {
6
+ static CreateFromArray(datas) {
7
+ if (datas.length == 0)
8
+ return new TideMemory();
9
+ const length = datas.reduce((sum, next) => sum + 4 + next.length, 0);
10
+ const mem = this.Create(datas[0], length);
11
+ for (let i = 1; i < datas.length; i++) {
12
+ mem.WriteValue(i, datas[i]);
13
+ }
14
+ return mem;
15
+ }
16
+ static Create(initialValue, totalLength, version = 1) {
17
+ if (totalLength < initialValue.length + 4) {
18
+ throw new Error("Not enough space to allocate requested data. Make sure to request more space in totalLength than length of InitialValue plus 4 bytes for length.");
19
+ }
20
+ // Total buffer length is 4 (version) + totalLength
21
+ const bufferLength = 4 + totalLength;
22
+ const buffer = new TideMemory(bufferLength);
23
+ const dataView = new DataView(buffer.buffer);
24
+ // Write version at position 0 (4 bytes)
25
+ dataView.setInt32(0, version, true); // true for little-endian
26
+ let dataLocationIndex = 4;
27
+ // Write data length of initialValue at position 4 (4 bytes)
28
+ dataView.setInt32(dataLocationIndex, initialValue.length, true);
29
+ dataLocationIndex += 4;
30
+ // Write initialValue starting from position 8
31
+ buffer.set(initialValue, dataLocationIndex);
32
+ return buffer;
33
+ }
34
+ WriteValue(index, value) {
35
+ if (index < 0)
36
+ throw new Error("Index cannot be less than 0");
37
+ if (index === 0)
38
+ throw new Error("Use CreateTideMemory to set value at index 0");
39
+ if (this.length < 4 + value.length)
40
+ throw new Error("Could not write to memory. Memory too small for this value");
41
+ const dataView = new DataView(this.buffer);
42
+ let dataLocationIndex = 4; // Start after the version number
43
+ // Navigate through existing data segments
44
+ for (let i = 0; i < index; i++) {
45
+ if (dataLocationIndex + 4 > this.length) {
46
+ throw new RangeError("Index out of range.");
47
+ }
48
+ // Read data length at current position
49
+ const nextDataLength = dataView.getInt32(dataLocationIndex, true);
50
+ dataLocationIndex += 4;
51
+ dataLocationIndex += nextDataLength;
52
+ }
53
+ // Check if there's enough space to write the value
54
+ if (dataLocationIndex + 4 + value.length > this.length) {
55
+ throw new RangeError("Not enough space to write value");
56
+ }
57
+ // Check if data has already been written to this index
58
+ const existingLength = dataView.getInt32(dataLocationIndex, true);
59
+ if (existingLength !== 0) {
60
+ throw new Error("Data has already been written to this index");
61
+ }
62
+ // Write data length of value at current position
63
+ dataView.setInt32(dataLocationIndex, value.length, true);
64
+ dataLocationIndex += 4;
65
+ // Write value starting from current position
66
+ this.set(value, dataLocationIndex);
67
+ }
68
+ GetValue(index) {
69
+ // 'a' should be an ArrayBuffer or Uint8Array
70
+ if (this.length < 4) {
71
+ throw new Error("Insufficient data to read.");
72
+ }
73
+ // Create a DataView for reading integers in little-endian format
74
+ const dataView = new DataView(this.buffer, this.byteOffset, this.byteLength);
75
+ // Optional: Read the version if needed
76
+ // const version = dataView.getInt32(0, true);
77
+ let dataLocationIndex = 4;
78
+ for (let i = 0; i < index; i++) {
79
+ // Check if there's enough data to read the length of the next segment
80
+ if (dataLocationIndex + 4 > this.length) {
81
+ throw new RangeError("Index out of range.");
82
+ }
83
+ const nextDataLength = dataView.getInt32(dataLocationIndex, true);
84
+ dataLocationIndex += 4 + nextDataLength;
85
+ }
86
+ // Check if there's enough data to read the length of the final segment
87
+ if (dataLocationIndex + 4 > this.length) {
88
+ throw new RangeError("Index out of range.");
89
+ }
90
+ const finalDataLength = dataView.getInt32(dataLocationIndex, true);
91
+ dataLocationIndex += 4;
92
+ // Check if the final data segment is within bounds
93
+ if (dataLocationIndex + finalDataLength > this.length) {
94
+ throw new RangeError("Index out of range.");
95
+ }
96
+ return this.subarray(dataLocationIndex, dataLocationIndex + finalDataLength);
97
+ }
98
+ TryGetValue(index, returnObj) {
99
+ try {
100
+ returnObj.result = this.GetValue(index);
101
+ return true;
102
+ }
103
+ catch {
104
+ returnObj.result = undefined;
105
+ return false;
106
+ }
107
+ }
108
+ }
109
+ exports.TideMemory = TideMemory;
110
+ //# sourceMappingURL=TideMemory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TideMemory.js","sourceRoot":"","sources":["../../../src/utils/TideMemory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { Policy } from "../models/Policy";
2
+ import BaseTideRequest from "../models/TideRequest";
3
+ import { TideMemory } from "../utils/TideMemory";
4
+ interface PolicyRunResult {
5
+ failed?: unknown;
6
+ success: boolean;
7
+ }
8
+ export declare abstract class BaseContract {
9
+ abstract id: string;
10
+ private tideRequest;
11
+ private dokens;
12
+ protected authorizedRequestPayload: TideMemory;
13
+ protected informationalRequestPayload: TideMemory;
14
+ /**
15
+ * Inheritors must implement this
16
+ * @param policy Policy object
17
+ */
18
+ protected abstract validateData(policy: Policy): Promise<void>;
19
+ /**
20
+ * Inheritors must implement this if the policy has set it's approvalType to EXPLICIT
21
+ * @param policy Policy object
22
+ * @param approverDokens Approver Dokens
23
+ */
24
+ protected validateApprovers(policy: Policy, approverDokens: Doken[]): Promise<void>;
25
+ /**
26
+ * Inheritors must implement this if the policy has set it's executionType to PRIVATE
27
+ * @param policy Policy object
28
+ * @param executorDoken Executor Doken
29
+ */
30
+ protected validateExecutor(policy: Policy, executorDoken: Doken): Promise<void>;
31
+ /**
32
+ * To help with clients testing if their Tide Request will pass their contract's specified contract
33
+ * @param policy Serialized policy from Tide
34
+ * @returns
35
+ */
36
+ testPolicy(policy: Uint8Array | Policy, executorDoken?: string | undefined): Promise<PolicyRunResult>;
37
+ constructor(tideRequest: Uint8Array | BaseTideRequest);
38
+ }
39
+ export declare class Doken {
40
+ private payload;
41
+ constructor(d: Uint8Array | string);
42
+ hasResourceAccessRole(role: string, client: string): boolean;
43
+ hasRealmAccessRole(role: string): boolean;
44
+ hasVuid(vuid: string): boolean;
45
+ }
46
+ export {};
47
+ //# sourceMappingURL=BaseContract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseContract.d.ts","sourceRoot":"","sources":["../../../src/contracts/BaseContract.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,eAAe,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,UAAU,eAAe;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAA;CACnB;AAED,8BAAsB,YAAY;IAC9B,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,MAAM,CAAe;IAC7B,SAAS,CAAC,wBAAwB,EAAE,UAAU,CAAC;IAC/C,SAAS,CAAC,2BAA2B,EAAE,UAAU,CAAC;IAElD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9D;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAInF;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E;;;;OAIG;IACG,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,SAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;gBAsBtG,WAAW,EAAE,UAAU,GAAG,eAAe;CAaxD;AAKD,qBAAa,KAAK;IACd,OAAO,CAAC,OAAO,CAAM;gBACT,CAAC,EAAE,UAAU,GAAG,MAAM;IAuBlC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAkB5D,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAazC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAKjC"}