@openzeppelin/upgrades-core 1.13.1 → 1.14.2

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 (48) hide show
  1. package/dist/proxy-kind.d.ts +4 -0
  2. package/dist/proxy-kind.d.ts.map +1 -1
  3. package/dist/proxy-kind.js +4 -0
  4. package/dist/proxy-kind.js.map +1 -1
  5. package/dist/standalone.test.js +9 -0
  6. package/dist/standalone.test.js.map +1 -1
  7. package/dist/storage/compare.d.ts +15 -4
  8. package/dist/storage/compare.d.ts.map +1 -1
  9. package/dist/storage/compare.js +49 -4
  10. package/dist/storage/compare.js.map +1 -1
  11. package/dist/storage/extract.d.ts.map +1 -1
  12. package/dist/storage/extract.js +27 -3
  13. package/dist/storage/extract.js.map +1 -1
  14. package/dist/storage/layout.d.ts +14 -0
  15. package/dist/storage/layout.d.ts.map +1 -1
  16. package/dist/storage/layout.js +6 -2
  17. package/dist/storage/layout.js.map +1 -1
  18. package/dist/storage/report-rename-retype.test.d.ts +2 -0
  19. package/dist/storage/report-rename-retype.test.d.ts.map +1 -0
  20. package/dist/storage/report-rename-retype.test.js +93 -0
  21. package/dist/storage/report-rename-retype.test.js.map +1 -0
  22. package/dist/storage/report.d.ts.map +1 -1
  23. package/dist/storage/report.js +32 -2
  24. package/dist/storage/report.js.map +1 -1
  25. package/dist/storage/report.test.js +6 -0
  26. package/dist/storage/report.test.js.map +1 -1
  27. package/dist/storage.test.js +1 -1
  28. package/dist/utils/execall.d.ts +2 -0
  29. package/dist/utils/execall.d.ts.map +1 -0
  30. package/dist/utils/execall.js +17 -0
  31. package/dist/utils/execall.js.map +1 -0
  32. package/package.json +2 -2
  33. package/src/proxy-kind.ts +4 -0
  34. package/src/standalone.test.ts +12 -0
  35. package/src/storage/compare.ts +61 -8
  36. package/src/storage/extract.ts +31 -5
  37. package/src/storage/layout.ts +17 -2
  38. package/src/storage/report-rename-retype.test.ts +106 -0
  39. package/src/storage/report-rename-retype.test.ts.md +44 -0
  40. package/src/storage/report-rename-retype.test.ts.snap +0 -0
  41. package/src/storage/report.test.ts +7 -0
  42. package/src/storage/report.test.ts.md +11 -0
  43. package/src/storage/report.test.ts.snap +0 -0
  44. package/src/storage/report.ts +39 -4
  45. package/src/storage.test.ts +1 -1
  46. package/src/storage.test.ts.md +146 -0
  47. package/src/storage.test.ts.snap +0 -0
  48. package/src/utils/execall.ts +11 -0
