@openzeppelin/upgrades-core 1.29.0 → 1.30.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 (161) hide show
  1. package/dist/call-optional-signature.d.ts +3 -0
  2. package/dist/call-optional-signature.d.ts.map +1 -0
  3. package/dist/call-optional-signature.js +24 -0
  4. package/dist/call-optional-signature.js.map +1 -0
  5. package/dist/cli/validate/build-info-file.d.ts +4 -0
  6. package/dist/cli/validate/build-info-file.d.ts.map +1 -1
  7. package/dist/cli/validate/build-info-file.js +5 -2
  8. package/dist/cli/validate/build-info-file.js.map +1 -1
  9. package/dist/cli/validate/build-info-file.test.js +4 -1
  10. package/dist/cli/validate/build-info-file.test.js.map +1 -1
  11. package/dist/cli/validate/upgradeability-assessment.js +2 -6
  12. package/dist/cli/validate/upgradeability-assessment.js.map +1 -1
  13. package/dist/cli/validate/validations.d.ts.map +1 -1
  14. package/dist/cli/validate/validations.js +5 -4
  15. package/dist/cli/validate/validations.js.map +1 -1
  16. package/dist/impl-address.d.ts.map +1 -1
  17. package/dist/impl-address.js +9 -16
  18. package/dist/impl-address.js.map +1 -1
  19. package/dist/index.d.ts +3 -0
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +7 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/levenshtein.d.ts +6 -0
  24. package/dist/levenshtein.d.ts.map +1 -1
  25. package/dist/levenshtein.js.map +1 -1
  26. package/dist/solc-api.d.ts +14 -0
  27. package/dist/solc-api.d.ts.map +1 -1
  28. package/dist/standalone.d.ts +4 -1
  29. package/dist/standalone.d.ts.map +1 -1
  30. package/dist/standalone.js +6 -3
  31. package/dist/standalone.js.map +1 -1
  32. package/dist/standalone.test.js +17 -0
  33. package/dist/standalone.test.js.map +1 -1
  34. package/dist/storage/compare.d.ts +2 -1
  35. package/dist/storage/compare.d.ts.map +1 -1
  36. package/dist/storage/compare.js +25 -2
  37. package/dist/storage/compare.js.map +1 -1
  38. package/dist/storage/extract.d.ts +15 -3
  39. package/dist/storage/extract.d.ts.map +1 -1
  40. package/dist/storage/extract.js +48 -21
  41. package/dist/storage/extract.js.map +1 -1
  42. package/dist/storage/index.d.ts.map +1 -1
  43. package/dist/storage/index.js +15 -1
  44. package/dist/storage/index.js.map +1 -1
  45. package/dist/storage/layout.d.ts +1 -0
  46. package/dist/storage/layout.d.ts.map +1 -1
  47. package/dist/storage/layout.js.map +1 -1
  48. package/dist/storage/namespace.d.ts +35 -0
  49. package/dist/storage/namespace.d.ts.map +1 -0
  50. package/dist/storage/namespace.js +219 -0
  51. package/dist/storage/namespace.js.map +1 -0
  52. package/dist/storage/report.js +6 -0
  53. package/dist/storage/report.js.map +1 -1
  54. package/dist/storage-namespaced-conflicts-layout.test.d.ts +2 -0
  55. package/dist/storage-namespaced-conflicts-layout.test.d.ts.map +1 -0
  56. package/dist/storage-namespaced-conflicts-layout.test.js +69 -0
  57. package/dist/storage-namespaced-conflicts-layout.test.js.map +1 -0
  58. package/dist/storage-namespaced-conflicts.test.d.ts +2 -0
  59. package/dist/storage-namespaced-conflicts.test.d.ts.map +1 -0
  60. package/dist/storage-namespaced-conflicts.test.js +45 -0
  61. package/dist/storage-namespaced-conflicts.test.js.map +1 -0
  62. package/dist/storage-namespaced-layout.test.d.ts +2 -0
  63. package/dist/storage-namespaced-layout.test.d.ts.map +1 -0
  64. package/dist/storage-namespaced-layout.test.js +59 -0
  65. package/dist/storage-namespaced-layout.test.js.map +1 -0
  66. package/dist/storage-namespaced-outside-contract.test.d.ts +2 -0
  67. package/dist/storage-namespaced-outside-contract.test.d.ts.map +1 -0
  68. package/dist/storage-namespaced-outside-contract.test.js +22 -0
  69. package/dist/storage-namespaced-outside-contract.test.js.map +1 -0
  70. package/dist/storage-namespaced-solc-versions.test.d.ts +2 -0
  71. package/dist/storage-namespaced-solc-versions.test.d.ts.map +1 -0
  72. package/dist/storage-namespaced-solc-versions.test.js +42 -0
  73. package/dist/storage-namespaced-solc-versions.test.js.map +1 -0
  74. package/dist/storage-namespaced-udvt.test.d.ts +2 -0
  75. package/dist/storage-namespaced-udvt.test.d.ts.map +1 -0
  76. package/dist/storage-namespaced-udvt.test.js +130 -0
  77. package/dist/storage-namespaced-udvt.test.js.map +1 -0
  78. package/dist/storage-namespaced.test.d.ts +2 -0
  79. package/dist/storage-namespaced.test.d.ts.map +1 -0
  80. package/dist/storage-namespaced.test.js +132 -0
  81. package/dist/storage-namespaced.test.js.map +1 -0
  82. package/dist/upgrade-interface-version.d.ts +3 -0
  83. package/dist/upgrade-interface-version.d.ts.map +1 -0
  84. package/dist/upgrade-interface-version.js +25 -0
  85. package/dist/upgrade-interface-version.js.map +1 -0
  86. package/dist/upgrade-interface-version.test.d.ts +2 -0
  87. package/dist/upgrade-interface-version.test.d.ts.map +1 -0
  88. package/dist/upgrade-interface-version.test.js +32 -0
  89. package/dist/upgrade-interface-version.test.js.map +1 -0
  90. package/dist/utils/annotations.d.ts +4 -0
  91. package/dist/utils/annotations.d.ts.map +1 -1
  92. package/dist/utils/annotations.js +9 -1
  93. package/dist/utils/annotations.js.map +1 -1
  94. package/dist/utils/make-namespaced.d.ts +20 -0
  95. package/dist/utils/make-namespaced.d.ts.map +1 -0
  96. package/dist/utils/make-namespaced.js +131 -0
  97. package/dist/utils/make-namespaced.js.map +1 -0
  98. package/dist/utils/make-namespaced.test.d.ts +2 -0
  99. package/dist/utils/make-namespaced.test.d.ts.map +1 -0
  100. package/dist/utils/make-namespaced.test.js +59 -0
  101. package/dist/utils/make-namespaced.test.js.map +1 -0
  102. package/dist/utils/stabilize-layout.d.ts +11 -0
  103. package/dist/utils/stabilize-layout.d.ts.map +1 -1
  104. package/dist/utils/stabilize-layout.js +5 -0
  105. package/dist/utils/stabilize-layout.js.map +1 -1
  106. package/dist/validate/query.d.ts.map +1 -1
  107. package/dist/validate/query.js +4 -2
  108. package/dist/validate/query.js.map +1 -1
  109. package/dist/validate/run.d.ts +18 -2
  110. package/dist/validate/run.d.ts.map +1 -1
  111. package/dist/validate/run.js +80 -2
  112. package/dist/validate/run.js.map +1 -1
  113. package/package.json +3 -3
  114. package/src/call-optional-signature.ts +20 -0
  115. package/src/cli/validate/build-info-file.test.ts +4 -1
  116. package/src/cli/validate/build-info-file.ts +12 -2
  117. package/src/cli/validate/upgradeability-assessment.ts +1 -6
  118. package/src/cli/validate/validations.ts +6 -5
  119. package/src/impl-address.ts +9 -20
  120. package/src/index.ts +4 -0
  121. package/src/levenshtein.ts +7 -0
  122. package/src/solc-api.ts +14 -0
  123. package/src/standalone.test.ts +26 -0
  124. package/src/standalone.ts +6 -2
  125. package/src/storage/compare.ts +34 -2
  126. package/src/storage/extract.ts +68 -20
  127. package/src/storage/index.ts +22 -1
  128. package/src/storage/layout.ts +1 -0
  129. package/src/storage/namespace.ts +267 -0
  130. package/src/storage/report.ts +8 -0
  131. package/src/storage-0.8.test.ts.md +4 -0
  132. package/src/storage-0.8.test.ts.snap +0 -0
  133. package/src/storage-memory-0.5.test.ts.md +2 -0
  134. package/src/storage-memory-0.5.test.ts.snap +0 -0
  135. package/src/storage-namespaced-conflicts-layout.test.ts +96 -0
  136. package/src/storage-namespaced-conflicts-layout.test.ts.md +53 -0
  137. package/src/storage-namespaced-conflicts-layout.test.ts.snap +0 -0
  138. package/src/storage-namespaced-conflicts.test.ts +54 -0
  139. package/src/storage-namespaced-conflicts.test.ts.md +53 -0
  140. package/src/storage-namespaced-conflicts.test.ts.snap +0 -0
  141. package/src/storage-namespaced-layout.test.ts +77 -0
  142. package/src/storage-namespaced-layout.test.ts.md +67 -0
  143. package/src/storage-namespaced-layout.test.ts.snap +0 -0
  144. package/src/storage-namespaced-outside-contract.test.ts +24 -0
  145. package/src/storage-namespaced-solc-versions.test.ts +59 -0
  146. package/src/storage-namespaced-udvt.test.ts +160 -0
  147. package/src/storage-namespaced.test.ts +146 -0
  148. package/src/storage-namespaced.test.ts.md +89 -0
  149. package/src/storage-namespaced.test.ts.snap +0 -0
  150. package/src/storage.test.ts.md +2 -0
  151. package/src/storage.test.ts.snap +0 -0
  152. package/src/upgrade-interface-version.test.ts +37 -0
  153. package/src/upgrade-interface-version.ts +27 -0
  154. package/src/utils/annotations.ts +8 -0
  155. package/src/utils/make-namespaced.test.ts +74 -0
  156. package/src/utils/make-namespaced.test.ts.md +154 -0
  157. package/src/utils/make-namespaced.test.ts.snap +0 -0
  158. package/src/utils/make-namespaced.ts +154 -0
  159. package/src/utils/stabilize-layout.ts +5 -0
  160. package/src/validate/query.ts +4 -2
  161. package/src/validate/run.ts +108 -2
