@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.
Files changed (118) hide show
  1. package/dist/factories/MethodIdFactory.d.ts +9 -0
  2. package/dist/factories/MethodIdFactory.d.ts.map +1 -0
  3. package/dist/factories/MethodIdFactory.js +11 -0
  4. package/dist/factories/MethodIdFactory.js.map +1 -0
  5. package/dist/index.d.ts +5 -7
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +6 -7
  8. package/dist/index.js.map +1 -0
  9. package/dist/messages/OutgoingMessage.d.ts +96 -0
  10. package/dist/messages/OutgoingMessage.d.ts.map +1 -0
  11. package/dist/messages/OutgoingMessage.js +68 -0
  12. package/dist/messages/OutgoingMessage.js.map +1 -0
  13. package/dist/messages/OutgoingMessages.d.ts +215 -0
  14. package/dist/messages/OutgoingMessages.d.ts.map +1 -0
  15. package/dist/messages/OutgoingMessages.js +66 -0
  16. package/dist/messages/OutgoingMessages.js.map +1 -0
  17. package/dist/method/MethodParameterEncoder.d.ts +26 -0
  18. package/dist/method/MethodParameterEncoder.d.ts.map +1 -0
  19. package/dist/method/MethodParameterEncoder.js +169 -0
  20. package/dist/method/MethodParameterEncoder.js.map +1 -0
  21. package/dist/method/runtimeMethod.d.ts +22 -5
  22. package/dist/method/runtimeMethod.d.ts.map +1 -1
  23. package/dist/method/runtimeMethod.js +79 -24
  24. package/dist/method/runtimeMethod.js.map +1 -0
  25. package/dist/module/decorator.js +1 -0
  26. package/dist/module/decorator.js.map +1 -0
  27. package/dist/runtime/MethodIdResolver.d.ts +20 -0
  28. package/dist/runtime/MethodIdResolver.d.ts.map +1 -0
  29. package/dist/runtime/MethodIdResolver.js +91 -0
  30. package/dist/runtime/MethodIdResolver.js.map +1 -0
  31. package/dist/runtime/Runtime.d.ts +22 -28
  32. package/dist/runtime/Runtime.d.ts.map +1 -1
  33. package/dist/runtime/Runtime.js +116 -70
  34. package/dist/runtime/Runtime.js.map +1 -0
  35. package/dist/runtime/RuntimeEnvironment.d.ts +10 -0
  36. package/dist/runtime/RuntimeEnvironment.d.ts.map +1 -0
  37. package/dist/runtime/RuntimeEnvironment.js +2 -0
  38. package/dist/runtime/RuntimeEnvironment.js.map +1 -0
  39. package/dist/runtime/RuntimeModule.d.ts +23 -14
  40. package/dist/runtime/RuntimeModule.d.ts.map +1 -1
  41. package/dist/runtime/RuntimeModule.js +47 -10
  42. package/dist/runtime/RuntimeModule.js.map +1 -0
  43. package/dist/state/InMemoryStateService.d.ts +11 -10
  44. package/dist/state/InMemoryStateService.d.ts.map +1 -1
  45. package/dist/state/InMemoryStateService.js +11 -8
  46. package/dist/state/InMemoryStateService.js.map +1 -0
  47. package/dist/state/decorator.d.ts.map +1 -1
  48. package/dist/state/decorator.js +2 -4
  49. package/dist/state/decorator.js.map +1 -0
  50. package/dist/testing/TestingRuntime.d.ts +8 -0
  51. package/dist/testing/TestingRuntime.d.ts.map +1 -0
  52. package/dist/testing/TestingRuntime.js +31 -0
  53. package/dist/testing/TestingRuntime.js.map +1 -0
  54. package/jest.config.cjs +12 -1
  55. package/package.json +10 -11
  56. package/src/factories/MethodIdFactory.ts +13 -0
  57. package/src/index.ts +5 -7
  58. package/src/messages/OutgoingMessages.ts +122 -0
  59. package/src/method/MethodParameterEncoder.ts +260 -0
  60. package/src/method/runtimeMethod.ts +146 -31
  61. package/src/runtime/MethodIdResolver.ts +108 -0
  62. package/src/runtime/Runtime.ts +191 -112
  63. package/src/runtime/RuntimeEnvironment.ts +16 -0
  64. package/src/runtime/RuntimeModule.ts +77 -27
  65. package/src/state/InMemoryStateService.ts +14 -18
  66. package/test/Runtime.test.ts +69 -36
  67. package/test/TestingRuntime.ts +43 -0
  68. package/test/messages/message.test.ts +42 -0
  69. package/test/method/MethodParameterEncoder.test.ts +121 -0
  70. package/test/method/runtimeMethod-fail.test.ts +50 -0
  71. package/{src/method/decorator.test.ts → test/method/runtimeMethod.test.ts} +3 -3
  72. package/test/modules/Admin.ts +4 -4
  73. package/test/modules/Balances.test.ts +92 -78
  74. package/test/modules/Balances.ts +19 -16
  75. package/test/modules/MethodIdResolver.test.ts +73 -0
  76. package/test/modules/State.test.ts +81 -0
  77. package/test/runtimeMethod.test.ts +192 -20
  78. package/test/tsconfig.json +7 -0
  79. package/tsconfig.json +2 -2
  80. package/dist/chain/Chain.d.ts +0 -109
  81. package/dist/chain/Chain.d.ts.map +0 -1
  82. package/dist/chain/Chain.js +0 -229
  83. package/dist/method/MethodExecutionContext.d.ts +0 -73
  84. package/dist/method/MethodExecutionContext.d.ts.map +0 -1
  85. package/dist/method/MethodExecutionContext.js +0 -112
  86. package/dist/method/MethodParameterDecoder.d.ts +0 -22
  87. package/dist/method/MethodParameterDecoder.d.ts.map +0 -1
  88. package/dist/method/MethodParameterDecoder.js +0 -33
  89. package/dist/method/RuntimeMethodExecutionContext.d.ts +0 -57
  90. package/dist/method/RuntimeMethodExecutionContext.d.ts.map +0 -1
  91. package/dist/method/RuntimeMethodExecutionContext.js +0 -92
  92. package/dist/method/assert.d.ts +0 -12
  93. package/dist/method/assert.d.ts.map +0 -1
  94. package/dist/method/assert.js +0 -23
  95. package/dist/method/decorator.d.ts +0 -45
  96. package/dist/method/decorator.d.ts.map +0 -1
  97. package/dist/method/decorator.js +0 -140
  98. package/dist/state/State.d.ts +0 -65
  99. package/dist/state/State.d.ts.map +0 -1
  100. package/dist/state/State.js +0 -114
  101. package/dist/state/StateMap.d.ts +0 -37
  102. package/dist/state/StateMap.d.ts.map +0 -1
  103. package/dist/state/StateMap.js +0 -56
  104. package/dist/state/StateServiceProvider.d.ts +0 -10
  105. package/dist/state/StateServiceProvider.d.ts.map +0 -1
  106. package/dist/state/StateServiceProvider.js +0 -34
  107. package/src/method/MethodParameterDecoder.ts +0 -68
  108. package/src/method/RuntimeMethodExecutionContext.ts +0 -111
  109. package/src/method/assert.test.ts +0 -49
  110. package/src/method/assert.ts +0 -27
  111. package/src/state/State.ts +0 -154
  112. package/src/state/StateMap.ts +0 -69
  113. package/src/state/StateServiceProvider.ts +0 -24
  114. package/src/state/decorator.ts +0 -65
  115. package/test/state/MerkleTree.test.ts +0 -95
  116. package/test/state/MockAsyncMerkleStore.ts +0 -28
  117. package/test/transaction.test.ts +0 -82
  118. package/tsconfig.test.json +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"Runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/Runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAc,MAAM,UAAU,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,EACb,aAAa,EACb,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CACnC,CAAC;AAOF;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,oBAAoB;IACrE,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,qBAAa,qBAAqB,CAChC,OAAO,SAAS,oBAAoB,CACpC,SAAQ,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC;IAE3B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;gBAAzB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAInD,IAAW,QAAQ,iCAElB;IAEM,gBAAgB,IAAI,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC;CAgHzE;AAED;;;GAGG;AACH,qBACa,OAAO,CAAC,OAAO,SAAS,oBAAoB,CACvD,SAAQ,eAAe,CAAC,OAAO,CAC/B,YAAW,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,CAAC;WAE9C,IAAI,CAAC,OAAO,SAAS,oBAAoB,EACrD,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC;IAMjC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;IAEpD,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAEvC,cAAc,EAAE,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAIrE,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAE3C;IAEF;;;;OAIG;gBACgB,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC;IASzD,IAAW,QAAQ,IAAI,gBAAgB,GAAG,SAAS,CAElD;IAED,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,IAAW,oBAAoB,IAAI,oBAAoB,CAEtD;IAED;;OAEG;IACH,IAAW,mBAAmB,IAAI,mBAAmB,CAEpD;IAED;;;OAGG;IACI,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO;IAiBhE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IASvD,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAQlE;;;;;OAKG;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;CACF"}
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"}
@@ -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
- // eslint-disable-next-line max-len
12
- /* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-assignment */
13
- import { Experimental } from "snarkyjs";
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 { fieldToString, stringToField, MethodPublicOutput, } from "@proto-kit/protocol";
17
- import { combineMethodName, isRuntimeMethod, toWrappedMethod, } from "../method/runtimeMethod.js";
18
- import { StateServiceProvider } from "../state/StateServiceProvider";
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 appChain() {
29
- return this.runtime.appChain;
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 max-len
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.modules, runtimeModuleName);
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 = Object.getOwnPropertyNames(modulePrototype);
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 wrappedMethod = Reflect.apply(toWrappedMethod, runtimeModule, [methodName, method]);
56
- // eslint-disable-next-line no-warning-comments
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
- // eslint-disable-next-line @typescript-eslint/require-array-sort-compare
76
- Object.entries(runtimeMethods).sort());
77
- const program = Experimental.ZkProgram({
78
- publicOutput: MethodPublicOutput,
79
- methods: sortedRuntimeMethods,
80
- });
81
- const SelfProof = Experimental.ZkProgram.Proof(program);
82
- const methods = Object.keys(sortedRuntimeMethods).reduce((boundMethods, methodName) => {
83
- boundMethods[methodName] = program[methodName].bind(program);
84
- return boundMethods;
85
- }, {});
86
- return {
87
- compile: program.compile.bind(program),
88
- verify: program.verify.bind(program),
89
- Proof: SelfProof,
90
- methods,
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 new Runtime_1(definition);
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
- get appChain() {
119
- return this.container.resolve("AppChain");
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 stateService() {
122
- return this.stateServiceProviderInstance.stateService;
161
+ get areProofsEnabled() {
162
+ return this.container.resolve("AreProofsEnabled");
123
163
  }
124
164
  get stateServiceProvider() {
125
- return this.stateServiceProviderInstance;
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 [moduleName, methodName] = this.getMethodNameFromId(methodId);
139
- this.isValidModuleName(this.definition.modules, moduleName);
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 max-len
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 name - Name of the runtime module to decorate
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.runtime = this;
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 Object.keys(this.definition.modules);
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
- export { Runtime };
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RuntimeEnvironment.js.map
@@ -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 { StateService } from "../state/InMemoryStateService";
4
- import type { Runtime, RuntimeDefinition, RuntimeModulesRecord } from "./Runtime";
5
- /**
6
- * This type exists to carry over certain runtime properties
7
- * to runtime modules, until we can inject them through DI.
8
- */
9
- export interface PartialRuntime extends Pick<Runtime<RuntimeModulesRecord>, "zkProgrammable"> {
10
- definition: Pick<RuntimeDefinition<RuntimeModulesRecord>, "state">;
11
- get stateService(): StateService;
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
- runtime?: Runtime<RuntimeModulesRecord>;
26
- private getInputs;
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;AAEhE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAMvE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,OAAO,KAAK,EACV,OAAO,EACP,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,WAAW,CAAC;AAMnB;;;GAGG;AACH,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,CAAC;IAC7D,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAC;IAEnE,IAAI,YAAY,IAAI,YAAY,CAAC;CAClC;AAED;;GAEG;AACH,qBACa,aAAa,CAAC,MAAM,CAAE,SAAQ,kBAAkB,CAAC,MAAM,CAAC;IACnE,OAAc,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAM;IAE7C;;;;OAIG;IACI,eAAe,UAAQ;IAEvB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE/C,OAAO,CAAC,SAAS;IAWjB,IAAW,WAAW,IAAI,kBAAkB,CAE3C;IAED,IAAW,OAAO,IAAI,YAAY,CAEjC;CACF"}
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 "../method/RuntimeMethodExecutionContext";
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(...arguments);
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
- const { input } = container.resolve(RuntimeMethodExecutionContext);
28
- if (input === undefined) {
29
- throw errors.inputDataNotSet();
30
- }
31
- return input;
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
- export { RuntimeModule };
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 "snarkyjs";
2
- export interface StateService {
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 a StateService for testing purposes
4
+ * Naive implementation of an in-memory variant of the StateService interface
8
5
  */
9
- export declare class InMemoryStateService implements StateService {
10
- values: Record<string, Field[] | undefined>;
11
- get(key: Field): Field[] | undefined;
12
- set(key: Field, value: Field[] | undefined): void;
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,UAAU,CAAC;AAEjC,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,EAAE,GAAG,SAAS,CAAC;IACzC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,KAAK,IAAI,CAAC;CACvD;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IAChD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,CAAM;IAEjD,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,SAAS;IAIpC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS;CAWlD"}
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 a StateService for testing purposes
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
- Object.prototype.hasOwnProperty.call(this.values, key.toString())) {
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;AAkBjE;;;GAGG;AACH,wBAAgB,KAAK,mGAGJ,MAAM,UAqCtB"}
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"}
@@ -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.runtime = self.runtime;
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"}