@apollo-annotation/shared 0.3.13 → 1.0.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/dist/Changes/{DeleteFeatureChange.d.ts → AddAndDeleteFeatureChanges.d.ts} +26 -11
- package/dist/Changes/AddAndDeleteFeatureChanges.d.ts.map +1 -0
- package/dist/Changes/AddAndDeleteFeatureChanges.js +117 -0
- package/dist/Changes/AddAndDeleteFeatureChanges.js.map +1 -0
- package/dist/Changes/AddAssemblyAliasesChange.d.ts +1 -4
- package/dist/Changes/AddAssemblyAliasesChange.d.ts.map +1 -1
- package/dist/Changes/AddAssemblyAliasesChange.js +0 -27
- package/dist/Changes/AddAssemblyAliasesChange.js.map +1 -1
- package/dist/Changes/AddAssemblyAndFeaturesFromFileChange.d.ts +2 -11
- package/dist/Changes/AddAssemblyAndFeaturesFromFileChange.d.ts.map +1 -1
- package/dist/Changes/AddAssemblyAndFeaturesFromFileChange.js +2 -82
- package/dist/Changes/AddAssemblyAndFeaturesFromFileChange.js.map +1 -1
- package/dist/Changes/AddAssemblyFromExternalChange.d.ts +1 -9
- package/dist/Changes/AddAssemblyFromExternalChange.d.ts.map +1 -1
- package/dist/Changes/AddAssemblyFromExternalChange.js +0 -72
- package/dist/Changes/AddAssemblyFromExternalChange.js.map +1 -1
- package/dist/Changes/AddAssemblyFromFileChange.d.ts +2 -17
- package/dist/Changes/AddAssemblyFromFileChange.d.ts.map +1 -1
- package/dist/Changes/AddAssemblyFromFileChange.js +2 -119
- package/dist/Changes/AddAssemblyFromFileChange.js.map +1 -1
- package/dist/Changes/AddFeaturesFromFileChange.d.ts +2 -11
- package/dist/Changes/AddFeaturesFromFileChange.d.ts.map +1 -1
- package/dist/Changes/AddFeaturesFromFileChange.js +2 -66
- package/dist/Changes/AddFeaturesFromFileChange.js.map +1 -1
- package/dist/Changes/AddRefSeqAliasesChange.d.ts +1 -4
- package/dist/Changes/AddRefSeqAliasesChange.d.ts.map +1 -1
- package/dist/Changes/AddRefSeqAliasesChange.js +0 -34
- package/dist/Changes/AddRefSeqAliasesChange.js.map +1 -1
- package/dist/Changes/DeleteAssemblyChange.d.ts +1 -9
- package/dist/Changes/DeleteAssemblyChange.d.ts.map +1 -1
- package/dist/Changes/DeleteAssemblyChange.js +0 -53
- package/dist/Changes/DeleteAssemblyChange.js.map +1 -1
- package/dist/Changes/DeleteUserChange.d.ts +1 -4
- package/dist/Changes/DeleteUserChange.d.ts.map +1 -1
- package/dist/Changes/DeleteUserChange.js +0 -19
- package/dist/Changes/DeleteUserChange.js.map +1 -1
- package/dist/Changes/FeatureAttributeChange.d.ts +1 -9
- package/dist/Changes/FeatureAttributeChange.d.ts.map +1 -1
- package/dist/Changes/FeatureAttributeChange.js +0 -82
- package/dist/Changes/FeatureAttributeChange.js.map +1 -1
- package/dist/Changes/ImportJBrowseConfigChange.d.ts +1 -4
- package/dist/Changes/ImportJBrowseConfigChange.d.ts.map +1 -1
- package/dist/Changes/ImportJBrowseConfigChange.js +1 -18
- package/dist/Changes/ImportJBrowseConfigChange.js.map +1 -1
- package/dist/Changes/LocationEndChange.d.ts +1 -9
- package/dist/Changes/LocationEndChange.d.ts.map +1 -1
- package/dist/Changes/LocationEndChange.js +0 -90
- package/dist/Changes/LocationEndChange.js.map +1 -1
- package/dist/Changes/LocationStartChange.d.ts +1 -9
- package/dist/Changes/LocationStartChange.d.ts.map +1 -1
- package/dist/Changes/LocationStartChange.js +0 -90
- package/dist/Changes/LocationStartChange.js.map +1 -1
- package/dist/Changes/MergeAndUndoMergeExonsChanges.d.ts +46 -0
- package/dist/Changes/MergeAndUndoMergeExonsChanges.d.ts.map +1 -0
- package/dist/Changes/MergeAndUndoMergeExonsChanges.js +83 -0
- package/dist/Changes/MergeAndUndoMergeExonsChanges.js.map +1 -0
- package/dist/Changes/{MergeTranscriptsChange.d.ts → MergeAndUndoMergeTranscriptsChanges.d.ts} +22 -6
- package/dist/Changes/MergeAndUndoMergeTranscriptsChanges.d.ts.map +1 -0
- package/dist/Changes/{MergeTranscriptsChange.js → MergeAndUndoMergeTranscriptsChanges.js} +40 -50
- package/dist/Changes/MergeAndUndoMergeTranscriptsChanges.js.map +1 -0
- package/dist/Changes/SplitAndUndoSplitExonChanges.d.ts +55 -0
- package/dist/Changes/SplitAndUndoSplitExonChanges.d.ts.map +1 -0
- package/dist/Changes/SplitAndUndoSplitExonChanges.js +115 -0
- package/dist/Changes/SplitAndUndoSplitExonChanges.js.map +1 -0
- package/dist/Changes/StrandChange.d.ts +1 -9
- package/dist/Changes/StrandChange.d.ts.map +1 -1
- package/dist/Changes/StrandChange.js +0 -77
- package/dist/Changes/StrandChange.js.map +1 -1
- package/dist/Changes/TypeChange.d.ts +1 -9
- package/dist/Changes/TypeChange.d.ts.map +1 -1
- package/dist/Changes/TypeChange.js +0 -77
- package/dist/Changes/TypeChange.js.map +1 -1
- package/dist/Changes/UserChange.d.ts +1 -4
- package/dist/Changes/UserChange.d.ts.map +1 -1
- package/dist/Changes/UserChange.js +0 -23
- package/dist/Changes/UserChange.js.map +1 -1
- package/dist/Changes/index.d.ts +29 -22
- package/dist/Changes/index.d.ts.map +1 -1
- package/dist/Changes/index.js +19 -24
- package/dist/Changes/index.js.map +1 -1
- package/dist/Validations/Validation.d.ts +2 -2
- package/dist/Validations/Validation.d.ts.map +1 -1
- package/dist/Validations/Validation.js +1 -1
- package/dist/Validations/Validation.js.map +1 -1
- package/dist/Validations/ValidationSet.d.ts +2 -2
- package/dist/Validations/ValidationSet.d.ts.map +1 -1
- package/dist/Validations/ValidationSet.js +2 -2
- package/dist/Validations/ValidationSet.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -4
- package/src/Changes/{DeleteFeatureChange.ts → AddAndDeleteFeatureChanges.ts} +77 -107
- package/src/Changes/AddAssemblyAliasesChange.ts +0 -35
- package/src/Changes/AddAssemblyAndFeaturesFromFileChange.ts +5 -108
- package/src/Changes/AddAssemblyFromExternalChange.ts +0 -87
- package/src/Changes/AddAssemblyFromFileChange.ts +5 -169
- package/src/Changes/AddFeaturesFromFileChange.ts +5 -86
- package/src/Changes/AddRefSeqAliasesChange.ts +0 -44
- package/src/Changes/DeleteAssemblyChange.ts +0 -72
- package/src/Changes/DeleteUserChange.ts +0 -25
- package/src/Changes/FeatureAttributeChange.ts +0 -104
- package/src/Changes/ImportJBrowseConfigChange.ts +1 -27
- package/src/Changes/LocationEndChange.ts +0 -100
- package/src/Changes/LocationStartChange.ts +0 -100
- package/src/Changes/{MergeExonsChange.ts → MergeAndUndoMergeExonsChanges.ts} +70 -90
- package/src/Changes/{MergeTranscriptsChange.ts → MergeAndUndoMergeTranscriptsChanges.ts} +74 -66
- package/src/Changes/{SplitExonChange.ts → SplitAndUndoSplitExonChanges.ts} +95 -122
- package/src/Changes/StrandChange.ts +0 -94
- package/src/Changes/TypeChange.ts +0 -94
- package/src/Changes/UserChange.ts +0 -30
- package/src/Changes/index.ts +32 -24
- package/src/Validations/Validation.ts +2 -5
- package/src/Validations/ValidationSet.ts +3 -6
- package/src/index.ts +0 -1
- package/dist/Changes/AddFeatureChange.d.ts +0 -37
- package/dist/Changes/AddFeatureChange.d.ts.map +0 -1
- package/dist/Changes/AddFeatureChange.js +0 -169
- package/dist/Changes/AddFeatureChange.js.map +0 -1
- package/dist/Changes/DeleteFeatureChange.d.ts.map +0 -1
- package/dist/Changes/DeleteFeatureChange.js +0 -161
- package/dist/Changes/DeleteFeatureChange.js.map +0 -1
- package/dist/Changes/FromFileBaseChange.d.ts +0 -12
- package/dist/Changes/FromFileBaseChange.d.ts.map +0 -1
- package/dist/Changes/FromFileBaseChange.js +0 -196
- package/dist/Changes/FromFileBaseChange.js.map +0 -1
- package/dist/Changes/MergeExonsChange.d.ts +0 -30
- package/dist/Changes/MergeExonsChange.d.ts.map +0 -1
- package/dist/Changes/MergeExonsChange.js +0 -110
- package/dist/Changes/MergeExonsChange.js.map +0 -1
- package/dist/Changes/MergeTranscriptsChange.d.ts.map +0 -1
- package/dist/Changes/MergeTranscriptsChange.js.map +0 -1
- package/dist/Changes/SplitExonChange.d.ts +0 -34
- package/dist/Changes/SplitExonChange.d.ts.map +0 -1
- package/dist/Changes/SplitExonChange.js +0 -138
- package/dist/Changes/SplitExonChange.js.map +0 -1
- package/dist/Changes/UndoMergeExonsChange.d.ts +0 -28
- package/dist/Changes/UndoMergeExonsChange.d.ts.map +0 -1
- package/dist/Changes/UndoMergeExonsChange.js +0 -100
- package/dist/Changes/UndoMergeExonsChange.js.map +0 -1
- package/dist/Changes/UndoMergeTranscriptsChange.d.ts +0 -28
- package/dist/Changes/UndoMergeTranscriptsChange.d.ts.map +0 -1
- package/dist/Changes/UndoMergeTranscriptsChange.js +0 -100
- package/dist/Changes/UndoMergeTranscriptsChange.js.map +0 -1
- package/dist/Changes/UndoSplitExonChange.d.ts +0 -33
- package/dist/Changes/UndoSplitExonChange.d.ts.map +0 -1
- package/dist/Changes/UndoSplitExonChange.js +0 -107
- package/dist/Changes/UndoSplitExonChange.js.map +0 -1
- package/dist/Operations/GetAssembliesOperation.d.ts +0 -12
- package/dist/Operations/GetAssembliesOperation.d.ts.map +0 -1
- package/dist/Operations/GetAssembliesOperation.js +0 -16
- package/dist/Operations/GetAssembliesOperation.js.map +0 -1
- package/dist/Operations/GetFeaturesOperation.d.ts +0 -27
- package/dist/Operations/GetFeaturesOperation.d.ts.map +0 -1
- package/dist/Operations/GetFeaturesOperation.js +0 -38
- package/dist/Operations/GetFeaturesOperation.js.map +0 -1
- package/dist/Operations/index.d.ts +0 -9
- package/dist/Operations/index.d.ts.map +0 -1
- package/dist/Operations/index.js +0 -6
- package/dist/Operations/index.js.map +0 -1
- package/src/Changes/AddFeatureChange.ts +0 -236
- package/src/Changes/FromFileBaseChange.ts +0 -231
- package/src/Changes/UndoMergeExonsChange.ts +0 -149
- package/src/Changes/UndoMergeTranscriptsChange.ts +0 -153
- package/src/Changes/UndoSplitExonChange.ts +0 -174
- package/src/Operations/GetAssembliesOperation.ts +0 -28
- package/src/Operations/GetFeaturesOperation.ts +0 -58
- package/src/Operations/index.ts +0 -6
|
@@ -1,7 +1,21 @@
|
|
|
1
|
-
import { type ChangeOptions,
|
|
1
|
+
import { type ChangeOptions, FeatureChange, type SerializedFeatureChange } from '@apollo-annotation/common';
|
|
2
2
|
import type { AnnotationFeatureSnapshot } from '@apollo-annotation/mst';
|
|
3
3
|
import type { Feature } from '@apollo-annotation/schemas';
|
|
4
|
-
|
|
4
|
+
interface SerializedAddFeatureChangeBase extends SerializedFeatureChange {
|
|
5
|
+
typeName: 'AddFeatureChange';
|
|
6
|
+
}
|
|
7
|
+
export interface AddFeatureChangeDetails {
|
|
8
|
+
addedFeature: AnnotationFeatureSnapshot;
|
|
9
|
+
parentFeatureId?: string;
|
|
10
|
+
copyFeature?: boolean;
|
|
11
|
+
allIds?: string[];
|
|
12
|
+
}
|
|
13
|
+
interface SerializedAddFeatureChangeSingle extends SerializedAddFeatureChangeBase, AddFeatureChangeDetails {
|
|
14
|
+
}
|
|
15
|
+
interface SerializedAddFeatureChangeMultiple extends SerializedAddFeatureChangeBase {
|
|
16
|
+
changes: AddFeatureChangeDetails[];
|
|
17
|
+
}
|
|
18
|
+
export type SerializedAddFeatureChange = SerializedAddFeatureChangeSingle | SerializedAddFeatureChangeMultiple;
|
|
5
19
|
interface SerializedDeleteFeatureChangeBase extends SerializedFeatureChange {
|
|
6
20
|
typeName: 'DeleteFeatureChange';
|
|
7
21
|
}
|
|
@@ -15,20 +29,21 @@ interface SerializedDeleteFeatureChangeMultiple extends SerializedDeleteFeatureC
|
|
|
15
29
|
changes: DeleteFeatureChangeDetails[];
|
|
16
30
|
}
|
|
17
31
|
export type SerializedDeleteFeatureChange = SerializedDeleteFeatureChangeSingle | SerializedDeleteFeatureChangeMultiple;
|
|
32
|
+
export declare class AddFeatureChange extends FeatureChange {
|
|
33
|
+
typeName: "AddFeatureChange";
|
|
34
|
+
changes: AddFeatureChangeDetails[];
|
|
35
|
+
constructor(json: SerializedAddFeatureChange, options?: ChangeOptions);
|
|
36
|
+
get notification(): string;
|
|
37
|
+
toJSON(): SerializedAddFeatureChange;
|
|
38
|
+
getInverse(): DeleteFeatureChange;
|
|
39
|
+
}
|
|
40
|
+
export declare function isAddFeatureChange(change: unknown): change is AddFeatureChange;
|
|
18
41
|
export declare class DeleteFeatureChange extends FeatureChange {
|
|
19
42
|
typeName: "DeleteFeatureChange";
|
|
20
43
|
changes: DeleteFeatureChangeDetails[];
|
|
21
44
|
constructor(json: SerializedDeleteFeatureChange, options?: ChangeOptions);
|
|
22
45
|
get notification(): string;
|
|
23
46
|
toJSON(): SerializedDeleteFeatureChange;
|
|
24
|
-
/**
|
|
25
|
-
* Applies the required change to database
|
|
26
|
-
* @param backend - parameters from backend
|
|
27
|
-
* @returns
|
|
28
|
-
*/
|
|
29
|
-
executeOnServer(backend: ServerDataStore): Promise<void>;
|
|
30
|
-
executeOnLocalGFF3(_backend: LocalGFF3DataStore): Promise<void>;
|
|
31
|
-
executeOnClient(dataStore: ClientDataStore): Promise<void>;
|
|
32
47
|
getInverse(): AddFeatureChange;
|
|
33
48
|
}
|
|
34
49
|
/**
|
|
@@ -41,4 +56,4 @@ export declare class DeleteFeatureChange extends FeatureChange {
|
|
|
41
56
|
export declare function findAndDeleteChildFeature(feature: Feature, featureIdToDelete: string, change: FeatureChange): string[];
|
|
42
57
|
export declare function isDeleteFeatureChange(change: unknown): change is DeleteFeatureChange;
|
|
43
58
|
export {};
|
|
44
|
-
//# sourceMappingURL=
|
|
59
|
+
//# sourceMappingURL=AddAndDeleteFeatureChanges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddAndDeleteFeatureChanges.d.ts","sourceRoot":"","sources":["../../src/Changes/AddAndDeleteFeatureChanges.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAClB,aAAa,EACb,KAAK,uBAAuB,EAC7B,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,UAAU,8BAA+B,SAAQ,uBAAuB;IACtE,QAAQ,EAAE,kBAAkB,CAAA;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,yBAAyB,CAAA;IACvC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,UAAU,gCACR,SAAQ,8BAA8B,EACpC,uBAAuB;CAAG;AAE9B,UAAU,kCACR,SAAQ,8BAA8B;IACtC,OAAO,EAAE,uBAAuB,EAAE,CAAA;CACnC;AAED,MAAM,MAAM,0BAA0B,GAClC,gCAAgC,GAChC,kCAAkC,CAAA;AAEtC,UAAU,iCAAkC,SAAQ,uBAAuB;IACzE,QAAQ,EAAE,qBAAqB,CAAA;CAChC;AAED,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,yBAAyB,CAAA;IACzC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,UAAU,mCACR,SAAQ,iCAAiC,EACvC,0BAA0B;CAAG;AAEjC,UAAU,qCACR,SAAQ,iCAAiC;IACzC,OAAO,EAAE,0BAA0B,EAAE,CAAA;CACtC;AAED,MAAM,MAAM,6BAA6B,GACrC,mCAAmC,GACnC,qCAAqC,CAAA;AAEzC,qBAAa,gBAAiB,SAAQ,aAAa;IACjD,QAAQ,qBAA8B;IACtC,OAAO,EAAE,uBAAuB,EAAE,CAAA;gBAEtB,IAAI,EAAE,0BAA0B,EAAE,OAAO,CAAC,EAAE,aAAa;IAKrE,IAAI,YAAY,WAEf;IAED,MAAM,IAAI,0BAA0B;IAiBpC,UAAU;CAkBX;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,GACd,MAAM,IAAI,gBAAgB,CAE5B;AAED,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,QAAQ,wBAAiC;IACzC,OAAO,EAAE,0BAA0B,EAAE,CAAA;gBAEzB,IAAI,EAAE,6BAA6B,EAAE,OAAO,CAAC,EAAE,aAAa;IAKxE,IAAI,YAAY,WAEf;IAED,MAAM,IAAI,6BAA6B;IASvC,UAAU;CAoBX;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,aAAa,GACpB,MAAM,EAAE,CAoBV;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,GACd,MAAM,IAAI,mBAAmB,CAE/B"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
|
|
3
|
+
import { FeatureChange, } from '@apollo-annotation/common';
|
|
4
|
+
export class AddFeatureChange extends FeatureChange {
|
|
5
|
+
typeName = 'AddFeatureChange';
|
|
6
|
+
changes;
|
|
7
|
+
constructor(json, options) {
|
|
8
|
+
super(json, options);
|
|
9
|
+
this.changes = 'changes' in json ? json.changes : [json];
|
|
10
|
+
}
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/class-literal-property-style
|
|
12
|
+
get notification() {
|
|
13
|
+
return 'Feature added successfully';
|
|
14
|
+
}
|
|
15
|
+
toJSON() {
|
|
16
|
+
const { assembly, changedIds, changes, typeName } = this;
|
|
17
|
+
if (changes.length === 1) {
|
|
18
|
+
const [{ addedFeature, allIds, copyFeature, parentFeatureId }] = changes;
|
|
19
|
+
return {
|
|
20
|
+
typeName,
|
|
21
|
+
changedIds,
|
|
22
|
+
assembly,
|
|
23
|
+
addedFeature,
|
|
24
|
+
parentFeatureId,
|
|
25
|
+
copyFeature,
|
|
26
|
+
allIds,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return { typeName, changedIds, assembly, changes };
|
|
30
|
+
}
|
|
31
|
+
getInverse() {
|
|
32
|
+
const { assembly, changedIds, changes, logger } = this;
|
|
33
|
+
const inverseChangedIds = [...changedIds].reverse();
|
|
34
|
+
const inverseChanges = [...changes].reverse().map((addFeatureChange) => ({
|
|
35
|
+
deletedFeature: addFeatureChange.addedFeature,
|
|
36
|
+
parentFeatureId: addFeatureChange.parentFeatureId,
|
|
37
|
+
}));
|
|
38
|
+
return new DeleteFeatureChange({
|
|
39
|
+
changedIds: inverseChangedIds,
|
|
40
|
+
typeName: 'DeleteFeatureChange',
|
|
41
|
+
changes: inverseChanges,
|
|
42
|
+
assembly,
|
|
43
|
+
}, { logger });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function isAddFeatureChange(change) {
|
|
47
|
+
return change.typeName === 'AddFeatureChange';
|
|
48
|
+
}
|
|
49
|
+
export class DeleteFeatureChange extends FeatureChange {
|
|
50
|
+
typeName = 'DeleteFeatureChange';
|
|
51
|
+
changes;
|
|
52
|
+
constructor(json, options) {
|
|
53
|
+
super(json, options);
|
|
54
|
+
this.changes = 'changes' in json ? json.changes : [json];
|
|
55
|
+
}
|
|
56
|
+
// eslint-disable-next-line @typescript-eslint/class-literal-property-style
|
|
57
|
+
get notification() {
|
|
58
|
+
return 'Feature deleted successfully';
|
|
59
|
+
}
|
|
60
|
+
toJSON() {
|
|
61
|
+
const { assembly, changedIds, changes, typeName } = this;
|
|
62
|
+
if (changes.length === 1) {
|
|
63
|
+
const [{ deletedFeature, parentFeatureId }] = changes;
|
|
64
|
+
return { typeName, changedIds, assembly, deletedFeature, parentFeatureId };
|
|
65
|
+
}
|
|
66
|
+
return { typeName, changedIds, assembly, changes };
|
|
67
|
+
}
|
|
68
|
+
getInverse() {
|
|
69
|
+
const { assembly, changedIds, changes, logger } = this;
|
|
70
|
+
const inverseChangedIds = [...changedIds].reverse();
|
|
71
|
+
const inverseChanges = [...changes]
|
|
72
|
+
.reverse()
|
|
73
|
+
.map((deleteFeatureChange) => ({
|
|
74
|
+
addedFeature: deleteFeatureChange.deletedFeature,
|
|
75
|
+
parentFeatureId: deleteFeatureChange.parentFeatureId,
|
|
76
|
+
}));
|
|
77
|
+
logger.debug?.(`INVERSE CHANGE '${JSON.stringify(inverseChanges)}'`);
|
|
78
|
+
return new AddFeatureChange({
|
|
79
|
+
changedIds: inverseChangedIds,
|
|
80
|
+
typeName: 'AddFeatureChange',
|
|
81
|
+
changes: inverseChanges,
|
|
82
|
+
assembly,
|
|
83
|
+
}, { logger });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Delete feature's subfeatures that match an ID and return the IDs of any
|
|
88
|
+
* sub-subfeatures that were deleted
|
|
89
|
+
* @param feature -
|
|
90
|
+
* @param featureIdToDelete -
|
|
91
|
+
* @returns - list of deleted feature IDs
|
|
92
|
+
*/
|
|
93
|
+
export function findAndDeleteChildFeature(feature, featureIdToDelete, change) {
|
|
94
|
+
if (!feature.children) {
|
|
95
|
+
throw new Error(`Feature ${feature._id} has no children`);
|
|
96
|
+
}
|
|
97
|
+
const { _id, children } = feature;
|
|
98
|
+
const child = children.get(featureIdToDelete);
|
|
99
|
+
if (child) {
|
|
100
|
+
const deletedIds = change.getChildFeatureIds(child);
|
|
101
|
+
children.delete(featureIdToDelete);
|
|
102
|
+
return deletedIds;
|
|
103
|
+
}
|
|
104
|
+
for (const [, childFeature] of children) {
|
|
105
|
+
try {
|
|
106
|
+
return findAndDeleteChildFeature(childFeature, featureIdToDelete, change);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// pass
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
throw new Error(`Feature "${featureIdToDelete}" not found in ${_id}`);
|
|
113
|
+
}
|
|
114
|
+
export function isDeleteFeatureChange(change) {
|
|
115
|
+
return change.typeName === 'DeleteFeatureChange';
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=AddAndDeleteFeatureChanges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddAndDeleteFeatureChanges.js","sourceRoot":"","sources":["../../src/Changes/AddAndDeleteFeatureChanges.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AssemblySpecificChange, type Change, type ChangeOptions, type
|
|
1
|
+
import { AssemblySpecificChange, type Change, type ChangeOptions, type SerializedAssemblySpecificChange } from '@apollo-annotation/common';
|
|
2
2
|
export interface SerializedAssemblyAliasesChange extends SerializedAssemblySpecificChange {
|
|
3
3
|
typeName: 'AddAssemblyAliasesChange';
|
|
4
4
|
aliases: string[];
|
|
@@ -7,11 +7,8 @@ export declare class AddAssemblyAliasesChange extends AssemblySpecificChange {
|
|
|
7
7
|
typeName: "AddAssemblyAliasesChange";
|
|
8
8
|
aliases: string[];
|
|
9
9
|
constructor(json: SerializedAssemblyAliasesChange, options?: ChangeOptions);
|
|
10
|
-
executeOnClient(clientDataStore: ClientDataStore): Promise<void>;
|
|
11
10
|
getInverse(): Change;
|
|
12
11
|
toJSON(): SerializedAssemblyAliasesChange;
|
|
13
|
-
executeOnServer(backend: ServerDataStore): Promise<void>;
|
|
14
|
-
executeOnLocalGFF3(_backend: LocalGFF3DataStore): Promise<unknown>;
|
|
15
12
|
get notification(): string;
|
|
16
13
|
}
|
|
17
14
|
//# sourceMappingURL=AddAssemblyAliasesChange.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddAssemblyAliasesChange.d.ts","sourceRoot":"","sources":["../../src/Changes/AddAssemblyAliasesChange.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddAssemblyAliasesChange.d.ts","sourceRoot":"","sources":["../../src/Changes/AddAssemblyAliasesChange.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,gCAAgC,EACtC,MAAM,2BAA2B,CAAA;AAElC,MAAM,WAAW,+BACf,SAAQ,gCAAgC;IACxC,QAAQ,EAAE,0BAA0B,CAAA;IACpC,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,qBAAa,wBAAyB,SAAQ,sBAAsB;IAClE,QAAQ,6BAAsC;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAA;gBAEL,IAAI,EAAE,+BAA+B,EAAE,OAAO,CAAC,EAAE,aAAa;IAK1E,UAAU,IAAI,MAAM;IAIpB,MAAM,IAAI,+BAA+B;IAMzC,IAAI,YAAY,IAAI,MAAM,CAEzB;CACF"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
4
1
|
import { AssemblySpecificChange, } from '@apollo-annotation/common';
|
|
5
|
-
import { getSession } from '@jbrowse/core/util';
|
|
6
2
|
export class AddAssemblyAliasesChange extends AssemblySpecificChange {
|
|
7
3
|
typeName = 'AddAssemblyAliasesChange';
|
|
8
4
|
aliases;
|
|
@@ -10,15 +6,6 @@ export class AddAssemblyAliasesChange extends AssemblySpecificChange {
|
|
|
10
6
|
super(json, options);
|
|
11
7
|
this.aliases = json.aliases;
|
|
12
8
|
}
|
|
13
|
-
executeOnClient(clientDataStore) {
|
|
14
|
-
const { assemblyManager } = getSession(clientDataStore);
|
|
15
|
-
const assembly = assemblyManager.get(this.assembly);
|
|
16
|
-
if (!assembly) {
|
|
17
|
-
throw new Error(`assembly ${this.assembly} not found`);
|
|
18
|
-
}
|
|
19
|
-
assembly.configuration.aliases.set(this.aliases);
|
|
20
|
-
return Promise.resolve();
|
|
21
|
-
}
|
|
22
9
|
getInverse() {
|
|
23
10
|
throw new Error('Method not implemented.');
|
|
24
11
|
}
|
|
@@ -26,20 +13,6 @@ export class AddAssemblyAliasesChange extends AssemblySpecificChange {
|
|
|
26
13
|
const { assembly, aliases, typeName } = this;
|
|
27
14
|
return { assembly, typeName, aliases };
|
|
28
15
|
}
|
|
29
|
-
async executeOnServer(backend) {
|
|
30
|
-
const { assemblyModel } = backend;
|
|
31
|
-
const { assembly, logger, aliases } = this;
|
|
32
|
-
logger.debug?.(`Updating assembly aliases for assembly: ${assembly}, aliases: ${JSON.stringify(aliases)}`);
|
|
33
|
-
const asm = await assemblyModel.findById(assembly);
|
|
34
|
-
if (!asm) {
|
|
35
|
-
throw new Error(`Assembly with ID ${assembly} not found`);
|
|
36
|
-
}
|
|
37
|
-
asm.aliases = aliases;
|
|
38
|
-
await asm.save();
|
|
39
|
-
}
|
|
40
|
-
executeOnLocalGFF3(_backend) {
|
|
41
|
-
throw new Error('Method not implemented.');
|
|
42
|
-
}
|
|
43
16
|
// eslint-disable-next-line @typescript-eslint/class-literal-property-style
|
|
44
17
|
get notification() {
|
|
45
18
|
return 'Assembly aliases have been added.';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddAssemblyAliasesChange.js","sourceRoot":"","sources":["../../src/Changes/AddAssemblyAliasesChange.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"AddAssemblyAliasesChange.js","sourceRoot":"","sources":["../../src/Changes/AddAssemblyAliasesChange.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,GAIvB,MAAM,2BAA2B,CAAA;AAQlC,MAAM,OAAO,wBAAyB,SAAQ,sBAAsB;IAClE,QAAQ,GAAG,0BAAmC,CAAA;IAC9C,OAAO,CAAU;IAEjB,YAAY,IAAqC,EAAE,OAAuB;QACxE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC7B,CAAC;IAED,UAAU;QACR,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAC5C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;IACxC,CAAC;IAED,2EAA2E;IAC3E,IAAI,YAAY;QACd,OAAO,mCAAmC,CAAA;IAC5C,CAAC;CACF"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { FromFileBaseChange } from './FromFileBaseChange.js';
|
|
1
|
+
import { AssemblySpecificChange, type ChangeOptions, type SerializedAssemblySpecificChange } from '@apollo-annotation/common';
|
|
3
2
|
export interface SerializedAddAssemblyAndFeaturesFromFileChangeBase extends SerializedAssemblySpecificChange {
|
|
4
3
|
typeName: 'AddAssemblyAndFeaturesFromFileChange';
|
|
5
4
|
}
|
|
@@ -19,20 +18,12 @@ export interface SerializedAddAssemblyAndFeaturesFromFileChangeMultiple extends
|
|
|
19
18
|
changes: AddAssemblyAndFeaturesFromFileChangeDetails[];
|
|
20
19
|
}
|
|
21
20
|
export type SerializedAddAssemblyAndFeaturesFromFileChange = SerializedAddAssemblyAndFeaturesFromFileChangeSingle | SerializedAddAssemblyAndFeaturesFromFileChangeMultiple;
|
|
22
|
-
export declare class AddAssemblyAndFeaturesFromFileChange extends
|
|
21
|
+
export declare class AddAssemblyAndFeaturesFromFileChange extends AssemblySpecificChange {
|
|
23
22
|
typeName: "AddAssemblyAndFeaturesFromFileChange";
|
|
24
23
|
changes: AddAssemblyAndFeaturesFromFileChangeDetails[];
|
|
25
24
|
constructor(json: SerializedAddAssemblyAndFeaturesFromFileChange, options?: ChangeOptions);
|
|
26
25
|
get notification(): string;
|
|
27
26
|
toJSON(): SerializedAddAssemblyAndFeaturesFromFileChange;
|
|
28
|
-
/**
|
|
29
|
-
* Applies the required change to database
|
|
30
|
-
* @param backend - parameters from backend
|
|
31
|
-
* @returns
|
|
32
|
-
*/
|
|
33
|
-
executeOnServer(backend: ServerDataStore): Promise<void>;
|
|
34
|
-
executeOnLocalGFF3(_backend: LocalGFF3DataStore): Promise<void>;
|
|
35
|
-
executeOnClient(_dataStore: ClientDataStore): Promise<void>;
|
|
36
27
|
getInverse(): AddAssemblyAndFeaturesFromFileChange;
|
|
37
28
|
}
|
|
38
29
|
//# sourceMappingURL=AddAssemblyAndFeaturesFromFileChange.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddAssemblyAndFeaturesFromFileChange.d.ts","sourceRoot":"","sources":["../../src/Changes/AddAssemblyAndFeaturesFromFileChange.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddAssemblyAndFeaturesFromFileChange.d.ts","sourceRoot":"","sources":["../../src/Changes/AddAssemblyAndFeaturesFromFileChange.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,aAAa,EAClB,KAAK,gCAAgC,EACtC,MAAM,2BAA2B,CAAA;AAElC,MAAM,WAAW,kDACf,SAAQ,gCAAgC;IACxC,QAAQ,EAAE,sCAAsC,CAAA;CACjD;AAED,MAAM,WAAW,2CAA2C;IAC1D,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACvB,YAAY,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CACzD;AAED,MAAM,WAAW,oDACf,SAAQ,kDAAkD,EACxD,2CAA2C;CAAG;AAElD,MAAM,WAAW,sDACf,SAAQ,kDAAkD;IAC1D,OAAO,EAAE,2CAA2C,EAAE,CAAA;CACvD;AAED,MAAM,MAAM,8CAA8C,GACtD,oDAAoD,GACpD,sDAAsD,CAAA;AAE1D,qBAAa,oCAAqC,SAAQ,sBAAsB;IAC9E,QAAQ,yCAAkD;IAC1D,OAAO,EAAE,2CAA2C,EAAE,CAAA;gBAGpD,IAAI,EAAE,8CAA8C,EACpD,OAAO,CAAC,EAAE,aAAa;IAMzB,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,MAAM,IAAI,8CAA8C;IASxD,UAAU;CAOX"}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
4
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
5
|
-
/* eslint-disable @typescript-eslint/require-await */
|
|
6
|
-
import { FromFileBaseChange } from './FromFileBaseChange.js';
|
|
7
|
-
export class AddAssemblyAndFeaturesFromFileChange extends FromFileBaseChange {
|
|
1
|
+
import { AssemblySpecificChange, } from '@apollo-annotation/common';
|
|
2
|
+
export class AddAssemblyAndFeaturesFromFileChange extends AssemblySpecificChange {
|
|
8
3
|
typeName = 'AddAssemblyAndFeaturesFromFileChange';
|
|
9
4
|
changes;
|
|
10
5
|
constructor(json, options) {
|
|
@@ -22,81 +17,6 @@ export class AddAssemblyAndFeaturesFromFileChange extends FromFileBaseChange {
|
|
|
22
17
|
}
|
|
23
18
|
return { typeName, assembly, changes };
|
|
24
19
|
}
|
|
25
|
-
/**
|
|
26
|
-
* Applies the required change to database
|
|
27
|
-
* @param backend - parameters from backend
|
|
28
|
-
* @returns
|
|
29
|
-
*/
|
|
30
|
-
async executeOnServer(backend) {
|
|
31
|
-
const { assemblyModel, checkModel, fileModel, filesService, user } = backend;
|
|
32
|
-
const { assembly, changes, logger } = this;
|
|
33
|
-
for (const change of changes) {
|
|
34
|
-
const { assemblyName, fileIds, parseOptions } = change;
|
|
35
|
-
const fileId = fileIds.fa;
|
|
36
|
-
const { FILE_UPLOAD_FOLDER } = process.env;
|
|
37
|
-
if (!FILE_UPLOAD_FOLDER) {
|
|
38
|
-
throw new Error('No FILE_UPLOAD_FOLDER found in .env file');
|
|
39
|
-
}
|
|
40
|
-
// Get file checksum
|
|
41
|
-
const fileDoc = await fileModel.findById(fileId).exec();
|
|
42
|
-
if (!fileDoc) {
|
|
43
|
-
throw new Error(`File "${fileId}" not found in Mongo`);
|
|
44
|
-
}
|
|
45
|
-
logger.debug?.(`FileId "${fileId}", checksum "${fileDoc.checksum}"`);
|
|
46
|
-
// Check and add new assembly
|
|
47
|
-
const assemblyDoc = await assemblyModel
|
|
48
|
-
.findOne({ name: assemblyName })
|
|
49
|
-
.exec();
|
|
50
|
-
if (assemblyDoc) {
|
|
51
|
-
throw new Error(`Assembly "${assemblyName}" already exists`);
|
|
52
|
-
}
|
|
53
|
-
// get checks
|
|
54
|
-
const checkDocs = await checkModel.find({ isDefault: true }).exec();
|
|
55
|
-
const checks = checkDocs.map((checkDoc) => checkDoc._id.toHexString());
|
|
56
|
-
// Add assembly
|
|
57
|
-
const [newAssemblyDoc] = await assemblyModel.create([
|
|
58
|
-
{ _id: assembly, name: assemblyName, user, status: -1, fileId, checks },
|
|
59
|
-
]);
|
|
60
|
-
logger.debug?.(`Added new assembly "${assemblyName}", docId "${newAssemblyDoc._id.toHexString()}"`);
|
|
61
|
-
logger.debug?.(`File type: "${fileDoc.type}"`);
|
|
62
|
-
// Add refSeqs
|
|
63
|
-
// We cannot use Mongo 'session' / transaction here because Mongo has 16 MB limit for transaction
|
|
64
|
-
await this.addRefSeqIntoDb(fileDoc, newAssemblyDoc._id.toString(), backend);
|
|
65
|
-
const { bufferSize = 10_000, strict = true } = parseOptions ?? {};
|
|
66
|
-
const featureStream = filesService.parseGFF3(filesService.getFileStream(fileDoc), { bufferSize });
|
|
67
|
-
let featureCount = 0;
|
|
68
|
-
let errorCount = 0;
|
|
69
|
-
for await (const gff3Feature of featureStream) {
|
|
70
|
-
// Add new feature into database
|
|
71
|
-
try {
|
|
72
|
-
await this.addFeatureIntoDb(gff3Feature, backend);
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
// if the first feature is an error, assume the file isn't valid and throw
|
|
76
|
-
if (strict || featureCount === 0) {
|
|
77
|
-
throw error;
|
|
78
|
-
}
|
|
79
|
-
if (errorCount <= 99) {
|
|
80
|
-
logger.warn('Error parsing feature');
|
|
81
|
-
logger.warn(error);
|
|
82
|
-
if (errorCount === 99) {
|
|
83
|
-
logger.warn('Reached 100 parsing errors, omitting further warnings from log');
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
errorCount++;
|
|
87
|
-
}
|
|
88
|
-
featureCount++;
|
|
89
|
-
if (featureCount % 1000 === 0) {
|
|
90
|
-
logger.debug?.(`Processed ${featureCount} features`);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
async executeOnLocalGFF3(_backend) {
|
|
96
|
-
throw new Error('executeOnLocalGFF3 not implemented');
|
|
97
|
-
}
|
|
98
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
99
|
-
async executeOnClient(_dataStore) { }
|
|
100
20
|
getInverse() {
|
|
101
21
|
const { assembly, changes, logger, typeName } = this;
|
|
102
22
|
return new AddAssemblyAndFeaturesFromFileChange({ typeName, changes, assembly }, { logger });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddAssemblyAndFeaturesFromFileChange.js","sourceRoot":"","sources":["../../src/Changes/AddAssemblyAndFeaturesFromFileChange.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"AddAssemblyAndFeaturesFromFileChange.js","sourceRoot":"","sources":["../../src/Changes/AddAssemblyAndFeaturesFromFileChange.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,GAGvB,MAAM,2BAA2B,CAAA;AA0BlC,MAAM,OAAO,oCAAqC,SAAQ,sBAAsB;IAC9E,QAAQ,GAAG,sCAA+C,CAAA;IAC1D,OAAO,CAA+C;IAEtD,YACE,IAAoD,EACpD,OAAuB;QAEvB,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC1D,CAAC;IAED,IAAI,YAAY;QACd,OAAO,aAAa,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,2DAA2D,CAAA;IAC7G,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAA;YAC3C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,CAAA;QACtD,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;IACxC,CAAC;IAED,UAAU;QACR,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QACpD,OAAO,IAAI,oCAAoC,CAC7C,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAC/B,EAAE,MAAM,EAAE,CACX,CAAA;IACH,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AssemblySpecificChange, type ChangeOptions, type
|
|
1
|
+
import { AssemblySpecificChange, type ChangeOptions, type SerializedAssemblySpecificChange } from '@apollo-annotation/common';
|
|
2
2
|
export interface SerializedAddAssemblyFromExternalChangeBase extends SerializedAssemblySpecificChange {
|
|
3
3
|
typeName: 'AddAssemblyFromExternalChange';
|
|
4
4
|
}
|
|
@@ -22,14 +22,6 @@ export declare class AddAssemblyFromExternalChange extends AssemblySpecificChang
|
|
|
22
22
|
constructor(json: SerializedAddAssemblyFromExternalChange, options?: ChangeOptions);
|
|
23
23
|
get notification(): string;
|
|
24
24
|
toJSON(): SerializedAddAssemblyFromExternalChange;
|
|
25
|
-
/**
|
|
26
|
-
* Applies the required change to database
|
|
27
|
-
* @param backend - parameters from backend
|
|
28
|
-
* @returns
|
|
29
|
-
*/
|
|
30
|
-
executeOnServer(backend: ServerDataStore): Promise<void>;
|
|
31
|
-
executeOnLocalGFF3(_backend: LocalGFF3DataStore): Promise<void>;
|
|
32
|
-
executeOnClient(_dataStore: ClientDataStore): Promise<void>;
|
|
33
25
|
getInverse(): AddAssemblyFromExternalChange;
|
|
34
26
|
}
|
|
35
27
|
//# sourceMappingURL=AddAssemblyFromExternalChange.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddAssemblyFromExternalChange.d.ts","sourceRoot":"","sources":["../../src/Changes/AddAssemblyFromExternalChange.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddAssemblyFromExternalChange.d.ts","sourceRoot":"","sources":["../../src/Changes/AddAssemblyFromExternalChange.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,aAAa,EAClB,KAAK,gCAAgC,EACtC,MAAM,2BAA2B,CAAA;AAElC,MAAM,WAAW,2CACf,SAAQ,gCAAgC;IACxC,QAAQ,EAAE,+BAA+B,CAAA;CAC1C;AAED,MAAM,WAAW,oCAAoC;IACnD,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC5D;AAED,MAAM,WAAW,6CACf,SAAQ,2CAA2C,EACjD,oCAAoC;CAAG;AAE3C,MAAM,WAAW,+CACf,SAAQ,2CAA2C;IACnD,OAAO,EAAE,oCAAoC,EAAE,CAAA;CAChD;AAED,MAAM,MAAM,uCAAuC,GAC/C,6CAA6C,GAC7C,+CAA+C,CAAA;AAEnD,qBAAa,6BAA8B,SAAQ,sBAAsB;IACvE,QAAQ,kCAA2C;IACnD,OAAO,EAAE,oCAAoC,EAAE,CAAA;gBAG7C,IAAI,EAAE,uCAAuC,EAC7C,OAAO,CAAC,EAAE,aAAa;IAMzB,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,MAAM,IAAI,uCAAuC;IASjD,UAAU;CAOX"}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
|
|
4
|
-
/* eslint-disable @typescript-eslint/require-await */
|
|
5
1
|
import { AssemblySpecificChange, } from '@apollo-annotation/common';
|
|
6
|
-
import { BgzipIndexedFasta, IndexedFasta } from '@gmod/indexedfasta';
|
|
7
|
-
import { RemoteFile } from 'generic-filehandle2';
|
|
8
2
|
export class AddAssemblyFromExternalChange extends AssemblySpecificChange {
|
|
9
3
|
typeName = 'AddAssemblyFromExternalChange';
|
|
10
4
|
changes;
|
|
@@ -23,72 +17,6 @@ export class AddAssemblyFromExternalChange extends AssemblySpecificChange {
|
|
|
23
17
|
}
|
|
24
18
|
return { typeName, assembly, changes };
|
|
25
19
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Applies the required change to database
|
|
28
|
-
* @param backend - parameters from backend
|
|
29
|
-
* @returns
|
|
30
|
-
*/
|
|
31
|
-
async executeOnServer(backend) {
|
|
32
|
-
const { assemblyModel, checkModel, refSeqModel, user } = backend;
|
|
33
|
-
const { assembly, changes, logger } = this;
|
|
34
|
-
const { CHUNK_SIZE } = process.env;
|
|
35
|
-
const customChunkSize = CHUNK_SIZE && Number(CHUNK_SIZE);
|
|
36
|
-
for (const change of changes) {
|
|
37
|
-
const { assemblyName, externalLocation } = change;
|
|
38
|
-
const { fa, fai, gzi } = externalLocation;
|
|
39
|
-
const sequenceAdapter = gzi
|
|
40
|
-
? new BgzipIndexedFasta({
|
|
41
|
-
fasta: new RemoteFile(fa, { fetch }),
|
|
42
|
-
fai: new RemoteFile(fai, { fetch }),
|
|
43
|
-
gzi: new RemoteFile(gzi, { fetch }),
|
|
44
|
-
})
|
|
45
|
-
: new IndexedFasta({
|
|
46
|
-
fasta: new RemoteFile(fa, { fetch }),
|
|
47
|
-
fai: new RemoteFile(fai, { fetch }),
|
|
48
|
-
});
|
|
49
|
-
const allSequenceSizes = await sequenceAdapter.getSequenceSizes();
|
|
50
|
-
if (!allSequenceSizes) {
|
|
51
|
-
throw new Error('No data read from indexed fasta getSequenceSizes');
|
|
52
|
-
}
|
|
53
|
-
const assemblyDoc = await assemblyModel
|
|
54
|
-
.findOne({ name: assemblyName })
|
|
55
|
-
.exec();
|
|
56
|
-
if (assemblyDoc) {
|
|
57
|
-
throw new Error(`Assembly "${assemblyName}" already exists`);
|
|
58
|
-
}
|
|
59
|
-
const checkDocs = await checkModel.find({ default: true }).exec();
|
|
60
|
-
const checks = checkDocs.map((checkDoc) => checkDoc._id.toHexString());
|
|
61
|
-
const [newAssemblyDoc] = await assemblyModel.create([
|
|
62
|
-
{
|
|
63
|
-
_id: assembly,
|
|
64
|
-
name: assemblyName,
|
|
65
|
-
user,
|
|
66
|
-
status: -1,
|
|
67
|
-
externalLocation,
|
|
68
|
-
checks,
|
|
69
|
-
},
|
|
70
|
-
]);
|
|
71
|
-
logger.debug?.(`Added new assembly "${assemblyName}", docId "${newAssemblyDoc._id}"`);
|
|
72
|
-
for (const sequenceName in allSequenceSizes) {
|
|
73
|
-
const [newRefSeqDoc] = await refSeqModel.create([
|
|
74
|
-
{
|
|
75
|
-
name: sequenceName,
|
|
76
|
-
assembly: newAssemblyDoc._id,
|
|
77
|
-
length: allSequenceSizes[sequenceName],
|
|
78
|
-
...(customChunkSize ? { chunkSize: customChunkSize } : null),
|
|
79
|
-
user,
|
|
80
|
-
status: -1,
|
|
81
|
-
},
|
|
82
|
-
]);
|
|
83
|
-
logger.debug?.(`Added new refSeq "${sequenceName}", docId "${newRefSeqDoc._id}"`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
async executeOnLocalGFF3(_backend) {
|
|
88
|
-
throw new Error('executeOnLocalGFF3 not implemented');
|
|
89
|
-
}
|
|
90
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
91
|
-
async executeOnClient(_dataStore) { }
|
|
92
20
|
getInverse() {
|
|
93
21
|
const { assembly, changes, logger, typeName } = this;
|
|
94
22
|
return new AddAssemblyFromExternalChange({ typeName, changes, assembly }, { logger });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddAssemblyFromExternalChange.js","sourceRoot":"","sources":["../../src/Changes/AddAssemblyFromExternalChange.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"AddAssemblyFromExternalChange.js","sourceRoot":"","sources":["../../src/Changes/AddAssemblyFromExternalChange.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,GAGvB,MAAM,2BAA2B,CAAA;AAyBlC,MAAM,OAAO,6BAA8B,SAAQ,sBAAsB;IACvE,QAAQ,GAAG,+BAAwC,CAAA;IACnD,OAAO,CAAwC;IAE/C,YACE,IAA6C,EAC7C,OAAuB;QAEvB,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC1D,CAAC;IAED,IAAI,YAAY;QACd,OAAO,aAAa,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,2DAA2D,CAAA;IAC7G,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,GAAG,OAAO,CAAA;YACpD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAA;QAC/D,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;IACxC,CAAC;IAED,UAAU;QACR,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QACpD,OAAO,IAAI,6BAA6B,CACtC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAC/B,EAAE,MAAM,EAAE,CACX,CAAA;IACH,CAAC;CACF"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { FromFileBaseChange } from './FromFileBaseChange.js';
|
|
1
|
+
import { AssemblySpecificChange, type ChangeOptions, type SerializedAssemblySpecificChange } from '@apollo-annotation/common';
|
|
3
2
|
export interface SerializedAddAssemblyFromFileChangeBase extends SerializedAssemblySpecificChange {
|
|
4
3
|
typeName: 'AddAssemblyFromFileChange';
|
|
5
4
|
}
|
|
@@ -19,26 +18,12 @@ export interface SerializedAddAssemblyFromFileChangeMultiple extends SerializedA
|
|
|
19
18
|
changes: AddAssemblyFromFileChangeDetails[];
|
|
20
19
|
}
|
|
21
20
|
export type SerializedAddAssemblyFromFileChange = SerializedAddAssemblyFromFileChangeSingle | SerializedAddAssemblyFromFileChangeMultiple;
|
|
22
|
-
export declare class AddAssemblyFromFileChange extends
|
|
21
|
+
export declare class AddAssemblyFromFileChange extends AssemblySpecificChange {
|
|
23
22
|
typeName: "AddAssemblyFromFileChange";
|
|
24
23
|
changes: AddAssemblyFromFileChangeDetails[];
|
|
25
24
|
constructor(json: SerializedAddAssemblyFromFileChange, options?: ChangeOptions);
|
|
26
25
|
get notification(): string;
|
|
27
26
|
toJSON(): SerializedAddAssemblyFromFileChange;
|
|
28
|
-
/**
|
|
29
|
-
* Applies the required change to database
|
|
30
|
-
* @param backend - parameters from backend
|
|
31
|
-
* @returns
|
|
32
|
-
*/
|
|
33
|
-
executeOnServer(backend: ServerDataStore): Promise<void>;
|
|
34
|
-
executeOnServerIndexed(backend: ServerDataStore, assemblyName: string, fileIds: {
|
|
35
|
-
fa: string;
|
|
36
|
-
fai: string;
|
|
37
|
-
gzi: string;
|
|
38
|
-
}): Promise<void>;
|
|
39
|
-
executeOnServerFasta(backend: ServerDataStore, assemblyName: string, fileId: string): Promise<void>;
|
|
40
|
-
executeOnLocalGFF3(_backend: LocalGFF3DataStore): Promise<void>;
|
|
41
|
-
executeOnClient(_dataStore: ClientDataStore): Promise<void>;
|
|
42
27
|
getInverse(): AddAssemblyFromFileChange;
|
|
43
28
|
}
|
|
44
29
|
//# sourceMappingURL=AddAssemblyFromFileChange.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddAssemblyFromFileChange.d.ts","sourceRoot":"","sources":["../../src/Changes/AddAssemblyFromFileChange.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddAssemblyFromFileChange.d.ts","sourceRoot":"","sources":["../../src/Changes/AddAssemblyFromFileChange.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,aAAa,EAClB,KAAK,gCAAgC,EACtC,MAAM,2BAA2B,CAAA;AAElC,MAAM,WAAW,uCACf,SAAQ,gCAAgC;IACxC,QAAQ,EAAE,2BAA2B,CAAA;CACtC;AAED,MAAM,WAAW,gCAAgC;IAC/C,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACnE;AAED,MAAM,WAAW,yCACf,SAAQ,uCAAuC,EAC7C,gCAAgC;CAAG;AAEvC,MAAM,WAAW,2CACf,SAAQ,uCAAuC;IAC/C,OAAO,EAAE,gCAAgC,EAAE,CAAA;CAC5C;AAED,MAAM,MAAM,mCAAmC,GAC3C,yCAAyC,GACzC,2CAA2C,CAAA;AAE/C,qBAAa,yBAA0B,SAAQ,sBAAsB;IACnE,QAAQ,8BAAuC;IAC/C,OAAO,EAAE,gCAAgC,EAAE,CAAA;gBAGzC,IAAI,EAAE,mCAAmC,EACzC,OAAO,CAAC,EAAE,aAAa;IAMzB,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,MAAM,IAAI,mCAAmC;IAS7C,UAAU;CAOX"}
|