@@ -1 +1 @@
1
- {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/storage/compare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/storage/compare.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,19 @@
1
- import { ContractDefinition } from 'solidity-ast';
1
+ import { ContractDefinition, StructDefinition, EnumDefinition, VariableDeclaration, TypeName } from 'solidity-ast';
2
2
  import { ASTDereferencer } from 'solidity-ast/utils';
3
- import { StorageLayout } from './layout';
3
+ import { StorageLayout, StructMember, EnumMember } from './layout';
4
4
  import { SrcDecoder } from '../src-decoder';
5
5
  export declare function isCurrentLayoutVersion(layout: StorageLayout): boolean;
6
- export declare function extractStorageLayout(contractDef: ContractDefinition, decodeSrc: SrcDecoder, deref: ASTDereferencer, storageLayout?: StorageLayout | undefined): StorageLayout;
6
+ export interface CompilationContext {
7
+ deref: ASTDereferencer;
8
+ contractDef: ContractDefinition;
9
+ storageLayout?: StorageLayout;
10
+ }
11
+ export declare function extractStorageLayout(contractDef: ContractDefinition, decodeSrc: SrcDecoder, deref: ASTDereferencer, storageLayout?: StorageLayout, namespacedContext?: CompilationContext): StorageLayout;
12
+ type GotTypeMembers<D extends EnumDefinition | StructDefinition, F extends 'src' | 'typeName'> = D extends EnumDefinition ? EnumMember[] : (StructMember & Pick<VariableDeclaration, F>)[];
13
+ export declare function getTypeMembers<D extends EnumDefinition | StructDefinition>(typeDef: D): GotTypeMembers<D, never>;
14
+ export declare function getTypeMembers<D extends EnumDefinition | StructDefinition, F extends 'src' | 'typeName'>(typeDef: D, includeFields: {
15
+ [f in F]: true;
16
+ }): GotTypeMembers<D, F>;
17
+ export declare function loadLayoutType(typeName: TypeName | null | undefined, layout: StorageLayout, deref: ASTDereferencer): void;
18
+ export {};
7
19
  //# sourceMappingURL=extract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/storage/extract.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAKnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAuB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAO5C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAErE;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,kBAAkB,EAC/B,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,eAAe,EACtB,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,GACxC,aAAa,CA8Cf"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/storage/extract.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EAEd,mBAAmB,EACnB,QAAQ,EACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAuB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,YAAY,EAA6B,UAAU,EAAE,MAAM,UAAU,CAAC;AAE9F,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQ5C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAErE;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,eAAe,CAAC;IACvB,WAAW,EAAE,kBAAkB,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,kBAAkB,EAC/B,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,eAAe,EACtB,aAAa,CAAC,EAAE,aAAa,EAC7B,iBAAiB,CAAC,EAAE,kBAAkB,GACrC,aAAa,CAiEf;AAqBD,KAAK,cAAc,CACjB,CAAC,SAAS,cAAc,GAAG,gBAAgB,EAC3C,CAAC,SAAS,KAAK,GAAG,UAAU,IAC1B,CAAC,SAAS,cAAc,GAAG,UAAU,EAAE,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAE9F,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,gBAAgB,EAAE,OAAO,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAClH,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,gBAAgB,EAAE,CAAC,SAAS,KAAK,GAAG,UAAU,EACtG,OAAO,EAAE,CAAC,EACV,aAAa,EAAE;KAAG,CAAC,IAAI,CAAC,GAAG,IAAI;CAAE,GAChC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAmCxB,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,QAkClH"}
@@ -3,35 +3,51 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.extractStorageLayout = exports.isCurrentLayoutVersion = void 0;
7
- const assert_1 = __importDefault(require("assert"));
6
+ exports.loadLayoutType = exports.getTypeMembers = exports.extractStorageLayout = exports.isCurrentLayoutVersion = void 0;
7
+ const strict_1 = __importDefault(require("assert/strict"));
8
8
  const utils_1 = require("solidity-ast/utils");
9
+ const layout_1 = require("./layout");
9
10
  const type_id_1 = require("../utils/type-id");
10
11
  const map_values_1 = require("../utils/map-values");
11
12
  const pick_1 = require("../utils/pick");
12
13
  const execall_1 = require("../utils/execall");
14
+ const namespace_1 = require("./namespace");
13
15
  const currentLayoutVersion = '1.2';
14
16
  function isCurrentLayoutVersion(layout) {
15
17
  return layout?.layoutVersion === currentLayoutVersion;
16
18
  }
17
19
  exports.isCurrentLayoutVersion = isCurrentLayoutVersion;
18
- function extractStorageLayout(contractDef, decodeSrc, deref, storageLayout) {
20
+ function extractStorageLayout(contractDef, decodeSrc, deref, storageLayout, namespacedContext) {
19
21
  const layout = { storage: [], types: {}, layoutVersion: currentLayoutVersion, flat: false };
22
+ // The namespaced context will contain the types of namespaces that may not be included
23
+ // in the original storage layout.
24
+ // Some types will be present in both and they must be exactly equivalent.
25
+ // If they are not, it fails an assertion because this may be a clash between different types.
26
+ const combinedTypes = { ...namespacedContext?.storageLayout?.types, ...storageLayout?.types };
27
+ if (namespacedContext?.storageLayout?.types) {
28
+ for (const t in storageLayout?.types) {
29
+ if (t in namespacedContext.storageLayout.types) {
30
+ strict_1.default.deepEqual(namespacedContext.storageLayout.types[t], storageLayout?.types[t]);
31
+ }
32
+ }
33
+ }
34
+ layout.types = (0, map_values_1.mapValues)(combinedTypes, m => {
35
+ return {
36
+ label: m.label,
37
+ members: m.members && (0, layout_1.isStructMembers)(m.members)
38
+ ? m.members.map(m => (0, pick_1.pick)(m, ['label', 'type', 'offset', 'slot']))
39
+ : m.members,
40
+ numberOfBytes: m.numberOfBytes,
41
+ };
42
+ });
20
43
  if (storageLayout !== undefined) {
21
- layout.types = (0, map_values_1.mapValues)(storageLayout.types, m => {
22
- return {
23
- label: m.label,
24
- members: m.members?.map(m => typeof m === 'string' ? m : (0, pick_1.pick)(m, ['label', 'type', 'offset', 'slot'])),
25
- numberOfBytes: m.numberOfBytes,
26
- };
27
- });
28
44
  for (const storage of storageLayout.storage) {
29
45
  const origin = getOriginContract(contractDef, storage.astId, deref);
30
- (0, assert_1.default)(origin, `Did not find variable declaration node for '${storage.label}'`);
46
+ (0, strict_1.default)(origin, `Did not find variable declaration node for '${storage.label}'`);
31
47
  const { varDecl, contract } = origin;
32
48
  const { renamedFrom, retypedFrom } = getRetypedRenamed(varDecl);
33
49
  // Solc layout doesn't bring members for enums so we get them using the ast method
34
- loadLayoutType(varDecl, layout, deref);
50
+ loadLayoutType(varDecl.typeName, layout, deref);
35
51
  const { label, offset, slot, type } = storage;
36
52
  const src = decodeSrc(varDecl);
37
53
  layout.storage.push({ label, offset, slot, type, contract, src, retypedFrom, renamedFrom });
@@ -52,11 +68,13 @@ function extractStorageLayout(contractDef, decodeSrc, deref, storageLayout) {
52
68
  retypedFrom,
53
69
  renamedFrom,
54
70
  });
55
- loadLayoutType(varDecl, layout, deref);
71
+ loadLayoutType(varDecl.typeName, layout, deref);
56
72
  }
57
73
  }
58
74
  }
59
75
  }
