@proto-kit/module 0.1.1-develop.165 → 0.1.1-develop.1661
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/dist/factories/MethodIdFactory.d.ts +9 -0
- package/dist/factories/MethodIdFactory.d.ts.map +1 -0
- package/dist/factories/MethodIdFactory.js +11 -0
- package/dist/factories/MethodIdFactory.js.map +1 -0
- package/dist/index.d.ts +5 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -7
- package/dist/index.js.map +1 -0
- package/dist/messages/OutgoingMessage.d.ts +96 -0
- package/dist/messages/OutgoingMessage.d.ts.map +1 -0
- package/dist/messages/OutgoingMessage.js +68 -0
- package/dist/messages/OutgoingMessage.js.map +1 -0
- package/dist/messages/OutgoingMessages.d.ts +215 -0
- package/dist/messages/OutgoingMessages.d.ts.map +1 -0
- package/dist/messages/OutgoingMessages.js +66 -0
- package/dist/messages/OutgoingMessages.js.map +1 -0
- package/dist/method/MethodParameterEncoder.d.ts +26 -0
- package/dist/method/MethodParameterEncoder.d.ts.map +1 -0
- package/dist/method/MethodParameterEncoder.js +169 -0
- package/dist/method/MethodParameterEncoder.js.map +1 -0
- package/dist/method/runtimeMethod.d.ts +22 -5
- package/dist/method/runtimeMethod.d.ts.map +1 -1
- package/dist/method/runtimeMethod.js +79 -24
- package/dist/method/runtimeMethod.js.map +1 -0
- package/dist/module/decorator.js +1 -0
- package/dist/module/decorator.js.map +1 -0
- package/dist/runtime/MethodIdResolver.d.ts +20 -0
- package/dist/runtime/MethodIdResolver.d.ts.map +1 -0
- package/dist/runtime/MethodIdResolver.js +91 -0
- package/dist/runtime/MethodIdResolver.js.map +1 -0
- package/dist/runtime/Runtime.d.ts +22 -28
- package/dist/runtime/Runtime.d.ts.map +1 -1
- package/dist/runtime/Runtime.js +116 -70
- package/dist/runtime/Runtime.js.map +1 -0
- package/dist/runtime/RuntimeEnvironment.d.ts +10 -0
- package/dist/runtime/RuntimeEnvironment.d.ts.map +1 -0
- package/dist/runtime/RuntimeEnvironment.js +2 -0
- package/dist/runtime/RuntimeEnvironment.js.map +1 -0
- package/dist/runtime/RuntimeModule.d.ts +23 -14
- package/dist/runtime/RuntimeModule.d.ts.map +1 -1
- package/dist/runtime/RuntimeModule.js +47 -10
- package/dist/runtime/RuntimeModule.js.map +1 -0
- package/dist/state/InMemoryStateService.d.ts +11 -10
- package/dist/state/InMemoryStateService.d.ts.map +1 -1
- package/dist/state/InMemoryStateService.js +11 -8
- package/dist/state/InMemoryStateService.js.map +1 -0
- package/dist/state/decorator.d.ts.map +1 -1
- package/dist/state/decorator.js +2 -4
- package/dist/state/decorator.js.map +1 -0
- package/dist/testing/TestingRuntime.d.ts +8 -0
- package/dist/testing/TestingRuntime.d.ts.map +1 -0
- package/dist/testing/TestingRuntime.js +31 -0
- package/dist/testing/TestingRuntime.js.map +1 -0
- package/jest.config.cjs +12 -1
- package/package.json +10 -11
- package/src/factories/MethodIdFactory.ts +13 -0
- package/src/index.ts +5 -7
- package/src/messages/OutgoingMessages.ts +122 -0
- package/src/method/MethodParameterEncoder.ts +260 -0
- package/src/method/runtimeMethod.ts +146 -31
- package/src/runtime/MethodIdResolver.ts +108 -0
- package/src/runtime/Runtime.ts +191 -112
- package/src/runtime/RuntimeEnvironment.ts +16 -0
- package/src/runtime/RuntimeModule.ts +77 -27
- package/src/state/InMemoryStateService.ts +14 -18
- package/test/Runtime.test.ts +69 -36
- package/test/TestingRuntime.ts +43 -0
- package/test/messages/message.test.ts +42 -0
- package/test/method/MethodParameterEncoder.test.ts +121 -0
- package/test/method/runtimeMethod-fail.test.ts +50 -0
- package/{src/method/decorator.test.ts → test/method/runtimeMethod.test.ts} +3 -3
- package/test/modules/Admin.ts +4 -4
- package/test/modules/Balances.test.ts +92 -78
- package/test/modules/Balances.ts +19 -16
- package/test/modules/MethodIdResolver.test.ts +73 -0
- package/test/modules/State.test.ts +81 -0
- package/test/runtimeMethod.test.ts +192 -20
- package/test/tsconfig.json +7 -0
- package/tsconfig.json +2 -2
- package/dist/chain/Chain.d.ts +0 -109
- package/dist/chain/Chain.d.ts.map +0 -1
- package/dist/chain/Chain.js +0 -229
- package/dist/method/MethodExecutionContext.d.ts +0 -73
- package/dist/method/MethodExecutionContext.d.ts.map +0 -1
- package/dist/method/MethodExecutionContext.js +0 -112
- package/dist/method/MethodParameterDecoder.d.ts +0 -22
- package/dist/method/MethodParameterDecoder.d.ts.map +0 -1
- package/dist/method/MethodParameterDecoder.js +0 -33
- package/dist/method/RuntimeMethodExecutionContext.d.ts +0 -57
- package/dist/method/RuntimeMethodExecutionContext.d.ts.map +0 -1
- package/dist/method/RuntimeMethodExecutionContext.js +0 -92
- package/dist/method/assert.d.ts +0 -12
- package/dist/method/assert.d.ts.map +0 -1
- package/dist/method/assert.js +0 -23
- package/dist/method/decorator.d.ts +0 -45
- package/dist/method/decorator.d.ts.map +0 -1
- package/dist/method/decorator.js +0 -140
- package/dist/state/State.d.ts +0 -65
- package/dist/state/State.d.ts.map +0 -1
- package/dist/state/State.js +0 -114
- package/dist/state/StateMap.d.ts +0 -37
- package/dist/state/StateMap.d.ts.map +0 -1
- package/dist/state/StateMap.js +0 -56
- package/dist/state/StateServiceProvider.d.ts +0 -10
- package/dist/state/StateServiceProvider.d.ts.map +0 -1
- package/dist/state/StateServiceProvider.js +0 -34
- package/src/method/MethodParameterDecoder.ts +0 -68
- package/src/method/RuntimeMethodExecutionContext.ts +0 -111
- package/src/method/assert.test.ts +0 -49
- package/src/method/assert.ts +0 -27
- package/src/state/State.ts +0 -154
- package/src/state/StateMap.ts +0 -69
- package/src/state/StateServiceProvider.ts +0 -24
- package/src/state/decorator.ts +0 -65
- package/test/state/MerkleTree.test.ts +0 -95
- package/test/state/MockAsyncMerkleStore.ts +0 -28
- package/test/transaction.test.ts +0 -82
- package/tsconfig.test.json +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/Runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/Runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAa,mBAAmB,EAAc,MAAM,UAAU,CAAC;AACtE,OAAO,EACL,WAAW,EACX,eAAe,EAEf,aAAa,EACb,UAAU,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EAIxB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,uBAa3C;AAED;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CACnC,CAAC;AAOF,qBAAa,qBAAqB,CAChC,OAAO,SAAS,oBAAoB,CACpC,SAAQ,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;gBAAzB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAInD,IAAW,gBAAgB,iCAE1B;IAEM,gBAAgB,IAAI,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAAE;CA4K3E;AAED;;;GAGG;AACH,qBACa,OAAO,CAAC,OAAO,SAAS,oBAAoB,CACvD,SAAQ,eAAe,CAAC,OAAO,CAC/B,YAAW,kBAAkB,EAAE,gBAAgB;WAEjC,IAAI,CAAC,OAAO,SAAS,oBAAoB,EACrD,UAAU,EAAE,OAAO,GAClB,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IASxB,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;IAIvC,UAAU,EAAE,OAAO,CAAC;IAEpB,cAAc,EAAE,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAErE;;;;OAIG;gBACgB,UAAU,EAAE,OAAO;IAO/B,MAAM,CAAC,sBAAsB,EAAE,sBAAsB;IAM5D,IAAW,gBAAgB,IAAI,gBAAgB,GAAG,SAAS,CAE1D;IAED,IAAW,oBAAoB,IAAI,oBAAoB,CAEtD;IAED,IAAW,YAAY,IAAI,uBAAuB,CAEjD;IAED,IAAW,gBAAgB,IAAI,gBAAgB,CAE9C;IAED;;OAEG;IACH,IAAW,mBAAmB,IAAI,mBAAmB,CAEpD;IAED;;;OAGG;IACI,aAAa,CAClB,QAAQ,EAAE,MAAM,GACf,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS;IAsBzD;;;;;;OAMG;IACI,cAAc,CACnB,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,EAChC,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAQ9D;;OAEG;IACH,IAAW,kBAAkB,aAE5B;IAEY,OAAO,CAAC,QAAQ,EAAE,eAAe;CAQ/C"}
|
package/dist/runtime/Runtime.js
CHANGED
|
@@ -8,53 +8,62 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
var Runtime_1;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
import { injectable } from "tsyringe";
|
|
11
|
+
/* eslint-disable @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-argument */
|
|
12
|
+
import { ZkProgram } from "o1js";
|
|
13
|
+
import { container, injectable } from "tsyringe";
|
|
15
14
|
import { ModuleContainer, ZkProgrammable, } from "@proto-kit/common";
|
|
16
|
-
import {
|
|
17
|
-
import { combineMethodName, isRuntimeMethod, toWrappedMethod, } from "../method/runtimeMethod
|
|
18
|
-
import {
|
|
15
|
+
import { MethodPublicOutput, RuntimeMethodExecutionContext, RuntimeTransaction, NetworkState, } from "@proto-kit/protocol";
|
|
16
|
+
import { combineMethodName, isRuntimeMethod, runtimeMethodTypeMetadataKey, toWrappedMethod, } from "../method/runtimeMethod";
|
|
17
|
+
import { MethodIdFactory } from "../factories/MethodIdFactory";
|
|
18
|
+
export function getAllPropertyNames(obj) {
|
|
19
|
+
let currentPrototype = obj;
|
|
20
|
+
let keys = [];
|
|
21
|
+
// if primitive (primitives still have keys) skip the first iteration
|
|
22
|
+
if (!(obj instanceof Object)) {
|
|
23
|
+
currentPrototype = Object.getPrototypeOf(obj);
|
|
24
|
+
}
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
|
|
26
|
+
while (currentPrototype) {
|
|
27
|
+
keys = keys.concat(Reflect.ownKeys(currentPrototype));
|
|
28
|
+
currentPrototype = Object.getPrototypeOf(currentPrototype);
|
|
29
|
+
}
|
|
30
|
+
return keys;
|
|
31
|
+
}
|
|
19
32
|
const errors = {
|
|
20
33
|
methodNotFound: (methodKey) => new Error(`Unable to find method with id ${methodKey}`),
|
|
21
34
|
};
|
|
22
35
|
export class RuntimeZkProgrammable extends ZkProgrammable {
|
|
23
|
-
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
24
36
|
constructor(runtime) {
|
|
25
37
|
super();
|
|
26
38
|
this.runtime = runtime;
|
|
27
39
|
}
|
|
28
|
-
get
|
|
29
|
-
return this.runtime.
|
|
40
|
+
get areProofsEnabled() {
|
|
41
|
+
return this.runtime.areProofsEnabled;
|
|
30
42
|
}
|
|
31
43
|
zkProgramFactory() {
|
|
32
44
|
// We need to use explicit type annotations here,
|
|
33
45
|
// therefore we can't use destructuring
|
|
34
|
-
// eslint-disable-next-line
|
|
35
|
-
// eslint-disable-next-line @typescript-eslint/no-use-before-define,prefer-destructuring,putout/putout
|
|
46
|
+
// eslint-disable-next-line prefer-destructuring
|
|
36
47
|
const runtime = this.runtime;
|
|
48
|
+
const MAXIMUM_METHODS_PER_ZK_PROGRAM = 8;
|
|
37
49
|
const runtimeMethods = runtime.runtimeModuleNames.reduce((allMethods, runtimeModuleName) => {
|
|
38
|
-
runtime.isValidModuleName(runtime.definition
|
|
50
|
+
runtime.isValidModuleName(runtime.definition, runtimeModuleName);
|
|
39
51
|
/**
|
|
40
52
|
* Couldnt find a better way to circumvent the type assertion
|
|
41
53
|
* regarding resolving only known modules. We assert in the line above
|
|
42
54
|
* but we cast it to any anyways to satisfy the proof system.
|
|
43
55
|
*/
|
|
44
|
-
// eslint-disable-next-line max-len
|
|
45
56
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
46
57
|
const runtimeModule = runtime.resolve(runtimeModuleName);
|
|
47
|
-
// eslint-disable-next-line max-len
|
|
48
58
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
49
59
|
const modulePrototype = Object.getPrototypeOf(runtimeModule);
|
|
50
|
-
const modulePrototypeMethods =
|
|
60
|
+
const modulePrototypeMethods = getAllPropertyNames(runtimeModule).map((method) => method.toString());
|
|
51
61
|
const moduleMethods = modulePrototypeMethods.reduce((allModuleMethods, methodName) => {
|
|
52
62
|
if (isRuntimeMethod(runtimeModule, methodName)) {
|
|
53
63
|
const combinedMethodName = combineMethodName(runtimeModuleName, methodName);
|
|
54
64
|
const method = modulePrototype[methodName];
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
// TODO: find out how to import the Tuple type
|
|
65
|
+
const invocationType = Reflect.getMetadata(runtimeMethodTypeMetadataKey, runtimeModule, methodName);
|
|
66
|
+
const wrappedMethod = Reflect.apply(toWrappedMethod, runtimeModule, [methodName, method, { invocationType }]);
|
|
58
67
|
const privateInputs = Reflect.getMetadata("design:paramtypes", runtimeModule, methodName);
|
|
59
68
|
return {
|
|
60
69
|
...allModuleMethods,
|
|
@@ -71,33 +80,68 @@ export class RuntimeZkProgrammable extends ZkProgrammable {
|
|
|
71
80
|
...moduleMethods,
|
|
72
81
|
};
|
|
73
82
|
}, {});
|
|
74
|
-
const sortedRuntimeMethods = Object.fromEntries(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
83
|
+
const sortedRuntimeMethods = Object.fromEntries(Object.entries(runtimeMethods).sort());
|
|
84
|
+
const splitRuntimeMethods = () => {
|
|
85
|
+
const buckets = [];
|
|
86
|
+
Object.entries(sortedRuntimeMethods).forEach(async ([methodName, method]) => {
|
|
87
|
+
let methodAdded = false;
|
|
88
|
+
for (const bucket of buckets) {
|
|
89
|
+
if (buckets.length === 0) {
|
|
90
|
+
const record = {};
|
|
91
|
+
record[methodName] = method;
|
|
92
|
+
buckets.push(record);
|
|
93
|
+
methodAdded = true;
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
else if (Object.keys(bucket).length <=
|
|
97
|
+
MAXIMUM_METHODS_PER_ZK_PROGRAM - 1) {
|
|
98
|
+
bucket[methodName] = method;
|
|
99
|
+
methodAdded = true;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (!methodAdded) {
|
|
104
|
+
const record = {};
|
|
105
|
+
record[methodName] = method;
|
|
106
|
+
buckets.push(record);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
return buckets;
|
|
91
110
|
};
|
|
111
|
+
return splitRuntimeMethods().map((bucket, index) => {
|
|
112
|
+
const name = `RuntimeProgram-${index}`;
|
|
113
|
+
const program = ZkProgram({
|
|
114
|
+
name,
|
|
115
|
+
publicOutput: MethodPublicOutput,
|
|
116
|
+
methods: bucket,
|
|
117
|
+
});
|
|
118
|
+
const SelfProof = ZkProgram.Proof(program);
|
|
119
|
+
const methods = Object.keys(bucket).reduce((boundMethods, methodName) => {
|
|
120
|
+
boundMethods[methodName] = program[methodName].bind(program);
|
|
121
|
+
return boundMethods;
|
|
122
|
+
}, {});
|
|
123
|
+
return {
|
|
124
|
+
name,
|
|
125
|
+
compile: program.compile.bind(program),
|
|
126
|
+
verify: program.verify.bind(program),
|
|
127
|
+
analyzeMethods: program.analyzeMethods.bind(program),
|
|
128
|
+
Proof: SelfProof,
|
|
129
|
+
methods,
|
|
130
|
+
};
|
|
131
|
+
});
|
|
92
132
|
}
|
|
93
133
|
}
|
|
94
134
|
/**
|
|
95
135
|
* Wrapper for an application specific runtime, which helps orchestrate
|
|
96
136
|
* runtime modules into an interoperable runtime.
|
|
97
137
|
*/
|
|
98
|
-
let Runtime = Runtime_1 = class Runtime extends ModuleContainer {
|
|
138
|
+
export let Runtime = Runtime_1 = class Runtime extends ModuleContainer {
|
|
99
139
|
static from(definition) {
|
|
100
|
-
return
|
|
140
|
+
return class RuntimeScoped extends Runtime_1 {
|
|
141
|
+
constructor() {
|
|
142
|
+
super(definition);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
101
145
|
}
|
|
102
146
|
/**
|
|
103
147
|
* Creates a new Runtime from the provided config
|
|
@@ -106,23 +150,25 @@ let Runtime = Runtime_1 = class Runtime extends ModuleContainer {
|
|
|
106
150
|
*/
|
|
107
151
|
constructor(definition) {
|
|
108
152
|
super(definition);
|
|
109
|
-
// eslint-disable-next-line no-warning-comments
|
|
110
|
-
// TODO DI
|
|
111
|
-
this.stateServiceProviderInstance = new StateServiceProvider(this.definition.state);
|
|
112
153
|
this.definition = definition;
|
|
113
154
|
this.zkProgrammable = new RuntimeZkProgrammable(this);
|
|
114
|
-
// this.registerValue({
|
|
115
|
-
// Runtime: this,
|
|
116
|
-
// });
|
|
117
155
|
}
|
|
118
|
-
|
|
119
|
-
|
|
156
|
+
// TODO Remove after changing DFs to type-based approach
|
|
157
|
+
create(childContainerProvider) {
|
|
158
|
+
super.create(childContainerProvider);
|
|
159
|
+
this.useDependencyFactory(MethodIdFactory);
|
|
120
160
|
}
|
|
121
|
-
get
|
|
122
|
-
return this.
|
|
161
|
+
get areProofsEnabled() {
|
|
162
|
+
return this.container.resolve("AreProofsEnabled");
|
|
123
163
|
}
|
|
124
164
|
get stateServiceProvider() {
|
|
125
|
-
return this.
|
|
165
|
+
return this.container.resolve("StateServiceProvider");
|
|
166
|
+
}
|
|
167
|
+
get stateService() {
|
|
168
|
+
return this.stateServiceProvider.stateService;
|
|
169
|
+
}
|
|
170
|
+
get methodIdResolver() {
|
|
171
|
+
return this.container.resolve("MethodIdResolver");
|
|
126
172
|
}
|
|
127
173
|
/**
|
|
128
174
|
* @returns The dependency injection container of this runtime
|
|
@@ -135,11 +181,14 @@ let Runtime = Runtime_1 = class Runtime extends ModuleContainer {
|
|
|
135
181
|
* Encoding: "stringToField(module.name) << 128 + stringToField(method-name)"
|
|
136
182
|
*/
|
|
137
183
|
getMethodById(methodId) {
|
|
138
|
-
const
|
|
139
|
-
|
|
184
|
+
const methodDescriptor = this.methodIdResolver.getMethodNameFromId(methodId);
|
|
185
|
+
if (methodDescriptor === undefined) {
|
|
186
|
+
return undefined;
|
|
187
|
+
}
|
|
188
|
+
const [moduleName, methodName] = methodDescriptor;
|
|
189
|
+
this.assertIsValidModuleName(moduleName);
|
|
140
190
|
const module = this.resolve(moduleName);
|
|
141
|
-
// eslint-disable-next-line
|
|
142
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions,@typescript-eslint/no-unsafe-member-access
|
|
191
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
143
192
|
const method = module[methodName];
|
|
144
193
|
if (method === undefined) {
|
|
145
194
|
throw errors.methodNotFound(`${moduleName}.${methodName}`);
|
|
@@ -147,39 +196,36 @@ let Runtime = Runtime_1 = class Runtime extends ModuleContainer {
|
|
|
147
196
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
148
197
|
return method.bind(module);
|
|
149
198
|
}
|
|
150
|
-
getMethodNameFromId(methodId) {
|
|
151
|
-
// eslint-disable-next-line @typescript-eslint/no-magic-numbers
|
|
152
|
-
const moduleName = fieldToString(methodId >> 128n);
|
|
153
|
-
// eslint-disable-next-line @typescript-eslint/no-magic-numbers
|
|
154
|
-
const methodName = fieldToString(methodId % 2n ** 128n);
|
|
155
|
-
return [moduleName, methodName];
|
|
156
|
-
}
|
|
157
|
-
getMethodId(moduleName, methodName) {
|
|
158
|
-
return (
|
|
159
|
-
// eslint-disable-next-line @typescript-eslint/no-magic-numbers
|
|
160
|
-
(stringToField(moduleName).toBigInt() << 128n) +
|
|
161
|
-
stringToField(methodName).toBigInt());
|
|
162
|
-
}
|
|
163
199
|
/**
|
|
164
200
|
* Add a name and other respective properties required by RuntimeModules,
|
|
165
201
|
* that come from the current Runtime
|
|
166
202
|
*
|
|
167
|
-
* @param
|
|
203
|
+
* @param moduleName - Name of the runtime module to decorate
|
|
204
|
+
* @param containedModule
|
|
168
205
|
*/
|
|
169
206
|
decorateModule(moduleName, containedModule) {
|
|
170
207
|
containedModule.name = moduleName;
|
|
171
|
-
containedModule.
|
|
208
|
+
containedModule.parent = this;
|
|
172
209
|
super.decorateModule(moduleName, containedModule);
|
|
173
210
|
}
|
|
174
211
|
/**
|
|
175
212
|
* @returns A list of names of all the registered module names
|
|
176
213
|
*/
|
|
177
214
|
get runtimeModuleNames() {
|
|
178
|
-
return
|
|
215
|
+
return this.moduleNames;
|
|
216
|
+
}
|
|
217
|
+
async compile(registry) {
|
|
218
|
+
const context = container.resolve(RuntimeMethodExecutionContext);
|
|
219
|
+
context.setup({
|
|
220
|
+
transaction: RuntimeTransaction.dummyTransaction(),
|
|
221
|
+
networkState: NetworkState.empty(),
|
|
222
|
+
});
|
|
223
|
+
return await this.zkProgrammable.compile(registry);
|
|
179
224
|
}
|
|
180
225
|
};
|
|
181
226
|
Runtime = Runtime_1 = __decorate([
|
|
182
227
|
injectable(),
|
|
183
228
|
__metadata("design:paramtypes", [Object])
|
|
184
229
|
], Runtime);
|
|
185
|
-
|
|
230
|
+
/* eslint-enable @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-argument */
|
|
231
|
+
//# sourceMappingURL=Runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Runtime.js","sourceRoot":"","sources":["../../src/runtime/Runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AreProofsEnabled, WithZkProgrammable } from "@proto-kit/common";
|
|
2
|
+
import { MethodPublicOutput, SimpleAsyncStateService, StateServiceProvider } from "@proto-kit/protocol";
|
|
3
|
+
import { MethodIdResolver } from "./MethodIdResolver";
|
|
4
|
+
export interface RuntimeEnvironment extends WithZkProgrammable<undefined, MethodPublicOutput> {
|
|
5
|
+
get areProofsEnabled(): AreProofsEnabled | undefined;
|
|
6
|
+
get stateService(): SimpleAsyncStateService;
|
|
7
|
+
get stateServiceProvider(): StateServiceProvider;
|
|
8
|
+
get methodIdResolver(): MethodIdResolver;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=RuntimeEnvironment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeEnvironment.d.ts","sourceRoot":"","sources":["../../src/runtime/RuntimeEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,kBACf,SAAQ,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACzD,IAAI,gBAAgB,IAAI,gBAAgB,GAAG,SAAS,CAAC;IACrD,IAAI,YAAY,IAAI,uBAAuB,CAAC;IAC5C,IAAI,oBAAoB,IAAI,oBAAoB,CAAC;IACjD,IAAI,gBAAgB,IAAI,gBAAgB,CAAC;CAC1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeEnvironment.js","sourceRoot":"","sources":["../../src/runtime/RuntimeEnvironment.ts"],"names":[],"mappings":""}
|
|
@@ -1,20 +1,25 @@
|
|
|
1
|
-
import { ConfigurableModule, Presets } from "@proto-kit/common";
|
|
2
|
-
import { NetworkState, RuntimeTransaction } from "@proto-kit/protocol";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { ConfigurableModule, NoConfig, Presets } from "@proto-kit/common";
|
|
2
|
+
import { NetworkState, RuntimeTransaction, RuntimeMethodExecutionData } from "@proto-kit/protocol";
|
|
3
|
+
import { FlexibleProvablePure, Provable, Bool } from "o1js";
|
|
4
|
+
import { OutgoingMessages, OutgoingMessagesRecord } from "../messages/OutgoingMessages";
|
|
5
|
+
import { RuntimeEnvironment } from "./RuntimeEnvironment";
|
|
6
|
+
type EventRecord = Record<string, FlexibleProvablePure<any>>;
|
|
7
|
+
type InferProvable<T extends FlexibleProvablePure<any>> = T extends Provable<infer U> ? U : never;
|
|
8
|
+
export declare class RuntimeEvents<Events extends EventRecord> {
|
|
9
|
+
private readonly events;
|
|
10
|
+
constructor(events: Events);
|
|
11
|
+
emitIf<Key extends keyof Events>(condition: Bool, eventName: Key, event: InferProvable<Events[Key]>): void;
|
|
12
|
+
emit<Key extends keyof Events>(eventName: Key, event: InferProvable<Events[Key]>): void;
|
|
12
13
|
}
|
|
13
14
|
/**
|
|
14
15
|
* Base class for runtime modules providing the necessary utilities.
|
|
15
16
|
*/
|
|
16
|
-
export declare class RuntimeModule<Config> extends ConfigurableModule<Config> {
|
|
17
|
+
export declare class RuntimeModule<Config = NoConfig> extends ConfigurableModule<Config> {
|
|
17
18
|
static presets: Presets<unknown>;
|
|
19
|
+
/**
|
|
20
|
+
* Holds all method names that are callable throw transactions
|
|
21
|
+
*/
|
|
22
|
+
readonly runtimeMethodNames: string[];
|
|
18
23
|
/**
|
|
19
24
|
* This property exists only to typecheck that the RuntimeModule
|
|
20
25
|
* was extended correctly in e.g. a decorator. We need at least
|
|
@@ -22,9 +27,13 @@ export declare class RuntimeModule<Config> extends ConfigurableModule<Config> {
|
|
|
22
27
|
*/
|
|
23
28
|
isRuntimeModule: boolean;
|
|
24
29
|
name?: string;
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
parent?: RuntimeEnvironment;
|
|
31
|
+
events?: RuntimeEvents<any>;
|
|
32
|
+
messages?: OutgoingMessages<OutgoingMessagesRecord>;
|
|
33
|
+
constructor();
|
|
34
|
+
getInputs(): RuntimeMethodExecutionData;
|
|
27
35
|
get transaction(): RuntimeTransaction;
|
|
28
36
|
get network(): NetworkState;
|
|
29
37
|
}
|
|
38
|
+
export {};
|
|
30
39
|
//# sourceMappingURL=RuntimeModule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeModule.d.ts","sourceRoot":"","sources":["../../src/runtime/RuntimeModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"RuntimeModule.d.ts","sourceRoot":"","sources":["../../src/runtime/RuntimeModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EACL,YAAY,EACZ,kBAAkB,EAElB,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5D,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM1D,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7D,KAAK,aAAa,CAAC,CAAC,SAAS,oBAAoB,CAAC,GAAG,CAAC,IACpD,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE1C,qBAAa,aAAa,CAAC,MAAM,SAAS,WAAW;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C,MAAM,CAAC,GAAG,SAAS,MAAM,MAAM,EACpC,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,GAAG,EACd,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAgB5B,IAAI,CAAC,GAAG,SAAS,MAAM,MAAM,EAClC,SAAS,EAAE,GAAG,EACd,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAIpC;AAED;;GAEG;AACH,qBACa,aAAa,CACxB,MAAM,GAAG,QAAQ,CACjB,SAAQ,kBAAkB,CAAC,MAAM,CAAC;IAClC,OAAc,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAM;IAE7C;;OAEG;IACH,SAAgB,kBAAkB,EAAE,MAAM,EAAE,CAAM;IAElD;;;;OAIG;IACI,eAAe,UAAQ;IAEvB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAE5B,MAAM,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAa;IAExC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAa;;IAYhE,SAAS,IAAI,0BAA0B;IAa9C,IAAW,WAAW,IAAI,kBAAkB,CAE3C;IAED,IAAW,OAAO,IAAI,YAAY,CAEjC;CACF"}
|
|
@@ -4,31 +4,67 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
7
10
|
import { ConfigurableModule } from "@proto-kit/common";
|
|
8
11
|
import { container, injectable } from "tsyringe";
|
|
9
|
-
import { RuntimeMethodExecutionContext, } from "
|
|
12
|
+
import { RuntimeMethodExecutionContext, RuntimeMethodExecutionDataStruct, } from "@proto-kit/protocol";
|
|
13
|
+
import { Provable, Bool } from "o1js";
|
|
14
|
+
import { runtimeMethodNamesMetadataKey } from "../method/runtimeMethod";
|
|
10
15
|
const errors = {
|
|
11
16
|
inputDataNotSet: () => new Error("Input data for runtime execution not set"),
|
|
12
17
|
};
|
|
18
|
+
export class RuntimeEvents {
|
|
19
|
+
constructor(events) {
|
|
20
|
+
this.events = events;
|
|
21
|
+
}
|
|
22
|
+
emitIf(condition, eventName, event) {
|
|
23
|
+
if (this.events === undefined) {
|
|
24
|
+
throw new Error("'events' property not defined, make sure to define the event types on your runtimemodule");
|
|
25
|
+
}
|
|
26
|
+
const eventType = this.events[eventName];
|
|
27
|
+
if (typeof eventName !== "string") {
|
|
28
|
+
throw new Error("Only string");
|
|
29
|
+
}
|
|
30
|
+
return container
|
|
31
|
+
.resolve(RuntimeMethodExecutionContext)
|
|
32
|
+
.addEvent(eventType, event, eventName, condition);
|
|
33
|
+
}
|
|
34
|
+
emit(eventName, event) {
|
|
35
|
+
this.emitIf(Bool(true), eventName, event);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
13
38
|
/**
|
|
14
39
|
* Base class for runtime modules providing the necessary utilities.
|
|
15
40
|
*/
|
|
16
|
-
let RuntimeModule = class RuntimeModule extends ConfigurableModule {
|
|
41
|
+
export let RuntimeModule = class RuntimeModule extends ConfigurableModule {
|
|
17
42
|
constructor() {
|
|
18
|
-
super(
|
|
43
|
+
super();
|
|
44
|
+
/**
|
|
45
|
+
* Holds all method names that are callable throw transactions
|
|
46
|
+
*/
|
|
47
|
+
this.runtimeMethodNames = [];
|
|
19
48
|
/**
|
|
20
49
|
* This property exists only to typecheck that the RuntimeModule
|
|
21
50
|
* was extended correctly in e.g. a decorator. We need at least
|
|
22
51
|
* one non-optional property in this class to make the typechecking work.
|
|
23
52
|
*/
|
|
24
53
|
this.isRuntimeModule = true;
|
|
54
|
+
this.events = undefined;
|
|
55
|
+
this.messages = undefined;
|
|
56
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
57
|
+
const methodNames = Reflect.getMetadata(runtimeMethodNamesMetadataKey, this);
|
|
58
|
+
this.runtimeMethodNames = methodNames ?? [];
|
|
25
59
|
}
|
|
26
60
|
getInputs() {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
61
|
+
return Provable.witness(RuntimeMethodExecutionDataStruct, () => {
|
|
62
|
+
const { input } = container.resolve(RuntimeMethodExecutionContext);
|
|
63
|
+
if (input === undefined) {
|
|
64
|
+
throw errors.inputDataNotSet();
|
|
65
|
+
}
|
|
66
|
+
return input;
|
|
67
|
+
});
|
|
32
68
|
}
|
|
33
69
|
get transaction() {
|
|
34
70
|
return this.getInputs().transaction;
|
|
@@ -39,6 +75,7 @@ let RuntimeModule = class RuntimeModule extends ConfigurableModule {
|
|
|
39
75
|
};
|
|
40
76
|
RuntimeModule.presets = {};
|
|
41
77
|
RuntimeModule = __decorate([
|
|
42
|
-
injectable()
|
|
78
|
+
injectable(),
|
|
79
|
+
__metadata("design:paramtypes", [])
|
|
43
80
|
], RuntimeModule);
|
|
44
|
-
|
|
81
|
+
//# sourceMappingURL=RuntimeModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeModule.js","sourceRoot":"","sources":["../../src/runtime/RuntimeModule.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAGL,6BAA6B,EAE7B,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAwB,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAQxE,MAAM,MAAM,GAAG;IACb,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC;CAC7E,CAAC;AAOF,MAAM,OAAO,aAAa;IACxB,YAAoC,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,MAAM,CACX,SAAe,EACf,SAAc,EACd,KAAiC;QAEjC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC7B,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;SACH;QACD,MAAM,SAAS,GAA8B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;SAChC;QACD,OAAO,SAAS;aACb,OAAO,CAAC,6BAA6B,CAAC;aACtC,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAEM,IAAI,CACT,SAAc,EACd,KAAiC;QAEjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;CACF;AAED;;GAEG;AAEI,WAAM,aAAa,GAAnB,MAAM,aAEX,SAAQ,kBAA0B;IAuBlC;QACE,KAAK,EAAE,CAAC;QArBV;;WAEG;QACa,uBAAkB,GAAa,EAAE,CAAC;QAElD;;;;WAIG;QACI,oBAAe,GAAG,IAAI,CAAC;QAMvB,WAAM,GAAwB,SAAS,CAAC;QAExC,aAAQ,GAA8C,SAAS,CAAC;QAIrE,mEAAmE;QACnE,MAAM,WAAW,GAAyB,OAAO,CAAC,WAAW,CAC3D,6BAA6B,EAC7B,IAAI,CACL,CAAC;QACF,IAAI,CAAC,kBAAkB,GAAG,WAAW,IAAI,EAAE,CAAC;IAC9C,CAAC;IAEM,SAAS;QACd,OAAO,QAAQ,CAAC,OAAO,CAAC,gCAAgC,EAAE,GAAG,EAAE;YAC7D,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,OAAO,CACjC,6BAA6B,CAC9B,CAAC;YACF,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;aAChC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC;IACtC,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC;IACvC,CAAC;;AAnDa,qBAAO,GAAqB,EAAE,AAAvB,CAAwB;AAHlC,aAAa;IADzB,UAAU,EAAE;;GACA,aAAa,CAuDzB"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { Field } from "
|
|
2
|
-
|
|
3
|
-
get: (key: Field) => Field[] | undefined;
|
|
4
|
-
set: (key: Field, value: Field[] | undefined) => void;
|
|
5
|
-
}
|
|
1
|
+
import { Field } from "o1js";
|
|
2
|
+
import { SimpleAsyncStateService } from "@proto-kit/protocol";
|
|
6
3
|
/**
|
|
7
|
-
* Naive implementation of
|
|
4
|
+
* Naive implementation of an in-memory variant of the StateService interface
|
|
8
5
|
*/
|
|
9
|
-
export declare class InMemoryStateService implements
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
export declare class InMemoryStateService implements SimpleAsyncStateService {
|
|
7
|
+
/**
|
|
8
|
+
* This mapping container null values if the specific entry has been deleted.
|
|
9
|
+
* This is used by the CachedState service to keep track of deletions
|
|
10
|
+
*/
|
|
11
|
+
values: Record<string, Field[] | null>;
|
|
12
|
+
get(key: Field): Promise<Field[] | undefined>;
|
|
13
|
+
set(key: Field, value: Field[] | undefined): Promise<void>;
|
|
13
14
|
}
|
|
14
15
|
//# sourceMappingURL=InMemoryStateService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryStateService.d.ts","sourceRoot":"","sources":["../../src/state/InMemoryStateService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"InMemoryStateService.d.ts","sourceRoot":"","sources":["../../src/state/InMemoryStateService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;GAEG;AACH,qBAAa,oBAAqB,YAAW,uBAAuB;IAClE;;;OAGG;IACI,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAM;IAEtC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC;IAI7C,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS;CAOxD"}
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Naive implementation of
|
|
2
|
+
* Naive implementation of an in-memory variant of the StateService interface
|
|
3
3
|
*/
|
|
4
4
|
export class InMemoryStateService {
|
|
5
5
|
constructor() {
|
|
6
|
+
/**
|
|
7
|
+
* This mapping container null values if the specific entry has been deleted.
|
|
8
|
+
* This is used by the CachedState service to keep track of deletions
|
|
9
|
+
*/
|
|
6
10
|
this.values = {};
|
|
7
11
|
}
|
|
8
|
-
get(key) {
|
|
9
|
-
return this.values[key.toString()];
|
|
12
|
+
async get(key) {
|
|
13
|
+
return this.values[key.toString()] ?? undefined;
|
|
10
14
|
}
|
|
11
|
-
set(key, value) {
|
|
12
|
-
if (value === undefined
|
|
13
|
-
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
15
|
-
delete this.values[key.toString()];
|
|
15
|
+
async set(key, value) {
|
|
16
|
+
if (value === undefined) {
|
|
17
|
+
this.values[key.toString()] = null;
|
|
16
18
|
}
|
|
17
19
|
else {
|
|
18
20
|
this.values[key.toString()] = value;
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
23
|
}
|
|
24
|
+
//# sourceMappingURL=InMemoryStateService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryStateService.js","sourceRoot":"","sources":["../../src/state/InMemoryStateService.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAAjC;QACE;;;WAGG;QACI,WAAM,GAAmC,EAAE,CAAC;IAarD,CAAC;IAXQ,KAAK,CAAC,GAAG,CAAC,GAAU;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,SAAS,CAAC;IAClD,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,GAAU,EAAE,KAA0B;QACrD,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC;SACpC;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;SACrC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorator.d.ts","sourceRoot":"","sources":["../../src/state/decorator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"decorator.d.ts","sourceRoot":"","sources":["../../src/state/decorator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAgBjE;;;GAGG;AACH,wBAAgB,KAAK,mGAGJ,MAAM,UAmCtB"}
|
package/dist/state/decorator.js
CHANGED
|
@@ -11,12 +11,10 @@ const errors = {
|
|
|
11
11
|
*/
|
|
12
12
|
export function state() {
|
|
13
13
|
return (target, propertyKey) => {
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/init-declarations
|
|
15
14
|
let value;
|
|
16
15
|
Object.defineProperty(target, propertyKey, {
|
|
17
16
|
enumerable: true,
|
|
18
17
|
get: function get() {
|
|
19
|
-
// eslint-disable-next-line max-len
|
|
20
18
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
21
19
|
const self = this;
|
|
22
20
|
if (self.name === undefined) {
|
|
@@ -28,9 +26,8 @@ export function state() {
|
|
|
28
26
|
const path = Path.fromProperty(self.name, propertyKey);
|
|
29
27
|
if (value) {
|
|
30
28
|
value.path = path;
|
|
31
|
-
// eslint-disable-next-line no-warning-comments
|
|
32
29
|
// TODO: why is this complaining about `any`?
|
|
33
|
-
value.
|
|
30
|
+
value.stateServiceProvider = self.runtime.stateServiceProvider;
|
|
34
31
|
}
|
|
35
32
|
return value;
|
|
36
33
|
},
|
|
@@ -40,3 +37,4 @@ export function state() {
|
|
|
40
37
|
});
|
|
41
38
|
};
|
|
42
39
|
}
|
|
40
|
+
//# sourceMappingURL=decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../src/state/decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAS,MAAM,qBAAqB,CAAC;AAIlD,MAAM,MAAM,GAAG;IACb,WAAW,EAAE,CAAC,SAAiB,EAAE,EAAE,CACjC,IAAI,KAAK,CACP,oDAAoD,SAAS;iFACc,CAC5E;IAEH,cAAc,EAAE,CAAC,SAAiB,EAAE,EAAE,CACpC,IAAI,KAAK,CACP,0CAA0C,SAAS;iFACwB,CAC5E;CACJ,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,KAAK;IACnB,OAAO,CACL,MAA2B,EAC3B,WAAmB,EACnB,EAAE;QACF,IAAI,KAAiC,CAAC;QAEtC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;YACzC,UAAU,EAAE,IAAI;YAEhB,GAAG,EAAE,SAAS,GAAG;gBACf,yEAAyE;gBACzE,MAAM,IAAI,GAAG,IAA2B,CAAC;gBAEzC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;oBAC3B,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBACjD;gBAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;oBACjB,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBACpD;gBAED,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACvD,IAAI,KAAK,EAAE;oBACT,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;oBAElB,6CAA6C;oBAE7C,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;iBAChE;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,GAAG,EAAE,CAAC,QAAwB,EAAE,EAAE;gBAChC,KAAK,GAAG,QAAQ,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ModulesConfig } from "@proto-kit/common";
|
|
2
|
+
import { Runtime, RuntimeModulesRecord } from "../runtime/Runtime";
|
|
3
|
+
import { InMemoryStateService } from "../state/InMemoryStateService";
|
|
4
|
+
export declare function createTestingRuntime<Modules extends RuntimeModulesRecord>(modules: Modules, config: ModulesConfig<Modules>): {
|
|
5
|
+
runtime: Runtime<Modules>;
|
|
6
|
+
state: InMemoryStateService;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=TestingRuntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestingRuntime.d.ts","sourceRoot":"","sources":["../../src/testing/TestingRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIlD,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,wBAAgB,oBAAoB,CAAC,OAAO,SAAS,oBAAoB,EACvE,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,GAC7B;IACD,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,KAAK,EAAE,oBAAoB,CAAC;CAC7B,CAgCA"}
|