@casual-simulation/aux-records 3.0.0 → 3.0.5
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/DataRecordsController.d.ts +9 -2
- package/DataRecordsController.js +25 -1
- package/DataRecordsController.js.map +1 -1
- package/EventRecordsController.d.ts +2 -1
- package/EventRecordsController.js +9 -1
- package/EventRecordsController.js.map +1 -1
- package/FileRecordsController.d.ts +7 -1
- package/FileRecordsController.js +24 -1
- package/FileRecordsController.js.map +1 -1
- package/MemoryRecordsStore.d.ts +5 -1
- package/MemoryRecordsStore.js +18 -0
- package/MemoryRecordsStore.js.map +1 -1
- package/RecordsController.d.ts +34 -7
- package/RecordsController.js +122 -12
- package/RecordsController.js.map +1 -1
- package/RecordsStore.d.ts +39 -0
- package/package.json +2 -2
|
@@ -25,7 +25,14 @@ export declare class DataRecordsController {
|
|
|
25
25
|
recordData(recordKey: string, address: string, data: string, subjectId: string): Promise<RecordDataResult>;
|
|
26
26
|
getData(recordName: string, address: string): Promise<GetDataResult>;
|
|
27
27
|
listData(recordName: string, address: string | null): Promise<ListDataResult>;
|
|
28
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Erases the data in the given record and address.
|
|
30
|
+
* Uses the given record key to access the record and the given subject ID to determine if the user is allowed to access the record.
|
|
31
|
+
* @param recordKey The key that should be used to access the record.
|
|
32
|
+
* @param address The address that the record should be deleted from.
|
|
33
|
+
* @param subjectId THe ID of the user that this request came from.
|
|
34
|
+
*/
|
|
35
|
+
eraseData(recordKey: string, address: string, subjectId: string): Promise<EraseDataResult>;
|
|
29
36
|
}
|
|
30
37
|
export declare type RecordDataResult = RecordDataSuccess | RecordDataFailure;
|
|
31
38
|
export interface RecordDataSuccess {
|
|
@@ -74,7 +81,7 @@ export interface EraseDataSuccess {
|
|
|
74
81
|
}
|
|
75
82
|
export interface EraseDataFailure {
|
|
76
83
|
success: false;
|
|
77
|
-
errorCode: ServerError | EraseDataStoreResult['errorCode'] | ValidatePublicRecordKeyFailure['errorCode'];
|
|
84
|
+
errorCode: ServerError | NotLoggedInError | EraseDataStoreResult['errorCode'] | ValidatePublicRecordKeyFailure['errorCode'];
|
|
78
85
|
errorMessage: string;
|
|
79
86
|
}
|
|
80
87
|
export declare type ListDataResult = ListDataSuccess | ListDataFailure;
|
package/DataRecordsController.js
CHANGED
|
@@ -40,6 +40,16 @@ export class DataRecordsController {
|
|
|
40
40
|
errorMessage: result.errorMessage,
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
|
+
if (!subjectId && result.policy !== 'subjectless') {
|
|
44
|
+
return {
|
|
45
|
+
success: false,
|
|
46
|
+
errorCode: 'not_logged_in',
|
|
47
|
+
errorMessage: 'The user must be logged in in order to record data.',
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (result.policy === 'subjectless') {
|
|
51
|
+
subjectId = null;
|
|
52
|
+
}
|
|
43
53
|
const recordName = result.recordName;
|
|
44
54
|
const result2 = yield this._store.setData(recordName, address, data, result.ownerId, subjectId);
|
|
45
55
|
if (result2.success === false) {
|
|
@@ -109,7 +119,14 @@ export class DataRecordsController {
|
|
|
109
119
|
}
|
|
110
120
|
});
|
|
111
121
|
}
|
|
112
|
-
|
|
122
|
+
/**
|
|
123
|
+
* Erases the data in the given record and address.
|
|
124
|
+
* Uses the given record key to access the record and the given subject ID to determine if the user is allowed to access the record.
|
|
125
|
+
* @param recordKey The key that should be used to access the record.
|
|
126
|
+
* @param address The address that the record should be deleted from.
|
|
127
|
+
* @param subjectId THe ID of the user that this request came from.
|
|
128
|
+
*/
|
|
129
|
+
eraseData(recordKey, address, subjectId) {
|
|
113
130
|
return __awaiter(this, void 0, void 0, function* () {
|
|
114
131
|
try {
|
|
115
132
|
const result = yield this._manager.validatePublicRecordKey(recordKey);
|
|
@@ -120,6 +137,13 @@ export class DataRecordsController {
|
|
|
120
137
|
errorMessage: result.errorMessage,
|
|
121
138
|
};
|
|
122
139
|
}
|
|
140
|
+
if (!subjectId && result.policy !== 'subjectless') {
|
|
141
|
+
return {
|
|
142
|
+
success: false,
|
|
143
|
+
errorCode: 'not_logged_in',
|
|
144
|
+
errorMessage: 'The user must be logged in in order to record data.',
|
|
145
|
+
};
|
|
146
|
+
}
|
|
123
147
|
const recordName = result.recordName;
|
|
124
148
|
const result2 = yield this._store.eraseData(recordName, address);
|
|
125
149
|
if (result2.success === false) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataRecordsController.js","sourceRoot":"","sources":["DataRecordsController.ts"],"names":[],"mappings":";;;;;;;;;AAaA;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAI9B;;;;OAIG;IACH,YAAY,OAA0B,EAAE,KAAuB;QAC3D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED;;;;;;;;OAQG;IACG,UAAU,CACZ,SAAiB,EACjB,OAAe,EACf,IAAY,EACZ,SAAiB;;YAEjB,IAAI;gBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CACtD,SAAS,CACZ,CAAC;gBACF,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE;oBAC1B,OAAO;wBACH,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;qBACpC,CAAC;iBACL;gBAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;gBACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACrC,UAAU,EACV,OAAO,EACP,IAAI,EACJ,MAAM,CAAC,OAAO,EACd,SAAS,CACZ,CAAC;gBAEF,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;oBAC3B,OAAO;wBACH,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;qBACrC,CAAC;iBACL;gBAED,OAAO;oBACH,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,UAAU;oBACtB,OAAO,EAAE,OAAO;iBACnB,CAAC;aACL;YAAC,OAAO,GAAG,EAAE;gBACV,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,cAAc;oBACzB,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE;iBAC/B,CAAC;aACL;QACL,CAAC;KAAA;IAEK,OAAO,CAAC,UAAkB,EAAE,OAAe;;YAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC9D,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE;gBAC1B,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;iBACpC,CAAC;aACL;YAED,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,UAAU;aACb,CAAC;QACN,CAAC;KAAA;IAEK,QAAQ,CACV,UAAkB,EAClB,OAAsB;;YAEtB,IAAI;gBACA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAEhE,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;oBAC3B,OAAO;wBACH,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;qBACrC,CAAC;iBACL;gBAED,OAAO;oBACH,OAAO,EAAE,IAAI;oBACb,UAAU;oBACV,KAAK,EAAE,OAAO,CAAC,KAAK;iBACvB,CAAC;aACL;YAAC,OAAO,GAAG,EAAE;gBACV,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,cAAc;oBACzB,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE;iBAC/B,CAAC;aACL;QACL,CAAC;KAAA;
|
|
1
|
+
{"version":3,"file":"DataRecordsController.js","sourceRoot":"","sources":["DataRecordsController.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,8 +18,9 @@ export declare class EventRecordsController {
|
|
|
18
18
|
* @param recordKey The record key that should be used to add the events.
|
|
19
19
|
* @param eventName The name of the events to record.
|
|
20
20
|
* @param count The number of events to add/subtract.
|
|
21
|
+
* @param subjectId The ID of the user that is adding the count.
|
|
21
22
|
*/
|
|
22
|
-
addCount(recordKey: string, eventName: string, count: number): Promise<AddCountResult>;
|
|
23
|
+
addCount(recordKey: string, eventName: string, count: number, subjectId: string): Promise<AddCountResult>;
|
|
23
24
|
/**
|
|
24
25
|
* Gets the current count of events with the given name from the given record.
|
|
25
26
|
* @param recordName The name of the record.
|
|
@@ -25,8 +25,9 @@ export class EventRecordsController {
|
|
|
25
25
|
* @param recordKey The record key that should be used to add the events.
|
|
26
26
|
* @param eventName The name of the events to record.
|
|
27
27
|
* @param count The number of events to add/subtract.
|
|
28
|
+
* @param subjectId The ID of the user that is adding the count.
|
|
28
29
|
*/
|
|
29
|
-
addCount(recordKey, eventName, count) {
|
|
30
|
+
addCount(recordKey, eventName, count, subjectId) {
|
|
30
31
|
return __awaiter(this, void 0, void 0, function* () {
|
|
31
32
|
try {
|
|
32
33
|
const result = yield this._manager.validatePublicRecordKey(recordKey);
|
|
@@ -37,6 +38,13 @@ export class EventRecordsController {
|
|
|
37
38
|
errorMessage: result.errorMessage,
|
|
38
39
|
};
|
|
39
40
|
}
|
|
41
|
+
if (!subjectId && result.policy !== 'subjectless') {
|
|
42
|
+
return {
|
|
43
|
+
success: false,
|
|
44
|
+
errorCode: 'not_logged_in',
|
|
45
|
+
errorMessage: 'The user must be logged in in order to record events.',
|
|
46
|
+
};
|
|
47
|
+
}
|
|
40
48
|
const recordName = result.recordName;
|
|
41
49
|
const result2 = yield this._store.addEventCount(recordName, eventName, count);
|
|
42
50
|
if (result2.success === true) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventRecordsController.js","sourceRoot":"","sources":["EventRecordsController.ts"],"names":[],"mappings":";;;;;;;;;AAWA;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAI/B;;;;OAIG;IACH,YAAY,OAA0B,EAAE,KAAwB;QAC5D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"EventRecordsController.js","sourceRoot":"","sources":["EventRecordsController.ts"],"names":[],"mappings":";;;;;;;;;AAWA;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAI/B;;;;OAIG;IACH,YAAY,OAA0B,EAAE,KAAwB;QAC5D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED;;;;;;OAMG;IACG,QAAQ,CACV,SAAiB,EACjB,SAAiB,EACjB,KAAa,EACb,SAAiB;;YAEjB,IAAI;gBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CACtD,SAAS,CACZ,CAAC;gBACF,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE;oBAC1B,OAAO;wBACH,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;qBACpC,CAAC;iBACL;gBAED,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE;oBAC/C,OAAO;wBACH,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,eAAe;wBAC1B,YAAY,EAAE,uDAAuD;qBACxE,CAAC;iBACL;gBAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;gBACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAC3C,UAAU,EACV,SAAS,EACT,KAAK,CACR,CAAC;gBAEF,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE;oBAC1B,OAAO;wBACH,OAAO,EAAE,IAAI;wBACb,UAAU,EAAE,KAAK;wBACjB,SAAS,EAAE,SAAS;wBACpB,UAAU,EAAE,UAAU;qBACzB,CAAC;iBACL;qBAAM;oBACH,OAAO;wBACH,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;qBACrC,CAAC;iBACL;aACJ;YAAC,OAAO,GAAG,EAAE;gBACV,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,cAAc;oBACzB,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE;iBAC/B,CAAC;aACL;QACL,CAAC;KAAA;IAED;;;;OAIG;IACG,QAAQ,CACV,UAAkB,EAClB,SAAiB;;YAEjB,IAAI;gBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAC1C,UAAU,EACV,SAAS,CACZ,CAAC;gBAEF,IAAI,MAAM,CAAC,OAAO,EAAE;oBAChB,OAAO;wBACH,OAAO,EAAE,IAAI;wBACb,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,SAAS,EAAE,SAAS;wBACpB,UAAU,EAAE,UAAU;qBACzB,CAAC;iBACL;qBAAM;oBACH,OAAO;wBACH,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;qBACpC,CAAC;iBACL;aACJ;YAAC,OAAO,GAAG,EAAE;gBACV,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,cAAc;oBACzB,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE;iBAC/B,CAAC;aACL;QACL,CAAC;KAAA;CACJ"}
|
|
@@ -9,7 +9,13 @@ export declare class FileRecordsController {
|
|
|
9
9
|
private _store;
|
|
10
10
|
constructor(controller: RecordsController, store: FileRecordsStore);
|
|
11
11
|
recordFile(recordKey: string, userId: string, request: RecordFileRequest): Promise<RecordFileResult>;
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Attempts to erase the given file using the given record key and subject.
|
|
14
|
+
* @param recordKey The key that should be used to erase the file.
|
|
15
|
+
* @param fileName The name of the file.
|
|
16
|
+
* @param subjectId The ID of the user that is making this request.
|
|
17
|
+
*/
|
|
18
|
+
eraseFile(recordKey: string, fileName: string, subjectId: string): Promise<EraseFileResult>;
|
|
13
19
|
markFileAsUploaded(recordName: string, fileName: string): Promise<FileUploadedResult>;
|
|
14
20
|
}
|
|
15
21
|
/**
|
package/FileRecordsController.js
CHANGED
|
@@ -23,6 +23,16 @@ export class FileRecordsController {
|
|
|
23
23
|
if (keyResult.success === false) {
|
|
24
24
|
return keyResult;
|
|
25
25
|
}
|
|
26
|
+
if (!userId && keyResult.policy !== 'subjectless') {
|
|
27
|
+
return {
|
|
28
|
+
success: false,
|
|
29
|
+
errorCode: 'not_logged_in',
|
|
30
|
+
errorMessage: 'The user must be logged in in order to record files.',
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (keyResult.policy === 'subjectless') {
|
|
34
|
+
userId = null;
|
|
35
|
+
}
|
|
26
36
|
const publisherId = keyResult.ownerId;
|
|
27
37
|
const recordName = keyResult.recordName;
|
|
28
38
|
const subjectId = userId;
|
|
@@ -91,13 +101,26 @@ export class FileRecordsController {
|
|
|
91
101
|
}
|
|
92
102
|
});
|
|
93
103
|
}
|
|
94
|
-
|
|
104
|
+
/**
|
|
105
|
+
* Attempts to erase the given file using the given record key and subject.
|
|
106
|
+
* @param recordKey The key that should be used to erase the file.
|
|
107
|
+
* @param fileName The name of the file.
|
|
108
|
+
* @param subjectId The ID of the user that is making this request.
|
|
109
|
+
*/
|
|
110
|
+
eraseFile(recordKey, fileName, subjectId) {
|
|
95
111
|
return __awaiter(this, void 0, void 0, function* () {
|
|
96
112
|
try {
|
|
97
113
|
const keyResult = yield this._controller.validatePublicRecordKey(recordKey);
|
|
98
114
|
if (keyResult.success === false) {
|
|
99
115
|
return keyResult;
|
|
100
116
|
}
|
|
117
|
+
if (!subjectId && keyResult.policy !== 'subjectless') {
|
|
118
|
+
return {
|
|
119
|
+
success: false,
|
|
120
|
+
errorCode: 'not_logged_in',
|
|
121
|
+
errorMessage: 'The user must be logged in in order to erase files.',
|
|
122
|
+
};
|
|
123
|
+
}
|
|
101
124
|
const publisherId = keyResult.ownerId;
|
|
102
125
|
const recordName = keyResult.recordName;
|
|
103
126
|
const eraseResult = yield this._store.eraseFileRecord(recordName, fileName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileRecordsController.js","sourceRoot":"","sources":["FileRecordsController.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FileRecordsController.js","sourceRoot":"","sources":["FileRecordsController.ts"],"names":[],"mappings":"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"}
|
package/MemoryRecordsStore.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import { Record, RecordsStore } from './RecordsStore';
|
|
1
|
+
import { Record, RecordKey, RecordsStore } from './RecordsStore';
|
|
2
2
|
export declare class MemoryRecordsStore implements RecordsStore {
|
|
3
3
|
private _records;
|
|
4
|
+
private _recordKeys;
|
|
5
|
+
get recordKeys(): RecordKey[];
|
|
4
6
|
getRecordByName(name: string): Promise<Record>;
|
|
5
7
|
updateRecord(record: Record): Promise<void>;
|
|
6
8
|
addRecord(record: Record): Promise<void>;
|
|
9
|
+
addRecordKey(key: RecordKey): Promise<void>;
|
|
10
|
+
getRecordKeyByRecordAndHash(recordName: string, hash: string): Promise<RecordKey>;
|
|
7
11
|
}
|
|
8
12
|
//# sourceMappingURL=MemoryRecordsStore.d.ts.map
|
package/MemoryRecordsStore.js
CHANGED
|
@@ -10,6 +10,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
export class MemoryRecordsStore {
|
|
11
11
|
constructor() {
|
|
12
12
|
this._records = [];
|
|
13
|
+
this._recordKeys = [];
|
|
14
|
+
}
|
|
15
|
+
get recordKeys() {
|
|
16
|
+
return this._recordKeys;
|
|
13
17
|
}
|
|
14
18
|
getRecordByName(name) {
|
|
15
19
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -33,5 +37,19 @@ export class MemoryRecordsStore {
|
|
|
33
37
|
}
|
|
34
38
|
});
|
|
35
39
|
}
|
|
40
|
+
addRecordKey(key) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const existingKeyIndex = this._recordKeys.findIndex((k) => k.recordName === key.recordName && k.secretHash === key.secretHash);
|
|
43
|
+
if (existingKeyIndex < 0) {
|
|
44
|
+
this._recordKeys.push(key);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
getRecordKeyByRecordAndHash(recordName, hash) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
const key = this._recordKeys.find(k => k.recordName === recordName && k.secretHash == hash);
|
|
51
|
+
return key;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
36
54
|
}
|
|
37
55
|
//# sourceMappingURL=MemoryRecordsStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryRecordsStore.js","sourceRoot":"","sources":["MemoryRecordsStore.ts"],"names":[],"mappings":";;;;;;;;;AAEA,MAAM,OAAO,kBAAkB;IAA/B;QACY,aAAQ,GAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoryRecordsStore.js","sourceRoot":"","sources":["MemoryRecordsStore.ts"],"names":[],"mappings":";;;;;;;;;AAEA,MAAM,OAAO,kBAAkB;IAA/B;QACY,aAAQ,GAAa,EAAE,CAAC;QACxB,gBAAW,GAAgB,EAAE,CAAC;IA0C1C,CAAC;IAxCG,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAEK,eAAe,CAAC,IAAY;;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC;QAClB,CAAC;KAAA;IAEK,YAAY,CAAC,MAAc;;YAC7B,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAChC,CAAC;YACF,IAAI,mBAAmB,IAAI,CAAC,EAAE;gBAC1B,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC;aAC/C;QACL,CAAC;KAAA;IAEK,SAAS,CAAC,MAAc;;YAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAChC,CAAC;YACF,IAAI,mBAAmB,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC9B;QACL,CAAC;KAAA;IAEK,YAAY,CAAC,GAAc;;YAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,CAC5E,CAAC;YACF,IAAI,gBAAgB,GAAG,CAAC,EAAE;gBACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC9B;QACL,CAAC;KAAA;IAEK,2BAA2B,CAAC,UAAkB,EAAE,IAAY;;YAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;YAC5F,OAAO,GAAG,CAAC;QACf,CAAC;KAAA;CACJ"}
|
package/RecordsController.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { RecordsStore } from './RecordsStore';
|
|
2
|
-
import { ServerError } from './Errors';
|
|
1
|
+
import { PublicRecordKeyPolicy, RecordsStore } from './RecordsStore';
|
|
2
|
+
import { NotLoggedInError, ServerError } from './Errors';
|
|
3
3
|
/**
|
|
4
4
|
* Defines a class that manages records and their keys.
|
|
5
5
|
*/
|
|
@@ -9,10 +9,11 @@ export declare class RecordsController {
|
|
|
9
9
|
/**
|
|
10
10
|
* Creates a new public record key for the given bucket name.
|
|
11
11
|
* @param name The name of the record.
|
|
12
|
+
* @param policy The policy that should be used for the public record key.
|
|
12
13
|
* @param userId The ID of the user that is creating the public record.
|
|
13
14
|
* @returns
|
|
14
15
|
*/
|
|
15
|
-
createPublicRecordKey(name: string, userId: string): Promise<CreatePublicRecordKeyResult>;
|
|
16
|
+
createPublicRecordKey(name: string, policy: PublicRecordKeyPolicy, userId: string): Promise<CreatePublicRecordKeyResult>;
|
|
16
17
|
/**
|
|
17
18
|
* Validates the given record key. Returns success if the key is valid and can be used to publish things to its bucket.
|
|
18
19
|
* @param key The key that should be validated.
|
|
@@ -34,6 +35,10 @@ export interface ValidatePublicRecordKeySuccess {
|
|
|
34
35
|
* The ID of the user that owns the record.
|
|
35
36
|
*/
|
|
36
37
|
ownerId: string;
|
|
38
|
+
/**
|
|
39
|
+
* The policy for the record key.
|
|
40
|
+
*/
|
|
41
|
+
policy: PublicRecordKeyPolicy;
|
|
37
42
|
}
|
|
38
43
|
/**
|
|
39
44
|
* Defines an interface that represents a failed "validate public record key" result.
|
|
@@ -84,7 +89,7 @@ export interface CreatePublicRecordKeyFailure {
|
|
|
84
89
|
/**
|
|
85
90
|
* The type of error that occurred.
|
|
86
91
|
*/
|
|
87
|
-
errorCode: UnauthorizedToCreateRecordKeyError | ServerError | 'not_supported';
|
|
92
|
+
errorCode: UnauthorizedToCreateRecordKeyError | NotLoggedInError | 'invalid_policy' | ServerError | 'not_supported';
|
|
88
93
|
/**
|
|
89
94
|
* The error message.
|
|
90
95
|
*/
|
|
@@ -99,19 +104,41 @@ export declare type UnauthorizedToCreateRecordKeyError = 'unauthorized_to_create
|
|
|
99
104
|
* Defines an error that occurs when an unspecified error occurs while creating a public record key.
|
|
100
105
|
*/
|
|
101
106
|
export declare type InvalidRecordKey = 'invalid_record_key';
|
|
107
|
+
/**
|
|
108
|
+
* The default policy for keys that do not have a specified record key.
|
|
109
|
+
*/
|
|
110
|
+
export declare const DEFAULT_RECORD_KEY_POLICY: PublicRecordKeyPolicy;
|
|
111
|
+
/**
|
|
112
|
+
* Formats the given record name and record secret into a record key.
|
|
113
|
+
* @param recordName The name of the record.
|
|
114
|
+
* @param recordSecret The secret that is used to access the record.
|
|
115
|
+
*/
|
|
116
|
+
export declare function formatV1RecordKey(recordName: string, recordSecret: string): string;
|
|
102
117
|
/**
|
|
103
118
|
* Formats the given record name and record secret into a record key.
|
|
104
119
|
* @param recordName The name of the record.
|
|
105
120
|
* @param recordSecret The secret that is used to access the record.
|
|
121
|
+
* @param keyPolicy The policy that the key uses.
|
|
106
122
|
*/
|
|
107
|
-
export declare function
|
|
123
|
+
export declare function formatV2RecordKey(recordName: string, recordSecret: string, keyPolicy: PublicRecordKeyPolicy): string;
|
|
108
124
|
/**
|
|
109
125
|
* Parses the given record key into a name and password pair.
|
|
110
126
|
* Returns null if the key cannot be parsed.
|
|
111
127
|
* @param key The key to parse.
|
|
112
|
-
* @returns
|
|
113
128
|
*/
|
|
114
|
-
export declare function parseRecordKey(key: string): [name: string, password: string];
|
|
129
|
+
export declare function parseRecordKey(key: string): [name: string, password: string, policy: PublicRecordKeyPolicy];
|
|
130
|
+
/**
|
|
131
|
+
* Parses a version 2 record key into a name, password, and policy trio.
|
|
132
|
+
* Returns null if the key cannot be parsed or if it is not a V2 key.
|
|
133
|
+
* @param key The key to parse.
|
|
134
|
+
*/
|
|
135
|
+
export declare function parseV2RecordKey(key: string): [name: string, password: string, policy: PublicRecordKeyPolicy];
|
|
136
|
+
/**
|
|
137
|
+
* Parses a version 1 record key into a name and password pair.
|
|
138
|
+
* Returns null if the key cannot be parsed or if it is not a V1 key.
|
|
139
|
+
* @param key The key to parse.
|
|
140
|
+
*/
|
|
141
|
+
export declare function parseV1RecordKey(key: string): [name: string, password: string, policy: PublicRecordKeyPolicy];
|
|
115
142
|
/**
|
|
116
143
|
* Determines if the given value is a record key.
|
|
117
144
|
* @param key The value to check.
|
package/RecordsController.js
CHANGED
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { toBase64String, fromBase64String } from './Utils';
|
|
11
|
-
import { hashPasswordWithSalt,
|
|
11
|
+
import { hashPasswordWithSalt, } from '@casual-simulation/crypto';
|
|
12
12
|
import { randomBytes } from 'tweetnacl';
|
|
13
13
|
import { fromByteArray } from 'base64-js';
|
|
14
14
|
/**
|
|
@@ -21,13 +21,28 @@ export class RecordsController {
|
|
|
21
21
|
/**
|
|
22
22
|
* Creates a new public record key for the given bucket name.
|
|
23
23
|
* @param name The name of the record.
|
|
24
|
+
* @param policy The policy that should be used for the public record key.
|
|
24
25
|
* @param userId The ID of the user that is creating the public record.
|
|
25
26
|
* @returns
|
|
26
27
|
*/
|
|
27
|
-
createPublicRecordKey(name, userId) {
|
|
28
|
+
createPublicRecordKey(name, policy, userId) {
|
|
28
29
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
30
|
try {
|
|
31
|
+
if (!userId) {
|
|
32
|
+
return {
|
|
33
|
+
success: false,
|
|
34
|
+
errorCode: 'not_logged_in',
|
|
35
|
+
errorMessage: 'The user must be logged in in order to create a record key.'
|
|
36
|
+
};
|
|
37
|
+
}
|
|
30
38
|
const record = yield this._store.getRecordByName(name);
|
|
39
|
+
if (!!policy && policy !== 'subjectfull' && policy !== 'subjectless') {
|
|
40
|
+
return {
|
|
41
|
+
success: false,
|
|
42
|
+
errorCode: 'invalid_policy',
|
|
43
|
+
errorMessage: 'The record key policy must be either "subjectfull" or "subjectless".'
|
|
44
|
+
};
|
|
45
|
+
}
|
|
31
46
|
if (record) {
|
|
32
47
|
if (record.ownerId !== userId) {
|
|
33
48
|
return {
|
|
@@ -40,10 +55,15 @@ export class RecordsController {
|
|
|
40
55
|
const password = fromByteArray(passwordBytes); // convert to human-readable string
|
|
41
56
|
const salt = record.secretSalt;
|
|
42
57
|
const passwordHash = hashPasswordWithSalt(password, salt);
|
|
43
|
-
yield this._store.
|
|
58
|
+
yield this._store.addRecordKey({
|
|
59
|
+
recordName: name,
|
|
60
|
+
secretHash: passwordHash,
|
|
61
|
+
policy: policy !== null && policy !== void 0 ? policy : DEFAULT_RECORD_KEY_POLICY,
|
|
62
|
+
creatorId: record.ownerId,
|
|
63
|
+
});
|
|
44
64
|
return {
|
|
45
65
|
success: true,
|
|
46
|
-
recordKey:
|
|
66
|
+
recordKey: formatV2RecordKey(name, password, policy),
|
|
47
67
|
recordName: name,
|
|
48
68
|
};
|
|
49
69
|
}
|
|
@@ -55,12 +75,18 @@ export class RecordsController {
|
|
|
55
75
|
yield this._store.addRecord({
|
|
56
76
|
name,
|
|
57
77
|
ownerId: userId,
|
|
58
|
-
secretHashes: [
|
|
78
|
+
secretHashes: [],
|
|
59
79
|
secretSalt: salt,
|
|
60
80
|
});
|
|
81
|
+
yield this._store.addRecordKey({
|
|
82
|
+
recordName: name,
|
|
83
|
+
secretHash: passwordHash,
|
|
84
|
+
policy: policy !== null && policy !== void 0 ? policy : DEFAULT_RECORD_KEY_POLICY,
|
|
85
|
+
creatorId: userId,
|
|
86
|
+
});
|
|
61
87
|
return {
|
|
62
88
|
success: true,
|
|
63
|
-
recordKey:
|
|
89
|
+
recordKey: formatV2RecordKey(name, password, policy),
|
|
64
90
|
recordName: name,
|
|
65
91
|
};
|
|
66
92
|
}
|
|
@@ -91,7 +117,7 @@ export class RecordsController {
|
|
|
91
117
|
errorMessage: 'Invalid record key.',
|
|
92
118
|
};
|
|
93
119
|
}
|
|
94
|
-
const [name, password] = parseResult;
|
|
120
|
+
const [name, password, policy] = parseResult;
|
|
95
121
|
const record = yield this._store.getRecordByName(name);
|
|
96
122
|
if (!record) {
|
|
97
123
|
return {
|
|
@@ -100,11 +126,31 @@ export class RecordsController {
|
|
|
100
126
|
errorMessage: 'Record not found.',
|
|
101
127
|
};
|
|
102
128
|
}
|
|
103
|
-
const
|
|
104
|
-
|
|
129
|
+
const hash = hashPasswordWithSalt(password, record.secretSalt);
|
|
130
|
+
let valid = false;
|
|
131
|
+
let resultPolicy = DEFAULT_RECORD_KEY_POLICY;
|
|
132
|
+
if (record.secretHashes.some(h => h === hash)) {
|
|
133
|
+
valid = true;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
const key = yield this._store.getRecordKeyByRecordAndHash(name, hash);
|
|
137
|
+
if (!!key) {
|
|
138
|
+
resultPolicy = key.policy;
|
|
139
|
+
valid = true;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (resultPolicy !== policy) {
|
|
143
|
+
return {
|
|
144
|
+
success: false,
|
|
145
|
+
errorCode: 'invalid_record_key',
|
|
146
|
+
errorMessage: 'Invalid record key.'
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
if (valid) {
|
|
105
150
|
return {
|
|
106
151
|
success: true,
|
|
107
152
|
recordName: name,
|
|
153
|
+
policy: policy,
|
|
108
154
|
ownerId: record.ownerId,
|
|
109
155
|
};
|
|
110
156
|
}
|
|
@@ -127,21 +173,85 @@ export class RecordsController {
|
|
|
127
173
|
});
|
|
128
174
|
}
|
|
129
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* The default policy for keys that do not have a specified record key.
|
|
178
|
+
*/
|
|
179
|
+
export const DEFAULT_RECORD_KEY_POLICY = 'subjectfull';
|
|
130
180
|
/**
|
|
131
181
|
* Formats the given record name and record secret into a record key.
|
|
132
182
|
* @param recordName The name of the record.
|
|
133
183
|
* @param recordSecret The secret that is used to access the record.
|
|
134
184
|
*/
|
|
135
|
-
export function
|
|
185
|
+
export function formatV1RecordKey(recordName, recordSecret) {
|
|
136
186
|
return `vRK1.${toBase64String(recordName)}.${toBase64String(recordSecret)}`;
|
|
137
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* Formats the given record name and record secret into a record key.
|
|
190
|
+
* @param recordName The name of the record.
|
|
191
|
+
* @param recordSecret The secret that is used to access the record.
|
|
192
|
+
* @param keyPolicy The policy that the key uses.
|
|
193
|
+
*/
|
|
194
|
+
export function formatV2RecordKey(recordName, recordSecret, keyPolicy) {
|
|
195
|
+
return `vRK2.${toBase64String(recordName)}.${toBase64String(recordSecret)}.${keyPolicy !== null && keyPolicy !== void 0 ? keyPolicy : DEFAULT_RECORD_KEY_POLICY}`;
|
|
196
|
+
}
|
|
138
197
|
/**
|
|
139
198
|
* Parses the given record key into a name and password pair.
|
|
140
199
|
* Returns null if the key cannot be parsed.
|
|
141
200
|
* @param key The key to parse.
|
|
142
|
-
* @returns
|
|
143
201
|
*/
|
|
144
202
|
export function parseRecordKey(key) {
|
|
203
|
+
var _a;
|
|
204
|
+
return (_a = parseV2RecordKey(key)) !== null && _a !== void 0 ? _a : parseV1RecordKey(key);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Parses a version 2 record key into a name, password, and policy trio.
|
|
208
|
+
* Returns null if the key cannot be parsed or if it is not a V2 key.
|
|
209
|
+
* @param key The key to parse.
|
|
210
|
+
*/
|
|
211
|
+
export function parseV2RecordKey(key) {
|
|
212
|
+
if (!key) {
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
if (!key.startsWith('vRK2.')) {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
const withoutVersion = key.slice('vRK2.'.length);
|
|
219
|
+
let periodAfterName = withoutVersion.indexOf('.');
|
|
220
|
+
if (periodAfterName < 0) {
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
const nameBase64 = withoutVersion.slice(0, periodAfterName);
|
|
224
|
+
const passwordPlusPolicy = withoutVersion.slice(periodAfterName + 1);
|
|
225
|
+
if (nameBase64.length <= 0 || passwordPlusPolicy.length <= 0) {
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
const periodAfterPassword = passwordPlusPolicy.indexOf('.');
|
|
229
|
+
if (periodAfterPassword < 0) {
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
const passwordBase64 = passwordPlusPolicy.slice(0, periodAfterPassword);
|
|
233
|
+
const policy = passwordPlusPolicy.slice(periodAfterPassword + 1);
|
|
234
|
+
if (passwordBase64.length <= 0 || policy.length <= 0) {
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
if (policy !== 'subjectfull' && policy !== 'subjectless') {
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
try {
|
|
241
|
+
const name = fromBase64String(nameBase64);
|
|
242
|
+
const password = fromBase64String(passwordBase64);
|
|
243
|
+
return [name, password, policy];
|
|
244
|
+
}
|
|
245
|
+
catch (err) {
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Parses a version 1 record key into a name and password pair.
|
|
251
|
+
* Returns null if the key cannot be parsed or if it is not a V1 key.
|
|
252
|
+
* @param key The key to parse.
|
|
253
|
+
*/
|
|
254
|
+
export function parseV1RecordKey(key) {
|
|
145
255
|
if (!key) {
|
|
146
256
|
return null;
|
|
147
257
|
}
|
|
@@ -161,7 +271,7 @@ export function parseRecordKey(key) {
|
|
|
161
271
|
try {
|
|
162
272
|
const name = fromBase64String(nameBase64);
|
|
163
273
|
const password = fromBase64String(passwordBase64);
|
|
164
|
-
return [name, password];
|
|
274
|
+
return [name, password, DEFAULT_RECORD_KEY_POLICY];
|
|
165
275
|
}
|
|
166
276
|
catch (err) {
|
|
167
277
|
return null;
|
package/RecordsController.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordsController.js","sourceRoot":"","sources":["RecordsController.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAEH,oBAAoB,
|
|
1
|
+
{"version":3,"file":"RecordsController.js","sourceRoot":"","sources":["RecordsController.ts"],"names":[],"mappings":"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"}
|
package/RecordsStore.d.ts
CHANGED
|
@@ -17,6 +17,17 @@ export interface RecordsStore {
|
|
|
17
17
|
* @param name The name of the record.
|
|
18
18
|
*/
|
|
19
19
|
getRecordByName(name: string): Promise<Record>;
|
|
20
|
+
/**
|
|
21
|
+
* Adds the given record key to the store.
|
|
22
|
+
* @param key The key to add.
|
|
23
|
+
*/
|
|
24
|
+
addRecordKey(key: RecordKey): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Gets the record key for the given record name that has the given hash.
|
|
27
|
+
* @param recordName The name of the record.
|
|
28
|
+
* @param hash The scrypt hash of the key that should be retrieved.
|
|
29
|
+
*/
|
|
30
|
+
getRecordKeyByRecordAndHash(recordName: string, hash: string): Promise<RecordKey>;
|
|
20
31
|
}
|
|
21
32
|
/**
|
|
22
33
|
* Defines an interface for record objects.
|
|
@@ -42,4 +53,32 @@ export interface Record {
|
|
|
42
53
|
*/
|
|
43
54
|
secretSalt: string;
|
|
44
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Defines a type that represents the different kinds of policies that a record key can have.
|
|
58
|
+
*
|
|
59
|
+
* - null and "subjectfull" indicate that actions performed with this key must require a subject to provide their access token in order for operations to succeed.
|
|
60
|
+
* - "subjectless" indicates that actions may be performed with key despite not having an access key from a subject.
|
|
61
|
+
*/
|
|
62
|
+
export declare type PublicRecordKeyPolicy = null | 'subjectfull' | 'subjectless';
|
|
63
|
+
/**
|
|
64
|
+
* Defines an interface for record key objects.
|
|
65
|
+
*/
|
|
66
|
+
export interface RecordKey {
|
|
67
|
+
/**
|
|
68
|
+
* The name of the record that the key is for.
|
|
69
|
+
*/
|
|
70
|
+
recordName: string;
|
|
71
|
+
/**
|
|
72
|
+
* The scrypt hash of the secret that this key is for.
|
|
73
|
+
*/
|
|
74
|
+
secretHash: string;
|
|
75
|
+
/**
|
|
76
|
+
* The policy that the key uses.
|
|
77
|
+
*/
|
|
78
|
+
policy: PublicRecordKeyPolicy;
|
|
79
|
+
/**
|
|
80
|
+
* The ID of the user that created this key.
|
|
81
|
+
*/
|
|
82
|
+
creatorId: string;
|
|
83
|
+
}
|
|
45
84
|
//# sourceMappingURL=RecordsStore.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@casual-simulation/aux-records",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.5",
|
|
4
4
|
"description": "Helpers and managers used by the CasualOS records system.",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "Casual Simulation, Inc.",
|
|
@@ -41,5 +41,5 @@
|
|
|
41
41
|
"@casual-simulation/crypto": "^3.0.0",
|
|
42
42
|
"tweetnacl": "1.0.3"
|
|
43
43
|
},
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "64a1ab80b4fc73db4f190deb874618a6a52394fa"
|
|
45
45
|
}
|