76
+ const origContext = { deref, contractDef, storageLayout };
77
+ (0, namespace_1.loadNamespaces)(decodeSrc, layout, origContext, namespacedContext);
60
78
  return layout;
61
79
  }
62
80
  exports.extractStorageLayout = extractStorageLayout;
@@ -68,24 +86,32 @@ const findTypeNames = (0, utils_1.findAll)([
68
86
  'UserDefinedTypeName',
69
87
  ]);
70
88
  function typeDescriptions(x) {
71
- (0, assert_1.default)(typeof x.typeDescriptions.typeIdentifier === 'string');
72
- (0, assert_1.default)(typeof x.typeDescriptions.typeString === 'string');
89
+ (0, strict_1.default)(typeof x.typeDescriptions.typeIdentifier === 'string');
90
+ (0, strict_1.default)(typeof x.typeDescriptions.typeString === 'string');
73
91
  return x.typeDescriptions;
74
92
  }
75
- function getTypeMembers(typeDef) {
93
+ function getTypeMembers(typeDef, includeFields = {}) {
76
94
  if (typeDef.nodeType === 'StructDefinition') {
77
95
  return typeDef.members.map(m => {
78
- (0, assert_1.default)(typeof m.typeDescriptions.typeIdentifier === 'string');
79
- return {
96
+ (0, strict_1.default)(typeof m.typeDescriptions.typeIdentifier === 'string');
97
+ const member = {
80
98
  label: m.name,
81
99
  type: (0, type_id_1.normalizeTypeIdentifier)(m.typeDescriptions.typeIdentifier),
82
100
  };
101
+ if (includeFields.src && m.src) {
102
+ member.src = m.src;
103
+ }
104
+ if (includeFields.typeName && m.typeName) {
105
+ member.typeName = m.typeName;
106
+ }
107
+ return member;
83
108
  });
84
109
  }
85
110
  else {
86
111
  return typeDef.members.map(m => m.name);
87
112
  }
88
113
  }
114
+ exports.getTypeMembers = getTypeMembers;
89
115
  function getOriginContract(contract, astId, deref) {
90
116
  for (const id of contract.linearizedBaseContracts) {
91
117
  const parentContract = deref(['ContractDefinition'], id);
@@ -95,15 +121,15 @@ function getOriginContract(contract, astId, deref) {
95
121
  }
96
122
  }
97
123
  }
98
- function loadLayoutType(varDecl, layout, deref) {
124
+ function loadLayoutType(typeName, layout, deref) {
99
125
  var _a, _b;
100
126
  // Note: A UserDefinedTypeName can also refer to a ContractDefinition but we won't care about those.
101
127
  const derefUserDefinedType = deref(['StructDefinition', 'EnumDefinition', 'UserDefinedValueTypeDefinition']);
102
- (0, assert_1.default)(varDecl.typeName != null);
128
+ (0, strict_1.default)(typeName != null);
103
129
  // We will recursively look for all types involved in this variable declaration in order to store their type
104
130
  // information. We iterate over a Map that is indexed by typeIdentifier to ensure we visit each type only once.
105
131
  // Note that there can be recursive types.
106
- const typeNames = new Map([...findTypeNames(varDecl.typeName)].map(n => [typeDescriptions(n).typeIdentifier, n]));
132
+ const typeNames = new Map([...findTypeNames(typeName)].map(n => [typeDescriptions(n).typeIdentifier, n]));
107
133
  for (const typeName of typeNames.values()) {
108
134
  const { typeIdentifier, typeString: label } = typeDescriptions(typeName);
109
135
  const type = (0, type_id_1.normalizeTypeIdentifier)(typeIdentifier);
@@ -126,6 +152,7 @@ function loadLayoutType(varDecl, layout, deref) {
126
152
  }
127
153
  }
128
154
  }
155
+ exports.loadLayoutType = loadLayoutType;
129
156
  function getRetypedRenamed(varDecl) {
130
157
  let retypedFrom, renamedFrom;
131
158
  if ('documentation' in varDecl) {
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/storage/extract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/storage/extract.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAEzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAqB,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAA0B,MAAM,uBAAuB,CAAC;AAGlF,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,aAAa,EACtB,sBAAsB,EAAE,OAAO,GAC9B,IAAI,CAAC;AAER,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAChC,IAAI,CAAC;AAmBR,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAChC,yBAAyB,CAgB3B;AAED,qBAAa,oBAAqB,SAAQ,aAAa;IACzC,QAAQ,CAAC,MAAM,EAAE,yBAAyB;gBAAjC,MAAM,EAAE,yBAAyB;CAGvD;AAGD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,aAAa,EACtB,IAAI,GAAE,iBAAsB,GAC3B,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAWjC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAEzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAqB,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAA0B,MAAM,uBAAuB,CAAC;AAGlF,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,aAAa,EACtB,sBAAsB,EAAE,OAAO,GAC9B,IAAI,CAAC;AAER,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAChC,IAAI,CAAC;AAmBR,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAChC,yBAAyB,CAwB3B;AAeD,qBAAa,oBAAqB,SAAQ,aAAa;IACzC,QAAQ,CAAC,MAAM,EAAE,yBAAyB;gBAAjC,MAAM,EAAE,yBAAyB;CAGvD;AAGD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,aAAa,EACtB,IAAI,GAAE,iBAAsB,GAC3B,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAWjC"}
@@ -35,8 +35,10 @@ exports.assertStorageUpgradeSafe = assertStorageUpgradeSafe;
35
35
  function getStorageUpgradeReport(original, updated, opts) {
36
36
  const originalDetailed = (0, layout_1.getDetailedLayout)(original);
37
37
  const updatedDetailed = (0, layout_1.getDetailedLayout)(updated);
38
+ const originalDetailedNamespaces = getDetailedNamespacedLayout(original);
39
+ const updatedDetailedNamespaces = getDetailedNamespacedLayout(updated);
38
40
  const comparator = new compare_1.StorageLayoutComparator(opts.unsafeAllowCustomTypes, opts.unsafeAllowRenames);
39
- const report = comparator.compareLayouts(originalDetailed, updatedDetailed);
41
+ const report = comparator.compareLayouts(originalDetailed, updatedDetailed, originalDetailedNamespaces, updatedDetailedNamespaces);
40
42
  if (comparator.hasAllowedUncheckedCustomTypes) {
41
43
  (0, log_1.logWarning)(`Potentially unsafe deployment`, [
42
44
  `You are using \`unsafeAllowCustomTypes\` to force approve structs or enums with missing data.`,
@@ -49,6 +51,18 @@ function getStorageUpgradeReport(original, updated, opts) {
49
51
  return report;
50
52
  }
51
53
  exports.getStorageUpgradeReport = getStorageUpgradeReport;
54
+ function getDetailedNamespacedLayout(layout) {
55
+ const detailedNamespaces = {};
56
+ if (layout.namespaces !== undefined) {
57
+ for (const [storageLocation, namespacedLayout] of Object.entries(layout.namespaces)) {
58
+ detailedNamespaces[storageLocation] = (0, layout_1.getDetailedLayout)({
59
+ storage: namespacedLayout,
60
+ types: layout.types,
61
+ });
62
+ }
63
+ }
64
+ return detailedNamespaces;
65
+ }
52
66
  class StorageUpgradeErrors extends error_1.UpgradesError {
53
67
  constructor(report) {
54
68
  super(`New storage layout is incompatible`, () => report.explain());
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAyB;AAEzB,oCAAyC;AACzC,qCAA4D;AAC5D,uCAAmF;AAEnF,qDAAkF;AAClF,sCAAmD;AAcnD,SAAgB,wBAAwB,CACtC,QAAuB,EACvB,OAAsB,EACtB,OAA8C,KAAK;IAEnD,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE;QAC7B,MAAM,sBAAsB,GAAG,IAAI,CAAC;QACpC,IAAI,GAAG,IAAA,kCAAsB,EAAC,EAAE,sBAAsB,EAAE,CAAC,CAAC;KAC3D;IAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAEhE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAChB,MAAM,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;KACxC;AACH,CAAC;AAfD,4DAeC;AAED,SAAgB,uBAAuB,CACrC,QAAuB,EACvB,OAAsB,EACtB,IAAiC;IAEjC,MAAM,gBAAgB,GAAG,IAAA,0BAAiB,EAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,iCAAuB,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACrG,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAE5E,IAAI,UAAU,CAAC,8BAA8B,EAAE;QAC7C,IAAA,gBAAU,EAAC,+BAA+B,EAAE;YAC1C,+FAA+F;YAC/F,+EAA+E;SAChF,CAAC,CAAC;KACJ;SAAM,IAAI,IAAI,CAAC,sBAAsB,EAAE;QACtC,IAAA,aAAO,EAAC,mGAAmG,CAAC,CAAC;KAC9G;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AApBD,0DAoBC;AAED,MAAa,oBAAqB,SAAQ,qBAAa;IACrD,YAAqB,MAAiC;QACpD,KAAK,CAAC,oCAAoC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QADjD,WAAM,GAAN,MAAM,CAA2B;IAEtD,CAAC;CACF;AAJD,oDAIC;AAED,gEAAgE;AAChE,SAAgB,uBAAuB,CACrC,QAAuB,EACvB,OAAsB,EACtB,OAA0B,EAAE;IAE5B,IAAI;QACF,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAA,kCAAsB,EAAC,IAAI,CAAC,CAAC,CAAC;KAC3E;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,YAAY,oBAAoB,EAAE;YACrC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACrB;aAAM;YACL,MAAM,CAAC,CAAC;SACT;KACF;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAfD,0DAeC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export interface StorageLayout {
5
5
  storage: StorageItem[];
6
6
  types: Record<string, TypeItem>;
7
7
  flat?: boolean;
8
+ namespaces?: Record<string, StorageItem[]>;
8
9
  }
9
10
  export type StorageField<Type = string> = StorageItem<Type> | StructMember<Type>;
10
11
  export interface StorageItem<Type = string> {
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/storage/layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAOnE,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,YAAY,CAAC,IAAI,GAAG,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAEjF,MAAM,WAAW,WAAW,CAAC,IAAI,GAAG,MAAM;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ,CAAC,IAAI,GAAG,MAAM;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,CAAC,IAAI,GAAG,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;AAEjF,MAAM,WAAW,YAAY,CAAC,IAAI,GAAG,MAAM;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAyC1F;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,EAAE,CAErF;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAE5F;AAED,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC,kBAAkB,CAAC,GACnE,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAA;KAAE,CAAA;CAAE,CAAC;AAElH,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC,GAAG,KAAK,IAAI,sBAAsB,CAElG"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/storage/layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAOnE,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;CAC5C;AAED,MAAM,MAAM,YAAY,CAAC,IAAI,GAAG,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAEjF,MAAM,WAAW,WAAW,CAAC,IAAI,GAAG,MAAM;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ,CAAC,IAAI,GAAG,MAAM;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,CAAC,IAAI,GAAG,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;AAEjF,MAAM,WAAW,YAAY,CAAC,IAAI,GAAG,MAAM;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAyC1F;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,EAAE,CAErF;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAE5F;AAED,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC,kBAAkB,CAAC,GACnE,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAA;KAAE,CAAA;CAAE,CAAC;AAElH,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC,GAAG,KAAK,IAAI,sBAAsB,CAElG"}
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/storage/layout.ts"],"names":[],"mappings":";;;AAAA,0DAAmE;AAyDnE,SAAgB,iBAAiB,CAAC,MAAqB;IACrD,MAAM,KAAK,GAAuC,EAAE,CAAC;IACrD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAEhD,SAAS,oBAAoB,CAA6B,IAAO;QAC/D,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1D,CAAC;IAED,SAAS,kBAAkB,CAAC,MAAc;QACxC,MAAM,MAAM,GAAG,IAAA,2BAAW,EAAC,MAAM,CAAC,CAAC;QACnC,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,sBAAsB,CAAC,MAAoB;QAClD,IAAI,MAAM,CAAC,EAAE,IAAI,KAAK,EAAE;YACtB,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACzB;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAuB;YACnC,GAAG,MAAM;YACT,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,IAAI,EAAE;gBACJ,GAAG,IAAI;gBACP,OAAO,EAAE,SAAS;gBAClB,UAAU,EAAE,SAAS;aACtB;SACF,CAAC;QAEF,wCAAwC;QACxC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QAE5B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,OAAO;YACnB,IAAI,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7G,QAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE5G,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAzCD,8CAyCC;AAED,SAAgB,aAAa,CAAI,OAA2B;IAC1D,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AAChE,CAAC;AAFD,sCAEC;AAED,SAAgB,eAAe,CAAI,OAA2B;IAC5D,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AAChE,CAAC;AAFD,0CAEC;AAKD,SAAgB,SAAS,CAAC,KAAuC;IAC/D,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;AAC/G,CAAC;AAFD,8BAEC"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/storage/layout.ts"],"names":[],"mappings":";;;AAAA,0DAAmE;AA0DnE,SAAgB,iBAAiB,CAAC,MAAqB;IACrD,MAAM,KAAK,GAAuC,EAAE,CAAC;IACrD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAEhD,SAAS,oBAAoB,CAA6B,IAAO;QAC/D,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1D,CAAC;IAED,SAAS,kBAAkB,CAAC,MAAc;QACxC,MAAM,MAAM,GAAG,IAAA,2BAAW,EAAC,MAAM,CAAC,CAAC;QACnC,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,sBAAsB,CAAC,MAAoB;QAClD,IAAI,MAAM,CAAC,EAAE,IAAI,KAAK,EAAE;YACtB,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACzB;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAuB;YACnC,GAAG,MAAM;YACT,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,IAAI,EAAE;gBACJ,GAAG,IAAI;gBACP,OAAO,EAAE,SAAS;gBAClB,UAAU,EAAE,SAAS;aACtB;SACF,CAAC;QAEF,wCAAwC;QACxC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QAE5B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,OAAO;YACnB,IAAI,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7G,QAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE5G,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAzCD,8CAyCC;AAED,SAAgB,aAAa,CAAI,OAA2B;IAC1D,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AAChE,CAAC;AAFD,sCAEC;AAED,SAAgB,eAAe,CAAI,OAA2B;IAC5D,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AAChE,CAAC;AAFD,0CAEC;AAKD,SAAgB,SAAS,CAAC,KAAuC;IAC/D,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;AAC/G,CAAC;AAFD,8BAEC"}
@@ -0,0 +1,35 @@
1
+ import { StorageLayout } from './layout';
2
+ import { SrcDecoder } from '../src-decoder';
3
+ import { Node } from 'solidity-ast/node';
4
+ import { CompilationContext } from './extract';
5
+ /**
6
+ * Loads a contract's namespaces and namespaced type information into the storage layout.
7
+ *
8
+ * The provided compilation contexts must include both the original compilation and optionally
9
+ * a namespaced compilation where contracts have been modified to include namespaced type information.
10
+ *
11
+ * If namespaced compilation is included, storage slots and offsets will be included in the loaded namespaces and types.
12
+ *
13
+ * This function looks up namespaces and their members from the namespaced compilation context's AST if available
14
+ * (meaning node ids would be from the namespaced compilation), and looks up slots and offsets from the compiled type information.
15
+ * However, it saves the original source locations from the original context so that line numbers are
16
+ * consistent with the original source code.
17
+ *
18
+ * @param decodeSrc Source decoder for the original source code.
19
+ * @param layout The storage layout object to load namespaces into.
20
+ * @param origContext The original compilation context, which is used to lookup original source locations.
21
+ * @param namespacedContext The namespaced compilation context, which represents a namespaced compilation.
22
+ */
23
+ export declare function loadNamespaces(decodeSrc: SrcDecoder, layout: StorageLayout, origContext: CompilationContext, namespacedContext?: CompilationContext): void;
24
+ /**
25
+ * Gets the storage location string from the `@custom:storage-location` annotation.
26
+ *
27
+ * For example, when using ERC-7201 (https://eips.ethereum.org/EIPS/eip-7201), the result will be `erc7201:<NAMESPACE_ID>`
28
+ *
29
+ * @param node The node that may have a `@custom:storage-location` annotation.
30
+ * @returns The storage location string, or undefined if the node does not have a `@custom:storage-location` annotation.
31
+ * @throws Error if the node has the annotation `@custom:storage-location` but it does not have exactly one argument.
32
+ */
33
+ export declare function getStorageLocationAnnotation(node: Node): string | undefined;
34
+ export declare function isNamespaceSupported(solcVersion: string): boolean;
35
+ //# sourceMappingURL=namespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/storage/namespace.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,aAAa,EAA6B,MAAM,UAAU,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAkC,MAAM,WAAW,CAAC;AAI/E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,kBAAkB,EAC/B,iBAAiB,CAAC,EAAE,kBAAkB,QA+BvC;AA8ED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,IAAI,sBAStD;AAwGD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,WAEvD"}
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.isNamespaceSupported = exports.getStorageLocationAnnotation = exports.loadNamespaces = void 0;
30
+ const assert_1 = __importDefault(require("assert"));
31
+ const utils_1 = require("solidity-ast/utils");
32
+ const layout_1 = require("./layout");
33
+ const annotations_1 = require("../utils/annotations");
34
+ const extract_1 = require("./extract");
35
+ const error_1 = require("../error");
36
+ const versions = __importStar(require("compare-versions"));
37
+ /**
38
+ * Loads a contract's namespaces and namespaced type information into the storage layout.
39
+ *
40
+ * The provided compilation contexts must include both the original compilation and optionally
41
+ * a namespaced compilation where contracts have been modified to include namespaced type information.
42
+ *
43
+ * If namespaced compilation is included, storage slots and offsets will be included in the loaded namespaces and types.
44
+ *
45
+ * This function looks up namespaces and their members from the namespaced compilation context's AST if available
46
+ * (meaning node ids would be from the namespaced compilation), and looks up slots and offsets from the compiled type information.
47
+ * However, it saves the original source locations from the original context so that line numbers are
48
+ * consistent with the original source code.
49
+ *
50
+ * @param decodeSrc Source decoder for the original source code.
51
+ * @param layout The storage layout object to load namespaces into.
52
+ * @param origContext The original compilation context, which is used to lookup original source locations.
53
+ * @param namespacedContext The namespaced compilation context, which represents a namespaced compilation.
54
+ */
55
+ function loadNamespaces(decodeSrc, layout, origContext, namespacedContext) {
56
+ const namespacesWithSrc = {};
57
+ const origLinearized = origContext.contractDef.linearizedBaseContracts.map(id => getReferencedContract(origContext, id));
58
+ const namespacedLinearized = namespacedContext?.contractDef.linearizedBaseContracts.map(id => getReferencedContract(namespacedContext, id));
59
+ (0, assert_1.default)(namespacedLinearized === undefined || origLinearized.length === namespacedLinearized.length);
60
+ const context = namespacedContext ?? origContext;
61
+ const linearized = namespacedLinearized ?? origLinearized;
62
+ for (const [i, contractDef] of linearized.entries()) {
63
+ const origContractDef = origLinearized[i];
64
+ const contractContext = { ...context, contractDef };
65
+ addContractNamespacesWithSrc(namespacesWithSrc, decodeSrc, layout, contractContext, origContractDef, origContext.contractDef.canonicalName ?? origContext.contractDef.name);
66
+ }
67
+ // Add to layout without the namespaced structs' src locations, since those are no longer needed
68
+ // as they were only used to give duplicate namespace errors above.
69
+ layout.namespaces = Object.fromEntries(Object.entries(namespacesWithSrc).map(([id, namespaceWithSrc]) => [id, namespaceWithSrc.namespace]));
70
+ }
71
+ exports.loadNamespaces = loadNamespaces;
72
+ class DuplicateNamespaceError extends error_1.UpgradesError {
73
+ constructor(id, contractName, src1, src2) {
74
+ super(`Namespace ${id} is defined multiple times for contract ${contractName}`, () => `\
75
+ The namespace ${id} was found in structs at the following locations:
76
+ - ${src1}
77
+ - ${src2}
78
+
79
+ Use a unique namespace id for each struct annotated with '@custom:storage-location erc7201:<NAMESPACE_ID>' in your contract and its inherited contracts.`);
80
+ }
81
+ }
82
+ /**
83
+ * Gets the contract definition for the given referenced id.
84
+ */
85
+ function getReferencedContract(context, referencedId) {
86
+ // Optimization to avoid dereferencing if the referenced id is the same as the current contract
87
+ return context.contractDef.id === referencedId
88
+ ? context.contractDef
89
+ : context.deref(['ContractDefinition'], referencedId);
90
+ }
91
+ /**
92
+ * Add namespaces and source locations for the given compilation context's contract.
93
+ * Does not include inherited contracts.
94
+ *
95
+ * @param namespacesWithSrc The record of namespaces with source locations to add to.
96
+ * @param decodeSrc Source decoder for the original source code.
97
+ * @param layout The storage layout object to load types into.
98
+ * @param contractContext The compilation context for this specific contract to load namespaces for.
99
+ * @param origContractDef The AST node for this specific contract but from the original compilation context.
100
+ * @param leastDerivedContractName The name of the least derived contract in the inheritance list.
101
+ * @throws DuplicateNamespaceError if a duplicate namespace is found when adding to the `namespaces` record.
102
+ */
103
+ function addContractNamespacesWithSrc(namespacesWithSrc, decodeSrc, layout, contractContext, origContractDef, leastDerivedContractName) {
104
+ for (const node of contractContext.contractDef.nodes) {
105
+ if ((0, utils_1.isNodeType)('StructDefinition', node)) {
106
+ const storageLocation = getStorageLocationAnnotation(node);
107
+ if (storageLocation !== undefined) {
108
+ const origSrc = decodeSrc(getOriginalStruct(node.canonicalName, origContractDef));
109
+ if (namespacesWithSrc[storageLocation] !== undefined) {
110
+ throw new DuplicateNamespaceError(storageLocation, leastDerivedContractName, namespacesWithSrc[storageLocation].src, origSrc);
111
+ }
112
+ else {
113
+ namespacesWithSrc[storageLocation] = {
114
+ namespace: getNamespacedStorageItems(node, decodeSrc, layout, contractContext, origContractDef),
115
+ src: origSrc,
116
+ };
117
+ }
118
+ }
119
+ }
120
+ }
121
+ }
122
+ /**
123
+ * Gets the storage location string from the `@custom:storage-location` annotation.
124
+ *
125
+ * For example, when using ERC-7201 (https://eips.ethereum.org/EIPS/eip-7201), the result will be `erc7201:<NAMESPACE_ID>`
126
+ *
127
+ * @param node The node that may have a `@custom:storage-location` annotation.
128
+ * @returns The storage location string, or undefined if the node does not have a `@custom:storage-location` annotation.
129
+ * @throws Error if the node has the annotation `@custom:storage-location` but it does not have exactly one argument.
130
+ */
131
+ function getStorageLocationAnnotation(node) {
132
+ const doc = (0, annotations_1.getDocumentation)(node);
133
+ if ((0, annotations_1.hasAnnotationTag)(doc, 'storage-location')) {
134
+ const storageLocationArgs = (0, annotations_1.getAnnotationArgs)(doc, 'storage-location');
135
+ if (storageLocationArgs.length !== 1) {
136
+ throw new Error('@custom:storage-location annotation must have exactly one argument');
137
+ }
138
+ return storageLocationArgs[0];
139
+ }
140
+ }
141
+ exports.getStorageLocationAnnotation = getStorageLocationAnnotation;
142
+ /**
143
+ * Gets the storage items for the given struct node.
144
+ * Includes loading recursive type information, and adds slot and offset if they are available in the given compilation context's layout.
145
+ */
146
+ function getNamespacedStorageItems(node, decodeSrc, layout, context, origContractDef) {
147
+ const storageItems = [];
148
+ for (const astMember of (0, extract_1.getTypeMembers)(node, { typeName: true })) {
149
+ const item = {
150
+ contract: context.contractDef.name,
151
+ label: astMember.label,
152
+ type: astMember.type,
153
+ src: decodeSrc({ src: getOriginalMemberSrc(node.canonicalName, astMember.label, origContractDef) }),
154
+ };
155
+ const layoutMember = findLayoutStructMember(context.storageLayout?.types ?? {}, node.canonicalName, astMember.label);
156
+ if (layoutMember?.offset !== undefined && layoutMember?.slot !== undefined) {
157
+ item.offset = layoutMember.offset;
158
+ item.slot = layoutMember.slot;
159
+ }
160
+ storageItems.push(item);
161
+ // If context is namespaced, we have storage layout, and this will fill in enum members just like in extractStorageLayout.
162
+ // If context is original, this will add the types from the namespace structs to the layout.
163
+ (0, extract_1.loadLayoutType)(astMember.typeName, layout, context.deref);
164
+ }
165
+ return storageItems;
166
+ }
167
+ /**
168
+ * Gets the struct definition matching the given canonical name from the original contract definition.
169
+ */
170
+ function getOriginalStruct(structCanonicalName, origContractDef) {
171
+ for (const node of origContractDef.nodes) {
172
+ if ((0, utils_1.isNodeType)('StructDefinition', node)) {
173
+ if (node.canonicalName === structCanonicalName) {
174
+ return node;
175
+ }
176
+ }
177
+ }
178
+ throw new Error(`Could not find original source location for namespace struct with name ${structCanonicalName} from contract ${origContractDef.name}`);
179
+ }
180
+ /**
181
+ * Gets the original source location for the given struct canonical name and struct member label.
182
+ */
183
+ function getOriginalMemberSrc(structCanonicalName, memberLabel, origContractDef) {
184
+ const node = getOriginalStruct(structCanonicalName, origContractDef);
185
+ if (node !== undefined) {
186
+ for (const member of (0, extract_1.getTypeMembers)(node, { src: true })) {
187
+ if (member.label === memberLabel) {
188
+ return member.src;
189
+ }
190
+ }
191
+ }
192
+ throw new Error(`Could not find original source location for namespace struct with name ${structCanonicalName} and member ${memberLabel}`);
193
+ }
194
+ /**
195
+ * From the given layout types, gets the struct member matching the given struct canonical name and struct member label.
196
+ */
197
+ function findLayoutStructMember(types, structCanonicalName, memberLabel) {
198
+ const structType = findTypeWithLabel(types, `struct ${structCanonicalName}`);
199
+ const structMembers = structType?.members;
200
+ if (structMembers !== undefined) {
201
+ (0, assert_1.default)((0, layout_1.isStructMembers)(structMembers));
202
+ for (const structMember of structMembers) {
203
+ if (structMember.label === memberLabel) {
204
+ return structMember;
205
+ }
206
+ }
207
+ }
208
+ }
209
+ /**
210
+ * From the given layout types, gets the type matching the given type label.
211
+ */
212
+ function findTypeWithLabel(types, label) {
213
+ return Object.values(types).find(type => type.label === label);
214
+ }
215
+ function isNamespaceSupported(solcVersion) {
216
+ return versions.compare(solcVersion, '0.8.20', '>=');
217
+ }
218
+ exports.isNamespaceSupported = isNamespaceSupported;
219
+ //# sourceMappingURL=namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/storage/namespace.ts"],"names":[],"mappings":"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"}