@brightchain/brightchain-api-lib 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -4
- package/src/browser.d.ts +13 -0
- package/src/browser.d.ts.map +1 -0
- package/src/browser.js +16 -0
- package/src/browser.js.map +1 -0
- package/src/index.d.ts +1 -1
- package/src/index.d.ts.map +1 -1
- package/src/index.js +1 -1
- package/src/index.js.map +1 -1
- package/src/lib/application-base.d.ts +8 -37
- package/src/lib/application-base.d.ts.map +1 -1
- package/src/lib/application-base.js +8 -80
- package/src/lib/application-base.js.map +1 -1
- package/src/lib/application.d.ts +36 -7
- package/src/lib/application.d.ts.map +1 -1
- package/src/lib/application.js +124 -135
- package/src/lib/application.js.map +1 -1
- package/src/lib/constants.js +2 -2
- package/src/lib/constants.js.map +1 -1
- package/src/lib/controllers/api/blocks.d.ts.map +1 -1
- package/src/lib/controllers/api/blocks.js +290 -290
- package/src/lib/controllers/api/blocks.js.map +1 -1
- package/src/lib/controllers/api/brightpass.d.ts.map +1 -1
- package/src/lib/controllers/api/brightpass.js +274 -274
- package/src/lib/controllers/api/brightpass.js.map +1 -1
- package/src/lib/controllers/api/energy.d.ts.map +1 -1
- package/src/lib/controllers/api/energy.js +93 -93
- package/src/lib/controllers/api/energy.js.map +1 -1
- package/src/lib/controllers/api/i18n.d.ts.map +1 -1
- package/src/lib/controllers/api/i18n.js +8 -8
- package/src/lib/controllers/api/i18n.js.map +1 -1
- package/src/lib/controllers/api/quorum.d.ts.map +1 -1
- package/src/lib/controllers/api/quorum.js +483 -483
- package/src/lib/controllers/api/quorum.js.map +1 -1
- package/src/lib/controllers/api/sessions.d.ts.map +1 -1
- package/src/lib/controllers/api/sessions.js +8 -8
- package/src/lib/controllers/api/sessions.js.map +1 -1
- package/src/lib/controllers/api/user.d.ts.map +1 -1
- package/src/lib/controllers/api/user.js +180 -180
- package/src/lib/controllers/api/user.js.map +1 -1
- package/src/lib/interfaces/application.d.ts +7 -1
- package/src/lib/interfaces/application.d.ts.map +1 -1
- package/src/lib/interfaces/brightchain-init-result.d.ts +17 -0
- package/src/lib/interfaces/brightchain-init-result.d.ts.map +1 -0
- package/src/lib/interfaces/brightchain-init-result.js +9 -0
- package/src/lib/interfaces/brightchain-init-result.js.map +1 -0
- package/src/lib/interfaces/index.d.ts +1 -0
- package/src/lib/interfaces/index.d.ts.map +1 -1
- package/src/lib/routers/app.d.ts +22 -14
- package/src/lib/routers/app.d.ts.map +1 -1
- package/src/lib/routers/app.js +28 -116
- package/src/lib/routers/app.js.map +1 -1
- package/src/lib/services/brightpass.property.helpers.d.ts +23 -0
- package/src/lib/services/brightpass.property.helpers.d.ts.map +1 -0
- package/src/lib/services/brightpass.property.helpers.js +113 -0
- package/src/lib/services/brightpass.property.helpers.js.map +1 -0
- package/src/lib/upstream-stubs.d.ts +36 -0
- package/src/lib/upstream-stubs.d.ts.map +1 -0
- package/src/lib/upstream-stubs.js +43 -0
- package/src/lib/upstream-stubs.js.map +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/application.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/application.ts"],"names":[],"mappings":";;;AAAA,kEAQsC;AAEtC,4EAM6C;AAE7C,iDAA8C;AAC9C,2FAAoF;AAOpF,qEAAkE;AAElE,+CAA4C;AAC5C,uCAA0C;AAC1C,uCAA0C;AAC1C,yCAAyE;AACzE,gFAA6E;AAE7E,8EAA2E;AAC3E,qDAI0B;AAE1B;;;;;;;;;;;;GAYG;AACH,MAAa,GAA4B,SAAQ,gCAOhD;IAiBC,YAAY,WAA6B;QACvC,KAAK,CACH,WAAW;QACX,qDAAqD;QACrD,4FAA4F;QAC5F,CAAC,GAAsB,EAAE,EAAE,CAAC,IAAI,eAAS,CAAM,GAAe,CAAC;QAC/D,sEAAsE;QACtE,qCAAoB;QACpB,0DAA0D;QAC1D,yCAAwB;QACxB,wDAAwD;QACxD,2CAA0B;QAC1B,oEAAoE;QACpE,SAAS;QACT,YAAY;QACZ,2BAAY;QACZ,4EAA4E;QAC5E,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,eAAS,CAAM,SAA2B,CAAC;QAC9D,2EAA2E;QAC3E,CAAC,GAA2C,EAAE,EAAE,CAAC,yBAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CACvE,CAAC;QApCI,gBAAW,GAAyB,IAAI,GAAG,EAAE,CAAC;QAG9C,cAAS,GAA0B,IAAI,CAAC;QACxC,gBAAW,GAAmC,IAAI,CAAC;QACnD,aAAQ,GAAkC,IAAI,CAAC;QAC/C,0BAAqB,GAAiC,IAAI,CAAC;QAC3D,gBAAW,GAAuB,IAAI,CAAC;QAE/C;;;;WAIG;QACK,gBAAW,GAAkB,IAAI,CAAC;QAuBxC,IAAI,CAAC,UAAU,GAAG,2BAAgB,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,CAAC,yBAAyB,GAAG,IAAA,uDAAwB,EAAC;YACxD,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,wFAAwF;IACxF,IAAoB,EAAE;QACpB,OAAO,IAAI,CAAC,yBAAyB,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,0FAA0F;IAC1E,QAAQ,CACtB,SAAiB;QAEjB,OAAO,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAI,SAAS,CAAC,CAAC;IACjE,CAAC;IAEe,KAAK,CAAC,KAAK,CAAC,QAAiB;QAC3C,oEAAoE;QACpE,kFAAkF;QAClF,qEAAqE;QACrE,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAuC,EAAE,EAAE;YACvE,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAC1B,OAAO,MAAM,CAAC;QAChB,CAAC,CAAkC,CAAC;QAEpC,gFAAgF;QAChF,0EAA0E;QAC1E,8CAA8C;QAC9C,MAAM,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE5B,oEAAoE;QACpE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,cAAc,CAAC;QAExC,oEAAoE;QAEpE,MAAM,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC;QAElD,2BAA2B;QAC3B,MAAM,UAAU,GAAG,qCAAiB,CAAC,iBAAiB,CAAC;YACrD,SAAS,EAAE,2BAAS,CAAC,KAAK;SAC3B,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,6BAAW,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,oCAAkB,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,8BAAY,EAAE,CAAC;QACxC,4FAA4F;QAC5F,MAAM,YAAY,GAAG,IAAI,uBAAY,CAAM,IAAI,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,sBAAW;QACjC,4FAA4F;QAC5F,IAAI,EACJ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,IAAI,CAAC,WAAW,CAAC,SAAS,CAC3B,CAAC;QAEF,qDAAqD;QACrD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;QAElD,+CAA+C;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,iDAAuB,EAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9D,iDAAiD;QACjD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,+CAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACpE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAA,6BAAQ,EACN,IAAI,CAAC,WAAW,CAAC,KAAK,EACtB,KAAK,EACL,wCAAwC,CACzC,CAAC;QACJ,CAAC;QAED,mEAAmE;QACnE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC;QAED,2CAA2C;QAC3C,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC,WAAW,GAAG,IAAI,gCAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;gBACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC9D,IAAA,6BAAQ,EACN,IAAI,CAAC,WAAW,CAAC,KAAK,EACtB,KAAK,EACL,yCAAyC,CAC1C,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAA,6BAAQ,EACN,IAAI,CAAC,WAAW,CAAC,KAAK,EACtB,KAAK,EACL,qCAAqC,CACtC,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CACV,0EAA0E,EAC1E,OAAO,CACR,CAAC;QACJ,CAAC;IACH,CAAC;IAEe,KAAK,CAAC,IAAI;QACxB,gEAAgE;QAEhE,8BAA8B;QAC9B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAA,6BAAQ,EAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,gCAAgC,CAAC,CAAC;YAC1E,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QAED,yBAAyB;QACzB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAA,6BAAQ,EAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,+BAA+B,CAAC,CAAC;YACzE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,IAAI,CAAC,QAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,2FAA2F;QAC3F,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAEM,aAAa,CAAc,IAAY;QAC5C,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAM,CAAC;IACzC,CAAC;IAEM,aAAa,CAAC,IAAY,EAAE,UAAmB;QACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACI,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,kBAAkB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACI,wBAAwB,CAAC,OAA8B;QAC5D,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,oBAAoB,CAAC,QAA4B;QACtD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,sBAAsB,CAAC,OAA6B;QACzD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,wBAAwB,CAAC,OAA+B;QAC7D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;CACF;AAzRD,kBAyRC"}
|
package/src/lib/constants.js
CHANGED
|
@@ -45,9 +45,9 @@ const expressConsts = (0, node_express_suite_1.createExpressConstants)('brightch
|
|
|
45
45
|
* @see {@link https://github.com/Digital-Defiance/node-express-suite} for base constants
|
|
46
46
|
*/
|
|
47
47
|
exports.Constants = {
|
|
48
|
-
...expressConsts,
|
|
49
48
|
...brightchain_lib_1.CONSTANTS,
|
|
50
|
-
...
|
|
49
|
+
...expressConsts,
|
|
50
|
+
PBKDF2_PROFILES: expressConsts.PBKDF2_PROFILES,
|
|
51
51
|
WRAPPED_KEY: node_ecies_lib_1.WRAPPED_KEY,
|
|
52
52
|
};
|
|
53
53
|
//# sourceMappingURL=constants.js.map
|
package/src/lib/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/constants.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AAEH,kEAA0E;AAC1E,oEAA8D;AAC9D,4EAA6E;AAG7E,MAAM,aAAa,GAAG,IAAA,2CAAsB,EAC1C,iBAAiB,EACjB,iBAAiB,EACjB;IACE,IAAI,EAAE,aAAa;CACpB,CACF,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACU,QAAA,SAAS,GAAkB;IACtC,GAAG,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/constants.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AAEH,kEAA0E;AAC1E,oEAA8D;AAC9D,4EAA6E;AAG7E,MAAM,aAAa,GAAG,IAAA,2CAAsB,EAC1C,iBAAiB,EACjB,iBAAiB,EACjB;IACE,IAAI,EAAE,aAAa;CACpB,CACF,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACU,QAAA,SAAS,GAAkB;IACtC,GAAG,2BAAa;IAChB,GAAG,aAAa;IAChB,eAAe,EAAE,aAAa,CAAC,eAAe;IAC9C,WAAW,EAAX,4BAAW;CACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/blocks.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/blocks.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAGjB,aAAa,EAEd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAQvE,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAQ1D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC;;;GAGG;AACH,oBAAY,cAAc;IACxB,eAAe,oBAAoB;IACnC,uBAAuB,4BAA4B;IACnD,mBAAmB,wBAAwB;IAC3C,0BAA0B,+BAA+B;IACzD,oBAAoB,yBAAyB;IAC7C,gBAAgB,qBAAqB;IACrC,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;CAClC;AAED,KAAK,gBAAgB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,yBAAyB,GACzB,oBAAoB,GACpB,sBAAsB,GACtB,gBAAgB,CAAC;AAErB,UAAU,cAAe,SAAQ,aAAa;IAC5C,UAAU,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;IACtE,QAAQ,EAAE,iBAAiB,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAC;IAClE,gBAAgB,EAAE,iBAAiB,CACjC,yBAAyB,GAAG,gBAAgB,CAC7C,CAAC;IACF,WAAW,EAAE,iBAAiB,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,CAAC;IACxE,aAAa,EAAE,iBAAiB,CAAC,sBAAsB,GAAG,gBAAgB,CAAC,CAAC;CAC7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,qBAAa,gBAAgB,CAC3B,GAAG,SAAS,UAAU,GAAG,oBAAoB,CAC7C,SAAQ,cAAc,CACtB,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,gBAAgB,CACjB;IACC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,WAAW,EAAE,uBAAuB,CAAC,GAAG,CAAC;IAOrD,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAyGtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;YACW,gBAAgB;IAiE9B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;YACW,cAAc;IA8B5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;YACW,sBAAsB;IA+BpC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;YACW,iBAAiB;IA2B/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;YACW,mBAAmB;CAqClC"}
|
|
@@ -81,296 +81,6 @@ var BlockErrorCode;
|
|
|
81
81
|
class BlocksController extends base_1.BaseController {
|
|
82
82
|
constructor(application) {
|
|
83
83
|
super(application);
|
|
84
|
-
/**
|
|
85
|
-
* POST /api/blocks
|
|
86
|
-
* Store a new block with optional durability settings.
|
|
87
|
-
*
|
|
88
|
-
* The block data is stored with the configured durability level, which determines
|
|
89
|
-
* how many parity blocks are generated for FEC recovery:
|
|
90
|
-
* - 'ephemeral': No parity blocks
|
|
91
|
-
* - 'standard': 1 parity block
|
|
92
|
-
* - 'high_durability': 2+ parity blocks
|
|
93
|
-
*
|
|
94
|
-
* @param req - Request containing base64-encoded block data and options
|
|
95
|
-
* @returns Block ID and metadata on success, or error response
|
|
96
|
-
*
|
|
97
|
-
* @example
|
|
98
|
-
* ```json
|
|
99
|
-
* // Request
|
|
100
|
-
* POST /api/blocks
|
|
101
|
-
* {
|
|
102
|
-
* "data": "SGVsbG8gV29ybGQ=",
|
|
103
|
-
* "options": {
|
|
104
|
-
* "durabilityLevel": "standard",
|
|
105
|
-
* "expiresAt": "2025-12-31T23:59:59Z"
|
|
106
|
-
* }
|
|
107
|
-
* }
|
|
108
|
-
*
|
|
109
|
-
* // Response
|
|
110
|
-
* {
|
|
111
|
-
* "blockId": "abc123...",
|
|
112
|
-
* "success": true,
|
|
113
|
-
* "metadata": {
|
|
114
|
-
* "blockId": "abc123...",
|
|
115
|
-
* "durabilityLevel": "standard",
|
|
116
|
-
* "parityBlockIds": ["abc123.p0"],
|
|
117
|
-
* ...
|
|
118
|
-
* }
|
|
119
|
-
* }
|
|
120
|
-
* ```
|
|
121
|
-
*/
|
|
122
|
-
this.handleStoreBlock = async (req) => {
|
|
123
|
-
try {
|
|
124
|
-
const { data, canRead = true, canPersist = true, options, } = req.body;
|
|
125
|
-
// Validate required fields
|
|
126
|
-
if (!data) {
|
|
127
|
-
return (0, errorResponse_1.validationError)('Missing required field: data');
|
|
128
|
-
}
|
|
129
|
-
// Get authenticated member from session
|
|
130
|
-
const sessionsController = this.application.getController('sessions');
|
|
131
|
-
let member;
|
|
132
|
-
try {
|
|
133
|
-
member = sessionsController.getMemberFromSession(req.headers.authorization);
|
|
134
|
-
}
|
|
135
|
-
catch {
|
|
136
|
-
return (0, errorResponse_1.unauthorizedError)();
|
|
137
|
-
}
|
|
138
|
-
// Parse options if provided
|
|
139
|
-
const blockStoreOptions = options
|
|
140
|
-
? {
|
|
141
|
-
expiresAt: options.expiresAt
|
|
142
|
-
? new Date(options.expiresAt)
|
|
143
|
-
: undefined,
|
|
144
|
-
durabilityLevel: options.durabilityLevel,
|
|
145
|
-
}
|
|
146
|
-
: undefined;
|
|
147
|
-
const result = await this.blocksService.storeBlock(Buffer.from(data, 'base64'), member, canRead, canPersist, blockStoreOptions);
|
|
148
|
-
return {
|
|
149
|
-
statusCode: 200,
|
|
150
|
-
response: {
|
|
151
|
-
blockId: result.blockId,
|
|
152
|
-
success: true,
|
|
153
|
-
metadata: result.metadata,
|
|
154
|
-
},
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
catch (_error) {
|
|
158
|
-
if (_error instanceof brightchain_lib_1.StoreError) {
|
|
159
|
-
return (0, errorResponse_1.mapStoreError)(_error);
|
|
160
|
-
}
|
|
161
|
-
return (0, errorResponse_1.handleError)(_error);
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
/**
|
|
165
|
-
* GET /api/blocks/:blockId
|
|
166
|
-
* Retrieve a block by its ID.
|
|
167
|
-
*
|
|
168
|
-
* Returns the block data and metadata. The access count and last access
|
|
169
|
-
* timestamp in the metadata are updated on each retrieval.
|
|
170
|
-
*
|
|
171
|
-
* @param req - Request containing the block ID parameter
|
|
172
|
-
* @returns Block data (base64) and metadata on success, or 404 if not found
|
|
173
|
-
*
|
|
174
|
-
* @example
|
|
175
|
-
* ```json
|
|
176
|
-
* // Request
|
|
177
|
-
* GET /api/blocks/abc123...
|
|
178
|
-
*
|
|
179
|
-
* // Response
|
|
180
|
-
* {
|
|
181
|
-
* "blockId": "abc123...",
|
|
182
|
-
* "data": "SGVsbG8gV29ybGQ=",
|
|
183
|
-
* "canRead": true,
|
|
184
|
-
* "canPersist": true,
|
|
185
|
-
* "metadata": { ... }
|
|
186
|
-
* }
|
|
187
|
-
* ```
|
|
188
|
-
*/
|
|
189
|
-
this.handleGetBlock = async (req) => {
|
|
190
|
-
try {
|
|
191
|
-
const { blockId } = req.params;
|
|
192
|
-
if (!blockId) {
|
|
193
|
-
return (0, errorResponse_1.validationError)('Missing required parameter: blockId');
|
|
194
|
-
}
|
|
195
|
-
const block = await this.blocksService.getBlock(blockId);
|
|
196
|
-
return {
|
|
197
|
-
statusCode: 200,
|
|
198
|
-
response: {
|
|
199
|
-
blockId,
|
|
200
|
-
data: block.data,
|
|
201
|
-
canRead: true,
|
|
202
|
-
canPersist: true,
|
|
203
|
-
metadata: block.metadata,
|
|
204
|
-
},
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
catch (_error) {
|
|
208
|
-
if (_error instanceof brightchain_lib_1.StoreError) {
|
|
209
|
-
return (0, errorResponse_1.mapStoreError)(_error);
|
|
210
|
-
}
|
|
211
|
-
return (0, errorResponse_1.handleError)(_error);
|
|
212
|
-
}
|
|
213
|
-
};
|
|
214
|
-
/**
|
|
215
|
-
* GET /api/blocks/:blockId/metadata
|
|
216
|
-
* Get metadata for a block without retrieving the data.
|
|
217
|
-
*
|
|
218
|
-
* Useful for checking block status, durability level, replication status,
|
|
219
|
-
* and access patterns without the overhead of retrieving the full block data.
|
|
220
|
-
*
|
|
221
|
-
* @param req - Request containing the block ID parameter
|
|
222
|
-
* @returns Block metadata on success, or 404 if not found
|
|
223
|
-
*
|
|
224
|
-
* @example
|
|
225
|
-
* ```json
|
|
226
|
-
* // Request
|
|
227
|
-
* GET /api/blocks/abc123.../metadata
|
|
228
|
-
*
|
|
229
|
-
* // Response
|
|
230
|
-
* {
|
|
231
|
-
* "blockId": "abc123...",
|
|
232
|
-
* "metadata": {
|
|
233
|
-
* "blockId": "abc123...",
|
|
234
|
-
* "createdAt": "2025-01-15T10:00:00Z",
|
|
235
|
-
* "durabilityLevel": "standard",
|
|
236
|
-
* "parityBlockIds": ["abc123.p0"],
|
|
237
|
-
* "accessCount": 5,
|
|
238
|
-
* "lastAccessedAt": "2025-01-16T14:30:00Z",
|
|
239
|
-
* "replicationStatus": "replicated",
|
|
240
|
-
* "size": 4096,
|
|
241
|
-
* "checksum": "abc123..."
|
|
242
|
-
* }
|
|
243
|
-
* }
|
|
244
|
-
* ```
|
|
245
|
-
*/
|
|
246
|
-
this.handleGetBlockMetadata = async (req) => {
|
|
247
|
-
try {
|
|
248
|
-
const { blockId } = req.params;
|
|
249
|
-
if (!blockId) {
|
|
250
|
-
return (0, errorResponse_1.validationError)('Missing required parameter: blockId');
|
|
251
|
-
}
|
|
252
|
-
const metadata = await this.blocksService.getBlockMetadata(blockId);
|
|
253
|
-
if (!metadata) {
|
|
254
|
-
return (0, errorResponse_1.notFoundError)('Block', blockId);
|
|
255
|
-
}
|
|
256
|
-
return {
|
|
257
|
-
statusCode: 200,
|
|
258
|
-
response: {
|
|
259
|
-
blockId,
|
|
260
|
-
metadata,
|
|
261
|
-
},
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
catch (_error) {
|
|
265
|
-
if (_error instanceof brightchain_lib_1.StoreError) {
|
|
266
|
-
return (0, errorResponse_1.mapStoreError)(_error);
|
|
267
|
-
}
|
|
268
|
-
return (0, errorResponse_1.handleError)(_error);
|
|
269
|
-
}
|
|
270
|
-
};
|
|
271
|
-
/**
|
|
272
|
-
* DELETE /api/blocks/:blockId
|
|
273
|
-
* Delete a block and its associated parity blocks.
|
|
274
|
-
*
|
|
275
|
-
* This operation removes:
|
|
276
|
-
* - The block data file
|
|
277
|
-
* - All associated parity block files
|
|
278
|
-
* - The block metadata
|
|
279
|
-
*
|
|
280
|
-
* @param req - Request containing the block ID parameter
|
|
281
|
-
* @returns Success confirmation on success, or 404 if not found
|
|
282
|
-
*
|
|
283
|
-
* @example
|
|
284
|
-
* ```json
|
|
285
|
-
* // Request
|
|
286
|
-
* DELETE /api/blocks/abc123...
|
|
287
|
-
*
|
|
288
|
-
* // Response
|
|
289
|
-
* {
|
|
290
|
-
* "blockId": "abc123...",
|
|
291
|
-
* "success": true
|
|
292
|
-
* }
|
|
293
|
-
* ```
|
|
294
|
-
*/
|
|
295
|
-
this.handleDeleteBlock = async (req) => {
|
|
296
|
-
try {
|
|
297
|
-
const { blockId } = req.params;
|
|
298
|
-
if (!blockId) {
|
|
299
|
-
return (0, errorResponse_1.validationError)('Missing required parameter: blockId');
|
|
300
|
-
}
|
|
301
|
-
await this.blocksService.deleteBlock(blockId);
|
|
302
|
-
return {
|
|
303
|
-
statusCode: 200,
|
|
304
|
-
response: {
|
|
305
|
-
blockId,
|
|
306
|
-
success: true,
|
|
307
|
-
},
|
|
308
|
-
};
|
|
309
|
-
}
|
|
310
|
-
catch (_error) {
|
|
311
|
-
if (_error instanceof brightchain_lib_1.StoreError) {
|
|
312
|
-
return (0, errorResponse_1.mapStoreError)(_error);
|
|
313
|
-
}
|
|
314
|
-
return (0, errorResponse_1.handleError)(_error);
|
|
315
|
-
}
|
|
316
|
-
};
|
|
317
|
-
/**
|
|
318
|
-
* POST /api/blocks/brighten
|
|
319
|
-
* Brighten a block by XORing it with random blocks for Owner-Free storage.
|
|
320
|
-
*
|
|
321
|
-
* This operation implements the Owner-Free storage pattern where the original
|
|
322
|
-
* data cannot be reconstructed without all the random blocks used in the
|
|
323
|
-
* XOR operation. The brightened block is stored and its ID is returned along
|
|
324
|
-
* with the IDs of all random blocks used.
|
|
325
|
-
*
|
|
326
|
-
* @param req - Request containing block ID and random block count
|
|
327
|
-
* @returns Brightened block ID and list of random block IDs used
|
|
328
|
-
* @throws INSUFFICIENT_RANDOM_BLOCKS if not enough random blocks are available
|
|
329
|
-
*
|
|
330
|
-
* @example
|
|
331
|
-
* ```json
|
|
332
|
-
* // Request
|
|
333
|
-
* POST /api/blocks/brighten
|
|
334
|
-
* {
|
|
335
|
-
* "blockId": "abc123...",
|
|
336
|
-
* "randomBlockCount": 3
|
|
337
|
-
* }
|
|
338
|
-
*
|
|
339
|
-
* // Response
|
|
340
|
-
* {
|
|
341
|
-
* "brightenedBlockId": "def456...",
|
|
342
|
-
* "randomBlockIds": ["rand1...", "rand2...", "rand3..."],
|
|
343
|
-
* "originalBlockId": "abc123..."
|
|
344
|
-
* }
|
|
345
|
-
* ```
|
|
346
|
-
*/
|
|
347
|
-
this.handleBrightenBlock = async (req) => {
|
|
348
|
-
try {
|
|
349
|
-
const { blockId, randomBlockCount } = req.body;
|
|
350
|
-
// Validate required fields
|
|
351
|
-
if (!blockId) {
|
|
352
|
-
return (0, errorResponse_1.validationError)('Missing required field: blockId');
|
|
353
|
-
}
|
|
354
|
-
if (randomBlockCount === undefined || randomBlockCount < 1) {
|
|
355
|
-
return (0, errorResponse_1.validationError)('randomBlockCount must be a positive integer');
|
|
356
|
-
}
|
|
357
|
-
const result = await this.blocksService.brightenBlock(blockId, randomBlockCount);
|
|
358
|
-
return {
|
|
359
|
-
statusCode: 200,
|
|
360
|
-
response: {
|
|
361
|
-
brightenedBlockId: result.brightenedBlockId,
|
|
362
|
-
randomBlockIds: result.randomBlockIds,
|
|
363
|
-
originalBlockId: result.originalBlockId,
|
|
364
|
-
},
|
|
365
|
-
};
|
|
366
|
-
}
|
|
367
|
-
catch (_error) {
|
|
368
|
-
if (_error instanceof brightchain_lib_1.StoreError) {
|
|
369
|
-
return (0, errorResponse_1.mapStoreError)(_error);
|
|
370
|
-
}
|
|
371
|
-
return (0, errorResponse_1.handleError)(_error);
|
|
372
|
-
}
|
|
373
|
-
};
|
|
374
84
|
this.blocksService = blockServiceFactory_1.BlockServiceFactory.getInstance().getService(application);
|
|
375
85
|
}
|
|
376
86
|
initRouteDefinitions() {
|
|
@@ -471,6 +181,296 @@ class BlocksController extends base_1.BaseController {
|
|
|
471
181
|
brightenBlock: this.handleBrightenBlock.bind(this),
|
|
472
182
|
};
|
|
473
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* POST /api/blocks
|
|
186
|
+
* Store a new block with optional durability settings.
|
|
187
|
+
*
|
|
188
|
+
* The block data is stored with the configured durability level, which determines
|
|
189
|
+
* how many parity blocks are generated for FEC recovery:
|
|
190
|
+
* - 'ephemeral': No parity blocks
|
|
191
|
+
* - 'standard': 1 parity block
|
|
192
|
+
* - 'high_durability': 2+ parity blocks
|
|
193
|
+
*
|
|
194
|
+
* @param req - Request containing base64-encoded block data and options
|
|
195
|
+
* @returns Block ID and metadata on success, or error response
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```json
|
|
199
|
+
* // Request
|
|
200
|
+
* POST /api/blocks
|
|
201
|
+
* {
|
|
202
|
+
* "data": "SGVsbG8gV29ybGQ=",
|
|
203
|
+
* "options": {
|
|
204
|
+
* "durabilityLevel": "standard",
|
|
205
|
+
* "expiresAt": "2025-12-31T23:59:59Z"
|
|
206
|
+
* }
|
|
207
|
+
* }
|
|
208
|
+
*
|
|
209
|
+
* // Response
|
|
210
|
+
* {
|
|
211
|
+
* "blockId": "abc123...",
|
|
212
|
+
* "success": true,
|
|
213
|
+
* "metadata": {
|
|
214
|
+
* "blockId": "abc123...",
|
|
215
|
+
* "durabilityLevel": "standard",
|
|
216
|
+
* "parityBlockIds": ["abc123.p0"],
|
|
217
|
+
* ...
|
|
218
|
+
* }
|
|
219
|
+
* }
|
|
220
|
+
* ```
|
|
221
|
+
*/
|
|
222
|
+
async handleStoreBlock(req) {
|
|
223
|
+
try {
|
|
224
|
+
const { data, canRead = true, canPersist = true, options, } = req.body;
|
|
225
|
+
// Validate required fields
|
|
226
|
+
if (!data) {
|
|
227
|
+
return (0, errorResponse_1.validationError)('Missing required field: data');
|
|
228
|
+
}
|
|
229
|
+
// Get authenticated member from session
|
|
230
|
+
const sessionsController = this.application.getController('sessions');
|
|
231
|
+
let member;
|
|
232
|
+
try {
|
|
233
|
+
member = sessionsController.getMemberFromSession(req.headers.authorization);
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return (0, errorResponse_1.unauthorizedError)();
|
|
237
|
+
}
|
|
238
|
+
// Parse options if provided
|
|
239
|
+
const blockStoreOptions = options
|
|
240
|
+
? {
|
|
241
|
+
expiresAt: options.expiresAt
|
|
242
|
+
? new Date(options.expiresAt)
|
|
243
|
+
: undefined,
|
|
244
|
+
durabilityLevel: options.durabilityLevel,
|
|
245
|
+
}
|
|
246
|
+
: undefined;
|
|
247
|
+
const result = await this.blocksService.storeBlock(Buffer.from(data, 'base64'), member, canRead, canPersist, blockStoreOptions);
|
|
248
|
+
return {
|
|
249
|
+
statusCode: 200,
|
|
250
|
+
response: {
|
|
251
|
+
blockId: result.blockId,
|
|
252
|
+
success: true,
|
|
253
|
+
metadata: result.metadata,
|
|
254
|
+
},
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
catch (_error) {
|
|
258
|
+
if (_error instanceof brightchain_lib_1.StoreError) {
|
|
259
|
+
return (0, errorResponse_1.mapStoreError)(_error);
|
|
260
|
+
}
|
|
261
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* GET /api/blocks/:blockId
|
|
266
|
+
* Retrieve a block by its ID.
|
|
267
|
+
*
|
|
268
|
+
* Returns the block data and metadata. The access count and last access
|
|
269
|
+
* timestamp in the metadata are updated on each retrieval.
|
|
270
|
+
*
|
|
271
|
+
* @param req - Request containing the block ID parameter
|
|
272
|
+
* @returns Block data (base64) and metadata on success, or 404 if not found
|
|
273
|
+
*
|
|
274
|
+
* @example
|
|
275
|
+
* ```json
|
|
276
|
+
* // Request
|
|
277
|
+
* GET /api/blocks/abc123...
|
|
278
|
+
*
|
|
279
|
+
* // Response
|
|
280
|
+
* {
|
|
281
|
+
* "blockId": "abc123...",
|
|
282
|
+
* "data": "SGVsbG8gV29ybGQ=",
|
|
283
|
+
* "canRead": true,
|
|
284
|
+
* "canPersist": true,
|
|
285
|
+
* "metadata": { ... }
|
|
286
|
+
* }
|
|
287
|
+
* ```
|
|
288
|
+
*/
|
|
289
|
+
async handleGetBlock(req) {
|
|
290
|
+
try {
|
|
291
|
+
const { blockId } = req.params;
|
|
292
|
+
if (!blockId) {
|
|
293
|
+
return (0, errorResponse_1.validationError)('Missing required parameter: blockId');
|
|
294
|
+
}
|
|
295
|
+
const block = await this.blocksService.getBlock(blockId);
|
|
296
|
+
return {
|
|
297
|
+
statusCode: 200,
|
|
298
|
+
response: {
|
|
299
|
+
blockId,
|
|
300
|
+
data: block.data,
|
|
301
|
+
canRead: true,
|
|
302
|
+
canPersist: true,
|
|
303
|
+
metadata: block.metadata,
|
|
304
|
+
},
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
catch (_error) {
|
|
308
|
+
if (_error instanceof brightchain_lib_1.StoreError) {
|
|
309
|
+
return (0, errorResponse_1.mapStoreError)(_error);
|
|
310
|
+
}
|
|
311
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* GET /api/blocks/:blockId/metadata
|
|
316
|
+
* Get metadata for a block without retrieving the data.
|
|
317
|
+
*
|
|
318
|
+
* Useful for checking block status, durability level, replication status,
|
|
319
|
+
* and access patterns without the overhead of retrieving the full block data.
|
|
320
|
+
*
|
|
321
|
+
* @param req - Request containing the block ID parameter
|
|
322
|
+
* @returns Block metadata on success, or 404 if not found
|
|
323
|
+
*
|
|
324
|
+
* @example
|
|
325
|
+
* ```json
|
|
326
|
+
* // Request
|
|
327
|
+
* GET /api/blocks/abc123.../metadata
|
|
328
|
+
*
|
|
329
|
+
* // Response
|
|
330
|
+
* {
|
|
331
|
+
* "blockId": "abc123...",
|
|
332
|
+
* "metadata": {
|
|
333
|
+
* "blockId": "abc123...",
|
|
334
|
+
* "createdAt": "2025-01-15T10:00:00Z",
|
|
335
|
+
* "durabilityLevel": "standard",
|
|
336
|
+
* "parityBlockIds": ["abc123.p0"],
|
|
337
|
+
* "accessCount": 5,
|
|
338
|
+
* "lastAccessedAt": "2025-01-16T14:30:00Z",
|
|
339
|
+
* "replicationStatus": "replicated",
|
|
340
|
+
* "size": 4096,
|
|
341
|
+
* "checksum": "abc123..."
|
|
342
|
+
* }
|
|
343
|
+
* }
|
|
344
|
+
* ```
|
|
345
|
+
*/
|
|
346
|
+
async handleGetBlockMetadata(req) {
|
|
347
|
+
try {
|
|
348
|
+
const { blockId } = req.params;
|
|
349
|
+
if (!blockId) {
|
|
350
|
+
return (0, errorResponse_1.validationError)('Missing required parameter: blockId');
|
|
351
|
+
}
|
|
352
|
+
const metadata = await this.blocksService.getBlockMetadata(blockId);
|
|
353
|
+
if (!metadata) {
|
|
354
|
+
return (0, errorResponse_1.notFoundError)('Block', blockId);
|
|
355
|
+
}
|
|
356
|
+
return {
|
|
357
|
+
statusCode: 200,
|
|
358
|
+
response: {
|
|
359
|
+
blockId,
|
|
360
|
+
metadata,
|
|
361
|
+
},
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
catch (_error) {
|
|
365
|
+
if (_error instanceof brightchain_lib_1.StoreError) {
|
|
366
|
+
return (0, errorResponse_1.mapStoreError)(_error);
|
|
367
|
+
}
|
|
368
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* DELETE /api/blocks/:blockId
|
|
373
|
+
* Delete a block and its associated parity blocks.
|
|
374
|
+
*
|
|
375
|
+
* This operation removes:
|
|
376
|
+
* - The block data file
|
|
377
|
+
* - All associated parity block files
|
|
378
|
+
* - The block metadata
|
|
379
|
+
*
|
|
380
|
+
* @param req - Request containing the block ID parameter
|
|
381
|
+
* @returns Success confirmation on success, or 404 if not found
|
|
382
|
+
*
|
|
383
|
+
* @example
|
|
384
|
+
* ```json
|
|
385
|
+
* // Request
|
|
386
|
+
* DELETE /api/blocks/abc123...
|
|
387
|
+
*
|
|
388
|
+
* // Response
|
|
389
|
+
* {
|
|
390
|
+
* "blockId": "abc123...",
|
|
391
|
+
* "success": true
|
|
392
|
+
* }
|
|
393
|
+
* ```
|
|
394
|
+
*/
|
|
395
|
+
async handleDeleteBlock(req) {
|
|
396
|
+
try {
|
|
397
|
+
const { blockId } = req.params;
|
|
398
|
+
if (!blockId) {
|
|
399
|
+
return (0, errorResponse_1.validationError)('Missing required parameter: blockId');
|
|
400
|
+
}
|
|
401
|
+
await this.blocksService.deleteBlock(blockId);
|
|
402
|
+
return {
|
|
403
|
+
statusCode: 200,
|
|
404
|
+
response: {
|
|
405
|
+
blockId,
|
|
406
|
+
success: true,
|
|
407
|
+
},
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
catch (_error) {
|
|
411
|
+
if (_error instanceof brightchain_lib_1.StoreError) {
|
|
412
|
+
return (0, errorResponse_1.mapStoreError)(_error);
|
|
413
|
+
}
|
|
414
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* POST /api/blocks/brighten
|
|
419
|
+
* Brighten a block by XORing it with random blocks for Owner-Free storage.
|
|
420
|
+
*
|
|
421
|
+
* This operation implements the Owner-Free storage pattern where the original
|
|
422
|
+
* data cannot be reconstructed without all the random blocks used in the
|
|
423
|
+
* XOR operation. The brightened block is stored and its ID is returned along
|
|
424
|
+
* with the IDs of all random blocks used.
|
|
425
|
+
*
|
|
426
|
+
* @param req - Request containing block ID and random block count
|
|
427
|
+
* @returns Brightened block ID and list of random block IDs used
|
|
428
|
+
* @throws INSUFFICIENT_RANDOM_BLOCKS if not enough random blocks are available
|
|
429
|
+
*
|
|
430
|
+
* @example
|
|
431
|
+
* ```json
|
|
432
|
+
* // Request
|
|
433
|
+
* POST /api/blocks/brighten
|
|
434
|
+
* {
|
|
435
|
+
* "blockId": "abc123...",
|
|
436
|
+
* "randomBlockCount": 3
|
|
437
|
+
* }
|
|
438
|
+
*
|
|
439
|
+
* // Response
|
|
440
|
+
* {
|
|
441
|
+
* "brightenedBlockId": "def456...",
|
|
442
|
+
* "randomBlockIds": ["rand1...", "rand2...", "rand3..."],
|
|
443
|
+
* "originalBlockId": "abc123..."
|
|
444
|
+
* }
|
|
445
|
+
* ```
|
|
446
|
+
*/
|
|
447
|
+
async handleBrightenBlock(req) {
|
|
448
|
+
try {
|
|
449
|
+
const { blockId, randomBlockCount } = req.body;
|
|
450
|
+
// Validate required fields
|
|
451
|
+
if (!blockId) {
|
|
452
|
+
return (0, errorResponse_1.validationError)('Missing required field: blockId');
|
|
453
|
+
}
|
|
454
|
+
if (randomBlockCount === undefined || randomBlockCount < 1) {
|
|
455
|
+
return (0, errorResponse_1.validationError)('randomBlockCount must be a positive integer');
|
|
456
|
+
}
|
|
457
|
+
const result = await this.blocksService.brightenBlock(blockId, randomBlockCount);
|
|
458
|
+
return {
|
|
459
|
+
statusCode: 200,
|
|
460
|
+
response: {
|
|
461
|
+
brightenedBlockId: result.brightenedBlockId,
|
|
462
|
+
randomBlockIds: result.randomBlockIds,
|
|
463
|
+
originalBlockId: result.originalBlockId,
|
|
464
|
+
},
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
catch (_error) {
|
|
468
|
+
if (_error instanceof brightchain_lib_1.StoreError) {
|
|
469
|
+
return (0, errorResponse_1.mapStoreError)(_error);
|
|
470
|
+
}
|
|
471
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
474
|
}
|
|
475
475
|
exports.BlocksController = BlocksController;
|
|
476
476
|
//# sourceMappingURL=blocks.js.map
|