spec-3nweb-server 1.6.0 → 1.6.3

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.
@@ -153,10 +153,12 @@ class Store extends user_files_1.UserFiles {
153
153
  await spaceTracker.change(this, byteLen);
154
154
  }
155
155
  const params = {
156
- isNewObj: opts.create,
157
156
  version: opts.ver,
158
157
  baseVersion: (diff ? diff.baseVersion : undefined)
159
158
  };
159
+ if (opts.ver === 1) {
160
+ params.isNewObj = true;
161
+ }
160
162
  const trans = await this.transactions.startNew(objId, params);
161
163
  let file;
162
164
  try {
@@ -401,7 +403,7 @@ class Store extends user_files_1.UserFiles {
401
403
  throw exports.SC.OBJ_UNKNOWN;
402
404
  }
403
405
  if (status.currentVersion !== version) {
404
- throw exports.SC.OBJ_VER_UNKNOWN;
406
+ throw makeMismatchedObjVerException(status.currentVersion);
405
407
  }
406
408
  const arch = status.archivedVersions;
407
409
  if (Array.isArray(arch)) {
@@ -653,7 +655,7 @@ class ObjTransactions {
653
655
  if (status.state !== 'current') {
654
656
  throw exports.SC.OBJ_UNKNOWN;
655
657
  }
656
- else if (trans.version <= status.currentVersion) {
658
+ else if (trans.version !== (status.currentVersion + 1)) {
657
659
  throw makeMismatchedObjVerException(status.currentVersion);
658
660
  }
659
661
  }
@@ -728,7 +730,7 @@ class ObjTransactions {
728
730
  Object.freeze(ObjStatuses.prototype);
729
731
  Object.freeze(ObjStatuses);
730
732
  function toFName(version) {
731
- return `${version}.`;
733
+ return `${version}.v`;
732
734
  }
733
735
  function noop() { }
734
736
  Object.freeze(exports);
@@ -38,10 +38,17 @@ function archiveCurrentObjVersion(root, archiveObjVerFunc) {
38
38
  }
39
39
  catch (err) {
40
40
  if ("string" !== typeof err) {
41
- next(err);
42
- }
43
- else if (err === users_1.SC.OBJ_VER_UNKNOWN) {
44
- res.status(SC.unknownObjVer).send(`Object ${objId} version ${version} is not current.`);
41
+ if (err.type === 'mismatched-obj-ver') {
42
+ const rep = {
43
+ error: "Current object version doesn't match assumed one.",
44
+ current_version: err.current_version
45
+ };
46
+ res.set(owner_1.HTTP_HEADER.objVersion, `${err.current_version}`);
47
+ res.status(owner_1.archiveObj.SC.mismatchedObjVer).json(rep);
48
+ }
49
+ else {
50
+ next(err);
51
+ }
45
52
  }
46
53
  else if (err === users_1.SC.OBJ_UNKNOWN) {
47
54
  res.status(SC.unknownObj).send(root ?
@@ -53,7 +53,7 @@ function saveCurrentObj(root, saveObjFunc, chunkLimit) {
53
53
  const { fstReq, sndReq } = opts;
54
54
  let diff;
55
55
  if (fstReq) {
56
- if (fstReq.create && objId) {
56
+ if (!root && objId) {
57
57
  if (!buffer_utils_1.base64urlSafe.allCharsFromAlphabet(objId)) {
58
58
  return replyToMalformed(req, "Bad object id", res);
59
59
  }
@@ -171,7 +171,6 @@ function extractQueryOptions(req) {
171
171
  // this is the first request
172
172
  // query fields are string or undefined, yet, type info helps the show
173
173
  const query = req.query;
174
- const create = (query.create === 'true');
175
174
  const ver = parseInt(query.ver);
176
175
  if (isNaN(ver) || (ver < 1)) {
177
176
  return;
@@ -187,7 +186,7 @@ function extractQueryOptions(req) {
187
186
  return;
188
187
  }
189
188
  const last = (query.last === 'true');
190
- return { fstReq: { diff, header, last, ver, create } };
189
+ return { fstReq: { diff, header, last, ver } };
191
190
  }
192
191
  }
193
192
  function getContentLenOrSendError(req, res, maxChunkSize) {
@@ -66,10 +66,6 @@ export interface GetObjQueryOpts {
66
66
  ver?: number;
67
67
  }
68
68
  export interface PutObjFirstQueryOpts {
69
- /**
70
- * This is a flag to indicate that new object should be created.
71
- */
72
- create?: boolean;
73
69
  /**
74
70
  * This parameter is object's new version.
75
71
  */
@@ -132,9 +128,10 @@ export declare namespace currentObj {
132
128
  mismatchedObjVer: number;
133
129
  objIncomplete: number;
134
130
  };
135
- interface MismatchedObjVerReply extends ErrorReply {
136
- current_version: number;
137
- }
131
+ type MismatchedObjVerReply = MismatchedObjVerErrReply;
132
+ }
133
+ export interface MismatchedObjVerErrReply extends ErrorReply {
134
+ current_version: number;
138
135
  }
139
136
  export declare namespace currentRootObj {
140
137
  const EXPRESS_URL_END = "root/current";
@@ -240,23 +237,25 @@ export declare namespace rootStatus {
240
237
  export declare namespace archiveObj {
241
238
  const EXPRESS_URL_END = "obj/:objId/archive";
242
239
  function postAndDelReqUrlEnd(objId: string, version: number): string;
243
- type VersionsList = number[];
240
+ type MismatchedObjVerReply = MismatchedObjVerErrReply;
244
241
  const SC: {
245
242
  okPost: number;
246
243
  okDelete: number;
247
244
  unknownObj: number;
248
245
  unknownObjVer: number;
246
+ mismatchedObjVer: number;
249
247
  };
250
248
  }
251
249
  export declare namespace archiveRoot {
252
250
  const EXPRESS_URL_END = "root/archive";
253
251
  function postAndDelReqUrlEnd(version: number): string;
254
- type VersionsList = archiveObj.VersionsList;
252
+ type MismatchedObjVerReply = archiveObj.MismatchedObjVerReply;
255
253
  const SC: {
256
254
  okPost: number;
257
255
  okDelete: number;
258
256
  unknownObj: number;
259
257
  unknownObjVer: number;
258
+ mismatchedObjVer: number;
260
259
  };
261
260
  }
262
261
  export interface ErrorReply {
@@ -258,7 +258,8 @@ var archiveObj;
258
258
  okPost: 200,
259
259
  okDelete: 200,
260
260
  unknownObj: 474,
261
- unknownObjVer: 494
261
+ unknownObjVer: 494,
262
+ mismatchedObjVer: 495
262
263
  };
263
264
  })(archiveObj = exports.archiveObj || (exports.archiveObj = {}));
264
265
  Object.freeze(archiveObj);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-3nweb-server",
3
- "version": "1.6.0",
3
+ "version": "1.6.3",
4
4
  "description": "3NWeb spec server.",
5
5
  "main": "build/lib.js",
6
6
  "types": "build/lib.d.ts",