@@ -12,6 +12,10 @@ export declare function processProxyKind(provider: EthereumProvider, proxyAddres
12
12
  /**
13
13
  * Detects the kind of proxy at an address by reading its ERC 1967 storage slots.
14
14
  *
15
+ * @deprecated Not reliable since UUPS proxies can have admin storage slot set, which causes
16
+ * this function to treat it as transparent. Instead, if implementation contract signatures are
17
+ * available, infer the proxy kind using `inferProxyKind` instead.
18
+ *
15
19
  * @param provider the Ethereum provider
16
20
  * @param proxyAddress the proxy address
17
21
  * @returns the proxy kind
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-kind.d.ts","sourceRoot":"","sources":["../src/proxy-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAkB,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAgC,eAAe,EAAE,MAAM,YAAY,CAAC;AAE3E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAsB,YAAY,CAChC,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAkBlC;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,OAAO,iBAiBjB;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8CAYrF"}
1
+ {"version":3,"file":"proxy-kind.d.ts","sourceRoot":"","sources":["../src/proxy-kind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAkB,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAgC,eAAe,EAAE,MAAM,YAAY,CAAC;AAE3E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAsB,YAAY,CAChC,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAkBlC;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,OAAO,iBAiBjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8CAYrF"}
@@ -51,6 +51,10 @@ exports.processProxyKind = processProxyKind;
51
51
  /**
52
52
  * Detects the kind of proxy at an address by reading its ERC 1967 storage slots.
53
53
  *
54
+ * @deprecated Not reliable since UUPS proxies can have admin storage slot set, which causes
55
+ * this function to treat it as transparent. Instead, if implementation contract signatures are
56
+ * available, infer the proxy kind using `inferProxyKind` instead.
57
+ *
54
58
  * @param provider the Ethereum provider
55
59
  * @param proxyAddress the proxy address
56
60
  * @returns the proxy kind
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-kind.js","sourceRoot":"","sources":["../src/proxy-kind.ts"],"names":[],"mappings":";;;AACA,yCAA+E;AAC/E,yCAA2E;AAC3E,mDAA8F;AAE9F,+CAA4D;AAC5D,wBAAkC;AAE3B,KAAK,UAAU,YAAY,CAChC,QAA0B,EAC1B,YAAoB,EACpB,IAAuB;;IAEvB,MAAM,QAAQ,GAAG,MAAM,mBAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAErD,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACpF,IAAI,CAAC,YAAY,6BAAkB,EAAE;YACnC,OAAO,SAAS,CAAC;SAClB;aAAM;YACL,MAAM,CAAC,CAAC;SACT;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;QAC3B,IAAI,CAAC,IAAI,GAAG,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,IAAI,mCAAI,aAAa,CAAC;KACvD;SAAM,IAAI,kBAAkB,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,EAAE;QACtE,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,iBAAiB,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;KACtG;IAED,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAtBD,oCAsBC;AAED;;;;GAIG;AACI,KAAK,UAAU,gBAAgB,CACpC,QAA0B,EAC1B,YAAgC,EAChC,IAAuB,EACvB,IAAoB,EACpB,OAAgB;IAEhB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;QAC3B,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,MAAM,IAAA,6BAAa,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE;YAC/E,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;SACtB;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,IAAA,yBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC3C;KACF;IAED,IAAI,YAAY,KAAK,SAAS,EAAE;QAC9B,MAAM,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;KAClD;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC1B,MAAM,IAAI,yCAA2B,EAAE,CAAC;KACzC;AACH,CAAC;AAtBD,4CAsBC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,eAAe,CAAC,QAA0B,EAAE,YAAoB;IACpF,IAAI,UAAmC,CAAC;IACxC,IAAI,MAAM,IAAA,kCAAkB,EAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;QACpD,UAAU,GAAG,aAAa,CAAC;KAC5B;SAAM,IAAI,MAAM,IAAA,wCAAwB,EAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;QACjE,UAAU,GAAG,MAAM,CAAC;KACrB;SAAM,IAAI,MAAM,IAAA,6BAAa,EAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;QACtD,UAAU,GAAG,QAAQ,CAAC;KACvB;SAAM;QACL,MAAM,IAAI,gBAAa,CAAC,eAAe,YAAY,sCAAsC,CAAC,CAAC;KAC5F;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAZD,0CAYC"}
1
+ {"version":3,"file":"proxy-kind.js","sourceRoot":"","sources":["../src/proxy-kind.ts"],"names":[],"mappings":";;;AACA,yCAA+E;AAC/E,yCAA2E;AAC3E,mDAA8F;AAE9F,+CAA4D;AAC5D,wBAAkC;AAE3B,KAAK,UAAU,YAAY,CAChC,QAA0B,EAC1B,YAAoB,EACpB,IAAuB;;IAEvB,MAAM,QAAQ,GAAG,MAAM,mBAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAErD,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACpF,IAAI,CAAC,YAAY,6BAAkB,EAAE;YACnC,OAAO,SAAS,CAAC;SAClB;aAAM;YACL,MAAM,CAAC,CAAC;SACT;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;QAC3B,IAAI,CAAC,IAAI,GAAG,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,IAAI,mCAAI,aAAa,CAAC;KACvD;SAAM,IAAI,kBAAkB,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,EAAE;QACtE,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,iBAAiB,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;KACtG;IAED,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAtBD,oCAsBC;AAED;;;;GAIG;AACI,KAAK,UAAU,gBAAgB,CACpC,QAA0B,EAC1B,YAAgC,EAChC,IAAuB,EACvB,IAAoB,EACpB,OAAgB;IAEhB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;QAC3B,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,MAAM,IAAA,6BAAa,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE;YAC/E,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;SACtB;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,IAAA,yBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC3C;KACF;IAED,IAAI,YAAY,KAAK,SAAS,EAAE;QAC9B,MAAM,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;KAClD;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC1B,MAAM,IAAI,yCAA2B,EAAE,CAAC;KACzC;AACH,CAAC;AAtBD,4CAsBC;AAED;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,eAAe,CAAC,QAA0B,EAAE,YAAoB;IACpF,IAAI,UAAmC,CAAC;IACxC,IAAI,MAAM,IAAA,kCAAkB,EAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;QACpD,UAAU,GAAG,aAAa,CAAC;KAC5B;SAAM,IAAI,MAAM,IAAA,wCAAwB,EAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;QACjE,UAAU,GAAG,MAAM,CAAC;KACrB;SAAM,IAAI,MAAM,IAAA,6BAAa,EAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;QACtD,UAAU,GAAG,QAAQ,CAAC;KACvB;SAAM;QACL,MAAM,IAAI,gBAAa,CAAC,eAAe,YAAY,sCAAsC,CAAC,CAAC;KAC5F;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAZD,0CAYC"}
@@ -30,4 +30,13 @@ test('reports storage upgrade errors', t => {
30
30
  const badReport = v1.getStorageUpgradeReport(v2Bad);
31
31
  t.false(badReport.ok);
32
32
  });
33
+ test('dont report renamed version update', t => {
34
+ const v1 = new standalone_1.UpgradeableContract('StandaloneRenameV1', t.context.solcInput, t.context.solcOutput);
35
+ const v2 = new standalone_1.UpgradeableContract('StandaloneRenameV2', t.context.solcInput, t.context.solcOutput);
36
+ const goodReport = v1.getStorageUpgradeReport(v2);
37
+ t.true(goodReport.ok);
38
+ const v3 = new standalone_1.UpgradeableContract('StandaloneRenameV3', t.context.solcInput, t.context.solcOutput);
39
+ const goodReport2 = v2.getStorageUpgradeReport(v3);
40
+ t.true(goodReport2.ok);
41
+ });
33
42
  //# sourceMappingURL=standalone.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standalone.test.js","sourceRoot":"","sources":["../src/standalone.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAoC;AACpC,qCAAoC;AAGpC,6CAAmD;AAOnD,MAAM,IAAI,GAAG,aAAwB,CAAC;AAEtC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;IACpB,MAAM,SAAS,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,4CAA4C,CAAC,CAAC;IAC7F,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACzC;IACD,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;IACtC,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC,EAAE;IACnC,MAAM,IAAI,GAAG,IAAI,gCAAmB,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChG,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACrC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gCAAgC,EAAE,CAAC,CAAC,EAAE;IACzC,MAAM,EAAE,GAAG,IAAI,gCAAmB,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE9F,MAAM,MAAM,GAAG,IAAI,gCAAmB,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtG,MAAM,UAAU,GAAG,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAEtB,MAAM,KAAK,GAAG,IAAI,gCAAmB,CAAC,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpG,MAAM,SAAS,GAAG,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"standalone.test.js","sourceRoot":"","sources":["../src/standalone.test.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { Operation } from '../levenshtein';
2
- import { ParsedTypeDetailed, StorageItem as _StorageItem } from './layout';
3
- import { StructMember as _StructMember } from './layout';
2
+ import { ParsedTypeDetailed } from './layout';
3
+ import { StorageItem as _StorageItem, StructMember as _StructMember, StorageField as _StorageField } from './layout';
4
4
  import { LayoutCompatibilityReport } from './report';
5
5
  export declare type StorageItem = _StorageItem<ParsedTypeDetailed>;
6
6
  declare type StructMember = _StructMember<ParsedTypeDetailed>;
7
- export declare type StorageField = StorageItem | StructMember;
7
+ export declare type StorageField = _StorageField<ParsedTypeDetailed>;
8
8
  export declare type StorageOperation<F extends StorageField> = Operation<F, StorageFieldChange<F>>;
9
9
  export declare type EnumOperation = Operation<string, {
10
10
  kind: 'replace';
@@ -16,12 +16,15 @@ declare type StorageFieldChange<F extends StorageField> = ({
16
16
  } | {
17
17
  kind: 'typechange';
18
18
  change: TypeChange;
19
+ } | {
20
+ kind: 'layoutchange';
21
+ change: LayoutChange;
19
22
  }) & {
20
23
  original: F;
21
24
  updated: F;
22
25
  };
23
26
  export declare type TypeChange = ({
24
- kind: 'obvious mismatch' | 'unknown' | 'array grow' | 'array shrink' | 'array dynamic' | 'enum resize' | 'missing members';
27
+ kind: 'obvious mismatch' | 'unknown' | 'array grow' | 'visibility change' | 'array shrink' | 'array dynamic' | 'enum resize' | 'missing members';
25
28
  } | {
26
29
  kind: 'mapping key' | 'mapping value' | 'array value';
27
30
  inner: TypeChange;
@@ -36,6 +39,12 @@ export declare type TypeChange = ({
36
39
  original: ParsedTypeDetailed;
37
40
  updated: ParsedTypeDetailed;
38
41
  };
42
+ export interface LayoutChange {
43
+ uncertain?: boolean;
44
+ slot?: Record<'from' | 'to', string>;
45
+ offset?: Record<'from' | 'to', number>;
46
+ bytes?: Record<'from' | 'to', string>;
47
+ }
39
48
  export declare class StorageLayoutComparator {
40
49
  readonly unsafeAllowCustomTypes: boolean;
41
50
  readonly unsafeAllowRenames: boolean;
@@ -45,7 +54,9 @@ export declare class StorageLayoutComparator {
45
54
  constructor(unsafeAllowCustomTypes?: boolean, unsafeAllowRenames?: boolean);
46
55
  compareLayouts(original: StorageItem[], updated: StorageItem[]): LayoutCompatibilityReport;
47
56
  private layoutLevenshtein;
57
+ getVisibilityChange(original: ParsedTypeDetailed, updated: ParsedTypeDetailed): TypeChange | undefined;
48
58
  getFieldChange<F extends StorageField>(original: F, updated: F): StorageFieldChange<F> | undefined;
59
+ getLayoutChange(original: StorageField, updated: StorageField): LayoutChange | undefined;
49
60
  getTypeChange(original: ParsedTypeDetailed, updated: ParsedTypeDetailed, { allowAppend }: {
50
61
  allowAppend: boolean;
51
62
  }): TypeChange | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/storage/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AAE3E,OAAO,EAAE,YAAY,IAAI,aAAa,EAAkC,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAIrD,oBAAY,WAAW,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;AAC3D,aAAK,YAAY,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAEtD,oBAAY,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;AACtD,oBAAY,gBAAgB,CAAC,CAAC,SAAS,YAAY,IAAI,SAAS,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3F,oBAAY,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEtG,aAAK,kBAAkB,CAAC,CAAC,SAAS,YAAY,IAAI,CAC9C;IAAE,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAC7C,GAAG;IACF,QAAQ,EAAE,CAAC,CAAC;IACZ,OAAO,EAAE,CAAC,CAAC;CACZ,CAAC;AAEF,oBAAY,UAAU,GAAG,CACrB;IACE,IAAI,EACA,kBAAkB,GAClB,SAAS,GACT,YAAY,GACZ,cAAc,GACd,eAAe,GACf,aAAa,GACb,iBAAiB,CAAC;CACvB,GACD;IACE,IAAI,EAAE,aAAa,GAAG,eAAe,GAAG,aAAa,CAAC;IACtD,KAAK,EAAE,UAAU,CAAC;CACnB,GACD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,GAAG,EAAE,aAAa,EAAE,CAAC;CACtB,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,GAAG,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;CACtB,CACJ,GAAG;IACF,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,qBAAa,uBAAuB;IAOtB,QAAQ,CAAC,sBAAsB;IAAU,QAAQ,CAAC,kBAAkB;IANhF,8BAA8B,UAAS;IAGvC,KAAK,cAAqB;IAC1B,KAAK,sCAA6C;gBAE7B,sBAAsB,UAAQ,EAAW,kBAAkB,UAAQ;IAExF,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,yBAAyB;IAI1F,OAAO,CAAC,iBAAiB;IAczB,cAAc,CAAC,CAAC,SAAS,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,SAAS;IAalG,aAAa,CACX,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,kBAAkB,EAC3B,EAAE,WAAW,EAAE,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,GACxC,UAAU,GAAG,SAAS;IAqBzB,OAAO,CAAC,qBAAqB;CA8H9B"}
1
+ {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/storage/compare.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StorageLayoutComparator = void 0;
4
4
  const levenshtein_1 = require("../levenshtein");
5
- const error_1 = require("../error");
6
5
  const layout_1 = require("./layout");
6
+ const error_1 = require("../error");
7
7
  const report_1 = require("./report");
8
8
  const assert_1 = require("../utils/assert");
9
9
  const is_value_type_1 = require("../utils/is-value-type");
@@ -28,10 +28,28 @@ class StorageLayoutComparator {
28
28
  return ops;
29
29
  }
30
30
  }
31
+ getVisibilityChange(original, updated) {
32
+ const re = /^t_function_(internal|external)/;
33
+ const originalVisibility = original.head.match(re);
34
+ const updatedVisibility = updated.head.match(re);
35
+ (0, assert_1.assert)(originalVisibility && updatedVisibility);
36
+ if (originalVisibility[0] !== updatedVisibility[0]) {
37
+ return { kind: 'visibility change', original, updated };
38
+ }
39
+ }
31
40
  getFieldChange(original, updated) {
32
- const nameChange = !this.unsafeAllowRenames && original.label !== updated.label;
33
- const typeChange = this.getTypeChange(original.type, updated.type, { allowAppend: false });
34
- if (typeChange && nameChange) {
41
+ var _a;
42
+ const nameChange = !this.unsafeAllowRenames &&
43
+ original.label !== updated.renamedFrom &&
44
+ (updated.label !== original.label ||
45
+ (updated.renamedFrom !== undefined && updated.renamedFrom !== original.renamedFrom));
46
+ const retypedFromOriginal = original.type.item.label === ((_a = updated.retypedFrom) === null || _a === void 0 ? void 0 : _a.trim());
47
+ const typeChange = !retypedFromOriginal && this.getTypeChange(original.type, updated.type, { allowAppend: false });
48
+ const layoutChange = this.getLayoutChange(original, updated);
49
+ if (updated.retypedFrom && layoutChange) {
50
+ return { kind: 'layoutchange', original, updated, change: layoutChange };
51
+ }
52
+ else if (typeChange && nameChange) {
35
53
  return { kind: 'replace', original, updated };
36
54
  }
37
55
  else if (nameChange) {
@@ -40,6 +58,30 @@ class StorageLayoutComparator {
40
58
  else if (typeChange) {
41
59
  return { kind: 'typechange', change: typeChange, original, updated };
42
60
  }
61
+ else if (layoutChange && !layoutChange.uncertain) {
62
+ // Any layout change should be caught earlier as a type change, but we
63
+ // add this check as a safety fallback.
64
+ return { kind: 'layoutchange', original, updated, change: layoutChange };
65
+ }
66
+ }
67
+ getLayoutChange(original, updated) {
68
+ const validPair = ['uint8', 'bool'];
69
+ const knownCompatibleTypes = validPair.includes(original.type.item.label) && validPair.includes(updated.type.item.label);
70
+ if (original.type.item.label == updated.type.item.label || knownCompatibleTypes) {
71
+ return undefined;
72
+ }
73
+ else if ((0, layout_1.hasLayout)(original) && (0, layout_1.hasLayout)(updated)) {
74
+ const change = (from, to) => (from === to ? undefined : { from, to });
75
+ const slot = change(original.slot, updated.slot);
76
+ const offset = change(original.offset, updated.offset);
77
+ const bytes = change(original.type.item.numberOfBytes, updated.type.item.numberOfBytes);
78
+ if (slot || offset || bytes) {
79
+ return { slot, offset, bytes };
80
+ }
81
+ }
82
+ else {
83
+ return { uncertain: true };
84
+ }
43
85
  }
44
86
  getTypeChange(original, updated, { allowAppend }) {
45
87
  const key = JSON.stringify({ original: original.id, updated: updated.id, allowAppend });
@@ -61,6 +103,9 @@ class StorageLayoutComparator {
61
103
  }
62
104
  uncachedGetTypeChange(original, updated, { allowAppend }) {
63
105
  var _a, _b, _c, _d;
106
+ if (updated.head.startsWith('t_function')) {
107
+ return this.getVisibilityChange(original, updated);
108
+ }
64
109
  if (original.head !== updated.head) {
65
110
  return { kind: 'obvious mismatch', original, updated };
66
111
  }
@@ -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 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/storage/extract.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAKnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAMtD,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,CAwCf"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/storage/extract.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAKnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAOtD,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"}
@@ -9,6 +9,7 @@ const utils_1 = require("solidity-ast/utils");
9
9
  const type_id_1 = require("../utils/type-id");
10
10
  const map_values_1 = require("../utils/map-values");
11
11
  const pick_1 = require("../utils/pick");
12
+ const execall_1 = require("../utils/execall");
12
13
  const currentLayoutVersion = '1.1';
13
14
  function isCurrentLayoutVersion(layout) {
14
15
  return (layout === null || layout === void 0 ? void 0 : layout.layoutVersion) === currentLayoutVersion;
@@ -21,18 +22,20 @@ function extractStorageLayout(contractDef, decodeSrc, deref, storageLayout) {
21
22
  var _a;
22
23
  return {
23
24
  label: m.label,
24
- members: (_a = m.members) === null || _a === void 0 ? void 0 : _a.map(m => (typeof m === 'string' ? m : (0, pick_1.pick)(m, ['label', 'type']))),
25
+ members: (_a = m.members) === null || _a === void 0 ? void 0 : _a.map(m => typeof m === 'string' ? m : (0, pick_1.pick)(m, ['label', 'type', 'offset', 'slot'])),
26
+ numberOfBytes: m.numberOfBytes,
25
27
  };
26
28
  });
27
29
  for (const storage of storageLayout.storage) {
28
30
  const origin = getOriginContract(contractDef, storage.astId, deref);
29
31
  (0, assert_1.default)(origin, `Did not find variable declaration node for '${storage.label}'`);
30
32
  const { varDecl, contract } = origin;
33
+ const { renamedFrom, retypedFrom } = getRetypedRenamed(varDecl);
31
34
  // Solc layout doesn't bring members for enums so we get them using the ast method
32
35
  loadLayoutType(varDecl, layout, deref);
33
36
  const { label, offset, slot, type } = storage;
34
37
  const src = decodeSrc(varDecl);
35
- layout.storage.push({ label, offset, slot, type, contract, src });
38
+ layout.storage.push({ label, offset, slot, type, contract, src, retypedFrom, renamedFrom });
36
39
  layout.flat = true;
37
40
  }
38
41
  }
@@ -41,11 +44,14 @@ function extractStorageLayout(contractDef, decodeSrc, deref, storageLayout) {
41
44
  if ((0, utils_1.isNodeType)('VariableDeclaration', varDecl)) {
42
45
  if (!varDecl.constant && varDecl.mutability !== 'immutable') {
43
46
  const type = (0, type_id_1.normalizeTypeIdentifier)(typeDescriptions(varDecl).typeIdentifier);
47
+ const { renamedFrom, retypedFrom } = getRetypedRenamed(varDecl);
44
48
  layout.storage.push({
45
49
  contract: contractDef.name,
46
50
  label: varDecl.name,
47
51
  type,
48
52
  src: decodeSrc(varDecl),
53
+ retypedFrom,
54
+ renamedFrom,
49
55
  });
50
56
  loadLayoutType(varDecl, layout, deref);
51
57
  }
@@ -82,7 +88,7 @@ function getTypeMembers(typeDef) {
82
88
  }
83
89
  }
84
90
  function getOriginContract(contract, astId, deref) {
85
- for (const id of contract.linearizedBaseContracts.reverse()) {
91
+ for (const id of contract.linearizedBaseContracts) {
86
92
  const parentContract = deref(['ContractDefinition'], id);
87
93
  const varDecl = parentContract.nodes.find(n => n.id == astId);
88
94
  if (varDecl && (0, utils_1.isNodeType)('VariableDeclaration', varDecl)) {
@@ -117,4 +123,22 @@ function loadLayoutType(varDecl, layout, deref) {
117
123
  }
118
124
  }
119
125
  }
126
+ function getRetypedRenamed(varDecl) {
127
+ var _a, _b;
128
+ let retypedFrom, renamedFrom;
129
+ if ('documentation' in varDecl) {
130
+ const docs = typeof varDecl.documentation === 'string' ? varDecl.documentation : (_b = (_a = varDecl.documentation) === null || _a === void 0 ? void 0 : _a.text) !== null && _b !== void 0 ? _b : '';
131
+ for (const { groups } of (0, execall_1.execall)(/^\s*(?:@(?<title>\w+)(?::(?<tag>[a-z][a-z-]*))? )?(?<args>(?:(?!^\s@\w+)[^])*)/m, docs)) {
132
+ if ((groups === null || groups === void 0 ? void 0 : groups.title) === 'custom') {
133
+ if (groups.tag === 'oz-retyped-from') {
134
+ retypedFrom = groups.args;
135
+ }
136
+ else if (groups.tag === 'oz-renamed-from') {
137
+ renamedFrom = groups.args;
138
+ }
139
+ }
140
+ }
141
+ }
142
+ return { retypedFrom, renamedFrom };
143
+ }
120
144
  //# sourceMappingURL=extract.js.map
@@ -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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"}
@@ -5,6 +5,7 @@ export interface StorageLayout {
5
5
  types: Record<string, TypeItem>;
6
6
  flat?: boolean;
7
7
  }
8
+ export declare type StorageField<Type = string> = StorageItem<Type> | StructMember<Type>;
8
9
  export interface StorageItem<Type = string> {
9
10
  astId?: number;
10
11
  contract: string;
@@ -13,15 +14,22 @@ export interface StorageItem<Type = string> {
13
14
  src: string;
14
15
  offset?: number;
15
16
  slot?: string;
17
+ retypedFrom?: string;
18
+ renamedFrom?: string;
16
19
  }
17
20
  export interface TypeItem<Type = string> {
18
21
  label: string;
19
22
  members?: TypeItemMembers<Type>;
23
+ numberOfBytes?: string;
20
24
  }
21
25
  export declare type TypeItemMembers<Type = string> = StructMember<Type>[] | EnumMember[];
22
26
  export interface StructMember<Type = string> {
23
27
  label: string;
24
28
  type: Type;
29
+ retypedFrom?: string;
30
+ renamedFrom?: string;
31
+ offset?: number;
32
+ slot?: string;
25
33
  }
26
34
  export declare type EnumMember = string;
27
35
  export interface ParsedTypeDetailed extends ParsedTypeId {
@@ -32,4 +40,10 @@ export interface ParsedTypeDetailed extends ParsedTypeId {
32
40
  export declare function getDetailedLayout(layout: StorageLayout): StorageItem<ParsedTypeDetailed>[];
33
41
  export declare function isEnumMembers<T>(members: TypeItemMembers<T>): members is EnumMember[];
34
42
  export declare function isStructMembers<T>(members: TypeItemMembers<T>): members is StructMember<T>[];
43
+ export declare type StorageFieldWithLayout = StorageField<ParsedTypeDetailed> & Required<Pick<StorageField, 'offset' | 'slot'>> & {
44
+ type: {
45
+ item: Required<Pick<TypeItem, 'numberOfBytes'>>;
46
+ };
47
+ };
48
+ export declare function hasLayout(field: StorageField<ParsedTypeDetailed>): field is StorageFieldWithLayout;
35
49
  //# sourceMappingURL=layout.d.ts.map
@@ -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,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,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;CACf;AAED,MAAM,WAAW,QAAQ,CAAC,IAAI,GAAG,MAAM;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;CACjC;AAED,oBAAY,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;CACZ;AAED,oBAAY,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,CAqC1F;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"}
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,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,oBAAY,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;CACxB;AAED,oBAAY,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,oBAAY,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,CAoC1F;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,oBAAY,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,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isStructMembers = exports.isEnumMembers = exports.getDetailedLayout = void 0;
3
+ exports.hasLayout = exports.isStructMembers = exports.isEnumMembers = exports.getDetailedLayout = void 0;
4
4
  const parse_type_id_1 = require("../utils/parse-type-id");
5
5
  function getDetailedLayout(layout) {
6
6
  const cache = {};
@@ -28,7 +28,7 @@ function getDetailedLayout(layout) {
28
28
  // store in cache before recursion below
29
29
  cache[parsed.id] = detailed;
30
30
  detailed.args = (_a = parsed.args) === null || _a === void 0 ? void 0 : _a.map(addDetailsToParsedType);
31
- detailed.rets = (_b = parsed.args) === null || _b === void 0 ? void 0 : _b.map(addDetailsToParsedType);
31
+ detailed.rets = (_b = parsed.rets) === null || _b === void 0 ? void 0 : _b.map(addDetailsToParsedType);
32
32
  detailed.item.members =
33
33
  (item === null || item === void 0 ? void 0 : item.members) && (isStructMembers(item === null || item === void 0 ? void 0 : item.members) ? item.members.map(parseWithDetails) : item === null || item === void 0 ? void 0 : item.members);
34
34
  return detailed;
@@ -43,4 +43,8 @@ function isStructMembers(members) {
43
43
  return members.length === 0 || typeof members[0] === 'object';
44
44
  }
45
45
  exports.isStructMembers = isStructMembers;
46
+ function hasLayout(field) {
47
+ return field.offset !== undefined && field.slot !== undefined && field.type.item.numberOfBytes !== undefined;
48
+ }
49
+ exports.hasLayout = hasLayout;
46
50
  //# sourceMappingURL=layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/storage/layout.ts"],"names":[],"mappings":";;;AAAA,0DAAmE;AA8CnE,SAAgB,iBAAiB,CAAC,MAAqB;IACrD,MAAM,KAAK,GAAuC,EAAE,CAAC;IAErD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE5C,SAAS,gBAAgB,CAA6B,IAAO;QAC3D,MAAM,MAAM,GAAG,IAAA,2BAAW,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,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;aACnB;SACF,CAAC;QAEF,wCAAwC;QACxC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QAE5B,QAAQ,CAAC,IAAI,GAAG,MAAA,MAAM,CAAC,IAAI,0CAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,GAAG,MAAA,MAAM,CAAC,IAAI,0CAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,OAAO;YACnB,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,KAAI,CAAC,eAAe,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC;QAEzG,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AArCD,8CAqCC;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"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/storage/layout.ts"],"names":[],"mappings":";;;AAAA,0DAAmE;AAuDnE,SAAgB,iBAAiB,CAAC,MAAqB;IACrD,MAAM,KAAK,GAAuC,EAAE,CAAC;IACrD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE5C,SAAS,gBAAgB,CAA6B,IAAO;QAC3D,MAAM,MAAM,GAAG,IAAA,2BAAW,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,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;aACnB;SACF,CAAC;QAEF,wCAAwC;QACxC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QAE5B,QAAQ,CAAC,IAAI,GAAG,MAAA,MAAM,CAAC,IAAI,0CAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,GAAG,MAAA,MAAM,CAAC,IAAI,0CAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,OAAO;YACnB,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,KAAI,CAAC,eAAe,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC;QAEzG,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AApCD,8CAoCC;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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=report-rename-retype.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-rename-retype.test.d.ts","sourceRoot":"","sources":["../../src/storage/report-rename-retype.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const ava_1 = __importDefault(require("ava"));
7
+ const utils_1 = require("solidity-ast/utils");
8
+ const hardhat_1 = require("hardhat");
9
+ const ast_dereferencer_1 = require("../ast-dereferencer");
10
+ const extract_1 = require("./extract");
11
+ const compare_1 = require("./compare");
12
+ const layout_1 = require("./layout");
13
+ const test = ava_1.default;
14
+ const dummyDecodeSrc = () => 'file.sol:1';
15
+ const testContracts = [
16
+ 'contracts/test/RenamedRetyped.sol:RenameV1',
17
+ 'contracts/test/RenamedRetyped.sol:RenameV2',
18
+ 'contracts/test/RenamedRetyped.sol:RetypeV1',
19
+ 'contracts/test/RenamedRetyped.sol:RetypeV2',
20
+ 'contracts/test/RenamedRetyped.sol:WronglyReportedRetypeV3',
21
+ 'contracts/test/RenamedRetyped.sol:MissmatchingTypeRetypeV4',
22
+ 'contracts/test/RenamedRetyped.sol:ConfusingRetypeV1',
23
+ 'contracts/test/RenamedRetyped.sol:ConfusingRetypeV2',
24
+ 'contracts/test/RenamedRetyped.sol:NonHardcodedRetypeV1',
25
+ 'contracts/test/RenamedRetyped.sol:NonHardcodedRetypeV2',
26
+ ];
27
+ test.before(async (t) => {
28
+ const contracts = {};
29
+ const deref = {};
30
+ const storageLayout = {};
31
+ for (const contract of testContracts) {
32
+ const buildInfo = await hardhat_1.artifacts.getBuildInfo(contract);
33
+ if (buildInfo === undefined) {
34
+ throw new Error(`Build info not found for contract ${contract}`);
35
+ }
36
+ const solcOutput = buildInfo.output;
37
+ for (const def of (0, utils_1.findAll)('ContractDefinition', solcOutput.sources['contracts/test/RenamedRetyped.sol'].ast)) {
38
+ contracts[def.name] = def;
39
+ deref[def.name] = (0, ast_dereferencer_1.astDereferencer)(solcOutput);
40
+ storageLayout[def.name] = solcOutput.contracts['contracts/test/RenamedRetyped.sol'][def.name].storageLayout;
41
+ }
42
+ }
43
+ t.context.extractStorageLayout = name => (0, extract_1.extractStorageLayout)(contracts[name], dummyDecodeSrc, deref[name], storageLayout[name]);
44
+ });
45
+ function getReport(original, updated) {
46
+ const originalDetailed = (0, layout_1.getDetailedLayout)(original);
47
+ const updatedDetailed = (0, layout_1.getDetailedLayout)(updated);
48
+ const comparator = new compare_1.StorageLayoutComparator();
49
+ return comparator.compareLayouts(originalDetailed, updatedDetailed);
50
+ }
51
+ test('succesful rename', t => {
52
+ const v1 = t.context.extractStorageLayout('RenameV1');
53
+ const v2 = t.context.extractStorageLayout('RenameV2');
54
+ const report = getReport(v1, v2);
55
+ t.true(report.ok);
56
+ t.snapshot(report.explain());
57
+ });
58
+ test('succesful retype', t => {
59
+ const v1 = t.context.extractStorageLayout('RetypeV1');
60
+ const v2 = t.context.extractStorageLayout('RetypeV2');
61
+ const report = getReport(v1, v2);
62
+ t.true(report.ok);
63
+ t.snapshot(report.explain());
64
+ });
65
+ test('wrongly reported retype', t => {
66
+ const v1 = t.context.extractStorageLayout('RetypeV1');
67
+ const v2 = t.context.extractStorageLayout('WronglyReportedRetypeV3');
68
+ const report = getReport(v1, v2);
69
+ t.false(report.ok);
70
+ t.snapshot(report.explain());
71
+ });
72
+ test('rightly reported retype but incompatible new type', t => {
73
+ const v1 = t.context.extractStorageLayout('RetypeV1');
74
+ const v2 = t.context.extractStorageLayout('MissmatchingTypeRetypeV4');
75
+ const report = getReport(v1, v2);
76
+ t.false(report.ok);
77
+ t.snapshot(report.explain());
78
+ });
79
+ test('confusing bad retype', t => {
80
+ const v1 = t.context.extractStorageLayout('ConfusingRetypeV1');
81
+ const v2 = t.context.extractStorageLayout('ConfusingRetypeV2');
82
+ const report = getReport(v1, v2);
83
+ t.false(report.ok);
84
+ t.snapshot(report.explain());
85
+ });
86
+ test('non-hardcoded retype', t => {
87
+ const v1 = t.context.extractStorageLayout('NonHardcodedRetypeV1');
88
+ const v2 = t.context.extractStorageLayout('NonHardcodedRetypeV2');
89
+ const report = getReport(v1, v2);
90
+ t.true(report.ok);
91
+ t.snapshot(report.explain());
92
+ });
93
+ //# sourceMappingURL=report-rename-retype.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-rename-retype.test.js","sourceRoot":"","sources":["../../src/storage/report-rename-retype.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAoC;AAEpC,8CAA8D;AAC9D,qCAAoC;AACpC,0DAAsD;AACtD,uCAAiD;AACjD,uCAAoD;AACpD,qCAA4D;AAM5D,MAAM,IAAI,GAAG,aAAwB,CAAC;AAEtC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC;AAC1C,MAAM,aAAa,GAAG;IACpB,4CAA4C;IAC5C,4CAA4C;IAC5C,4CAA4C;IAC5C,4CAA4C;IAC5C,2DAA2D;IAC3D,4DAA4D;IAC5D,qDAAqD;IACrD,qDAAqD;IACrD,wDAAwD;IACxD,wDAAwD;CACzD,CAAC;AAEF,IAAI,CAAC,MAAM,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;IACpB,MAAM,SAAS,GAAuC,EAAE,CAAC;IACzD,MAAM,KAAK,GAAoC,EAAE,CAAC;IAClD,MAAM,aAAa,GAAkC,EAAE,CAAC;IACxD,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;QACpC,MAAM,SAAS,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;SAClE;QACD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;QACpC,KAAK,MAAM,GAAG,IAAI,IAAA,eAAO,EAAC,oBAAoB,EAAE,UAAU,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,EAAE;YAC5G,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YAC1B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAA,kCAAe,EAAC,UAAU,CAAC,CAAC;YAC9C,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GACrB,UAAU,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,IAAI,CACnE,CAAC,aAAa,CAAC;SACjB;KACF;IAED,CAAC,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CACtC,IAAA,8BAAoB,EAAC,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5F,CAAC,CAAC,CAAC;AAEH,SAAS,SAAS,CAAC,QAAuB,EAAE,OAAsB;IAChE,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,EAAE,CAAC;IACjD,OAAO,UAAU,CAAC,cAAc,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AACtE,CAAC;AAED,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE;IAC3B,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE;IAC3B,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE;IAClC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,CAAC,CAAC,EAAE;IAC5D,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE;IAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IAC/D,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE;IAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;IAClE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/storage/report.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAA2C,MAAM,WAAW,CAAC;AAKxG,qBAAa,yBAAyB;IACxB,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE;gBAApC,GAAG,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE;IAEzD,IAAI,EAAE,IAAI,OAAO,CAEhB;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,OAAO,CAAC,KAAK,UAAO,GAAG,MAAM;CAa9B"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/storage/report.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAyD,MAAM,WAAW,CAAC;AAKtH,qBAAa,yBAAyB;IACxB,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE;gBAApC,GAAG,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE;IAEzD,IAAI,EAAE,IAAI,OAAO,CAEhB;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,OAAO,CAAC,KAAK,UAAO,GAAG,MAAM;CAiB9B"}