@apollo-annotation/shared 0.1.19 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/Changes/AddAssemblyAndFeaturesFromFileChange.d.ts +33 -0
  2. package/dist/Changes/AddAssemblyAndFeaturesFromFileChange.js +86 -0
  3. package/dist/Changes/AddAssemblyAndFeaturesFromFileChange.js.map +1 -0
  4. package/dist/Changes/AddAssemblyFromExternalChange.d.ts +34 -0
  5. package/dist/Changes/AddAssemblyFromExternalChange.js +100 -0
  6. package/dist/Changes/AddAssemblyFromExternalChange.js.map +1 -0
  7. package/dist/Changes/AddAssemblyFromFileChange.d.ts +43 -0
  8. package/dist/Changes/AddAssemblyFromFileChange.js +146 -0
  9. package/dist/Changes/AddAssemblyFromFileChange.js.map +1 -0
  10. package/dist/Changes/AddFeatureChange.d.ts +35 -0
  11. package/dist/Changes/AddFeatureChange.js +169 -0
  12. package/dist/Changes/AddFeatureChange.js.map +1 -0
  13. package/dist/Changes/AddFeaturesFromFileChange.d.ts +32 -0
  14. package/dist/Changes/AddFeaturesFromFileChange.js +76 -0
  15. package/dist/Changes/AddFeaturesFromFileChange.js.map +1 -0
  16. package/dist/Changes/AddRefSeqAliasesChange.d.ts +20 -0
  17. package/dist/Changes/AddRefSeqAliasesChange.js +61 -0
  18. package/dist/Changes/AddRefSeqAliasesChange.js.map +1 -0
  19. package/dist/Changes/DeleteAssemblyChange.d.ts +18 -0
  20. package/dist/Changes/DeleteAssemblyChange.js +72 -0
  21. package/dist/Changes/DeleteAssemblyChange.js.map +1 -0
  22. package/dist/Changes/DeleteFeatureChange.d.ts +42 -0
  23. package/dist/Changes/DeleteFeatureChange.js +143 -0
  24. package/dist/Changes/DeleteFeatureChange.js.map +1 -0
  25. package/dist/Changes/DeleteUserChange.d.ts +25 -0
  26. package/dist/Changes/DeleteUserChange.js +53 -0
  27. package/dist/Changes/DeleteUserChange.js.map +1 -0
  28. package/dist/Changes/FeatureAttributeChange.d.ts +31 -0
  29. package/dist/Changes/FeatureAttributeChange.js +112 -0
  30. package/dist/Changes/FeatureAttributeChange.js.map +1 -0
  31. package/dist/Changes/FromFileBaseChange.d.ts +9 -0
  32. package/dist/Changes/FromFileBaseChange.js +187 -0
  33. package/dist/Changes/FromFileBaseChange.js.map +1 -0
  34. package/dist/Changes/ImportJBrowseConfigChange.d.ts +43 -0
  35. package/dist/Changes/ImportJBrowseConfigChange.js +67 -0
  36. package/dist/Changes/ImportJBrowseConfigChange.js.map +1 -0
  37. package/dist/Changes/LocationEndChange.d.ts +32 -0
  38. package/dist/Changes/LocationEndChange.js +129 -0
  39. package/dist/Changes/LocationEndChange.js.map +1 -0
  40. package/dist/Changes/LocationStartChange.d.ts +32 -0
  41. package/dist/Changes/LocationStartChange.js +129 -0
  42. package/dist/Changes/LocationStartChange.js.map +1 -0
  43. package/dist/Changes/StrandChange.d.ts +31 -0
  44. package/dist/Changes/StrandChange.js +114 -0
  45. package/dist/Changes/StrandChange.js.map +1 -0
  46. package/dist/Changes/TypeChange.d.ts +31 -0
  47. package/dist/Changes/TypeChange.js +114 -0
  48. package/dist/Changes/TypeChange.js.map +1 -0
  49. package/dist/Changes/UserChange.d.ts +25 -0
  50. package/dist/Changes/UserChange.js +51 -0
  51. package/dist/Changes/UserChange.js.map +1 -0
  52. package/dist/Changes/index.d.ts +50 -0
  53. package/dist/Changes/index.js +55 -0
  54. package/dist/Changes/index.js.map +1 -0
  55. package/dist/Checks/CDSCheck.d.ts +8 -0
  56. package/dist/Checks/CDSCheck.js +197 -0
  57. package/dist/Checks/CDSCheck.js.map +1 -0
  58. package/dist/Checks/index.d.ts +1 -0
  59. package/dist/Checks/index.js +5 -0
  60. package/dist/Checks/index.js.map +1 -0
  61. package/dist/Common/index.d.ts +1 -0
  62. package/dist/Common/index.js +5 -0
  63. package/dist/Common/index.js.map +1 -0
  64. package/dist/Common/jwtPayload.d.ts +12 -0
  65. package/dist/Common/jwtPayload.js +16 -0
  66. package/dist/Common/jwtPayload.js.map +1 -0
  67. package/dist/GFF3/gff3ToAnnotationFeature.d.ts +3 -0
  68. package/dist/GFF3/gff3ToAnnotationFeature.js +211 -0
  69. package/dist/GFF3/gff3ToAnnotationFeature.js.map +1 -0
  70. package/dist/GFF3/gff3ToAnnotationFeature.test.d.ts +1 -0
  71. package/dist/GFF3/gff3ToAnnotationFeature.test.js +174 -0
  72. package/dist/GFF3/gff3ToAnnotationFeature.test.js.map +1 -0
  73. package/dist/GFF3/gffReservedKeys.d.ts +5 -0
  74. package/dist/GFF3/gffReservedKeys.js +34 -0
  75. package/dist/GFF3/gffReservedKeys.js.map +1 -0
  76. package/dist/GFF3/index.d.ts +2 -0
  77. package/dist/GFF3/index.js +6 -0
  78. package/dist/GFF3/index.js.map +1 -0
  79. package/dist/Messages.d.ts +28 -0
  80. package/dist/Messages.js +3 -0
  81. package/dist/Messages.js.map +1 -0
  82. package/dist/Operations/GetAssembliesOperation.d.ts +13 -0
  83. package/dist/Operations/GetAssembliesOperation.js +20 -0
  84. package/dist/Operations/GetAssembliesOperation.js.map +1 -0
  85. package/dist/Operations/GetFeaturesOperation.d.ts +26 -0
  86. package/dist/Operations/GetFeaturesOperation.js +42 -0
  87. package/dist/Operations/GetFeaturesOperation.js.map +1 -0
  88. package/dist/Operations/index.d.ts +8 -0
  89. package/dist/Operations/index.js +10 -0
  90. package/dist/Operations/index.js.map +1 -0
  91. package/dist/Validations/CoreValidation.d.ts +17 -0
  92. package/dist/Validations/CoreValidation.js +36 -0
  93. package/dist/Validations/CoreValidation.js.map +1 -0
  94. package/dist/Validations/ParentChildValidation.d.ts +17 -0
  95. package/dist/Validations/ParentChildValidation.js +61 -0
  96. package/dist/Validations/ParentChildValidation.js.map +1 -0
  97. package/dist/Validations/Validation.d.ts +27 -0
  98. package/dist/Validations/Validation.js +27 -0
  99. package/dist/Validations/Validation.js.map +1 -0
  100. package/dist/Validations/ValidationSet.d.ts +24 -0
  101. package/dist/Validations/ValidationSet.js +86 -0
  102. package/dist/Validations/ValidationSet.js.map +1 -0
  103. package/dist/Validations/index.d.ts +4 -0
  104. package/dist/Validations/index.js +8 -0
  105. package/dist/Validations/index.js.map +1 -0
  106. package/dist/Validations/soSequenceTypes.d.ts +2 -0
  107. package/dist/Validations/soSequenceTypes.js +1868 -0
  108. package/dist/Validations/soSequenceTypes.js.map +1 -0
  109. package/dist/index.d.ts +8 -0
  110. package/dist/index.js +12 -0
  111. package/dist/index.js.map +1 -0
  112. package/dist/tsconfig.tsbuildinfo +1 -0
  113. package/dist/util.d.ts +4 -0
  114. package/dist/util.js +102 -0
  115. package/dist/util.js.map +1 -0
  116. package/package.json +8 -5
  117. package/src/Changes/AddAssemblyAndFeaturesFromFileChange.ts +10 -6
  118. package/src/Changes/AddAssemblyFromExternalChange.ts +4 -1
  119. package/src/Changes/AddAssemblyFromFileChange.ts +138 -41
  120. package/src/Changes/ImportJBrowseConfigChange.ts +2 -1
  121. package/src/Checks/CDSCheck.ts +202 -252
  122. package/src/GFF3/gff3ToAnnotationFeature.test.ts +165 -5
  123. package/src/GFF3/gff3ToAnnotationFeature.ts +16 -16
  124. package/src/util.ts +1 -0
  125. package/test_data/braker.gff +13 -0
  126. package/test_data/example01.gff3 +26 -0
  127. package/test_data/example01.json +236 -0
  128. package/test_data/example02.json +225 -0
  129. package/test_data/example04.json +225 -0
  130. package/test_data/example05.gff3 +30 -0
  131. package/test_data/example06.gff3 +30 -0
  132. package/test_data/example07.gff3 +30 -0
  133. package/test_data/gene_mrna.gff3 +4 -0
  134. package/test_data/gene_representations.gff3 +1781 -0
  135. package/test_data/one_cds.gff3 +9 -0
  136. package/test_data/one_cds.json +67 -0
  137. package/test_data/two_cds.gff3 +9 -0
  138. package/test_data/two_cds.json +67 -0
@@ -0,0 +1,33 @@
1
+ import { ChangeOptions, ClientDataStore, LocalGFF3DataStore, SerializedAssemblySpecificChange, ServerDataStore } from '@apollo-annotation/common';
2
+ import { FromFileBaseChange } from './FromFileBaseChange';
3
+ export interface SerializedAddAssemblyAndFeaturesFromFileChangeBase extends SerializedAssemblySpecificChange {
4
+ typeName: 'AddAssemblyAndFeaturesFromFileChange';
5
+ }
6
+ export interface AddAssemblyAndFeaturesFromFileChangeDetails {
7
+ assemblyName: string;
8
+ fileIds: {
9
+ fa: string;
10
+ };
11
+ }
12
+ export interface SerializedAddAssemblyAndFeaturesFromFileChangeSingle extends SerializedAddAssemblyAndFeaturesFromFileChangeBase, AddAssemblyAndFeaturesFromFileChangeDetails {
13
+ }
14
+ export interface SerializedAddAssemblyAndFeaturesFromFileChangeMultiple extends SerializedAddAssemblyAndFeaturesFromFileChangeBase {
15
+ changes: AddAssemblyAndFeaturesFromFileChangeDetails[];
16
+ }
17
+ export type SerializedAddAssemblyAndFeaturesFromFileChange = SerializedAddAssemblyAndFeaturesFromFileChangeSingle | SerializedAddAssemblyAndFeaturesFromFileChangeMultiple;
18
+ export declare class AddAssemblyAndFeaturesFromFileChange extends FromFileBaseChange {
19
+ typeName: "AddAssemblyAndFeaturesFromFileChange";
20
+ changes: AddAssemblyAndFeaturesFromFileChangeDetails[];
21
+ constructor(json: SerializedAddAssemblyAndFeaturesFromFileChange, options?: ChangeOptions);
22
+ get notification(): string;
23
+ toJSON(): SerializedAddAssemblyAndFeaturesFromFileChange;
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
+ getInverse(): AddAssemblyAndFeaturesFromFileChange;
33
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/require-await */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AddAssemblyAndFeaturesFromFileChange = void 0;
5
+ const FromFileBaseChange_1 = require("./FromFileBaseChange");
6
+ class AddAssemblyAndFeaturesFromFileChange extends FromFileBaseChange_1.FromFileBaseChange {
7
+ typeName = 'AddAssemblyAndFeaturesFromFileChange';
8
+ changes;
9
+ constructor(json, options) {
10
+ super(json, options);
11
+ this.changes = 'changes' in json ? json.changes : [json];
12
+ }
13
+ get notification() {
14
+ return `Assembly "${this.changes[0].assemblyName}" added successfully. To use it, please refresh the page.`;
15
+ }
16
+ toJSON() {
17
+ const { assembly, changes, typeName } = this;
18
+ if (changes.length === 1) {
19
+ const [{ assemblyName, fileIds }] = changes;
20
+ return { typeName, assembly, assemblyName, fileIds };
21
+ }
22
+ return { typeName, assembly, changes };
23
+ }
24
+ /**
25
+ * Applies the required change to database
26
+ * @param backend - parameters from backend
27
+ * @returns
28
+ */
29
+ async executeOnServer(backend) {
30
+ const { assemblyModel, checkModel, fileModel, filesService, user } = backend;
31
+ const { assembly, changes, logger } = this;
32
+ for (const change of changes) {
33
+ const { assemblyName, fileIds } = change;
34
+ const fileId = fileIds.fa;
35
+ const { FILE_UPLOAD_FOLDER } = process.env;
36
+ if (!FILE_UPLOAD_FOLDER) {
37
+ throw new Error('No FILE_UPLOAD_FOLDER found in .env file');
38
+ }
39
+ // Get file checksum
40
+ const fileDoc = await fileModel.findById(fileId).exec();
41
+ if (!fileDoc) {
42
+ throw new Error(`File "${fileId}" not found in Mongo`);
43
+ }
44
+ logger.debug?.(`FileId "${fileId}", checksum "${fileDoc.checksum}"`);
45
+ // Check and add new assembly
46
+ const assemblyDoc = await assemblyModel
47
+ .findOne({ name: assemblyName })
48
+ .exec();
49
+ if (assemblyDoc) {
50
+ throw new Error(`Assembly "${assemblyName}" already exists`);
51
+ }
52
+ // get checks
53
+ const checkDocs = await checkModel.find({ default: true }).exec();
54
+ const checks = checkDocs.map((checkDoc) => checkDoc._id.toHexString());
55
+ // Add assembly
56
+ const [newAssemblyDoc] = await assemblyModel.create([
57
+ { _id: assembly, name: assemblyName, user, status: -1, fileId, checks },
58
+ ]);
59
+ logger.debug?.(`Added new assembly "${assemblyName}", docId "${newAssemblyDoc._id.toHexString()}"`);
60
+ logger.debug?.(`File type: "${fileDoc.type}"`);
61
+ // Add refSeqs
62
+ // We cannot use Mongo 'session' / transaction here because Mongo has 16 MB limit for transaction
63
+ await this.addRefSeqIntoDb(fileDoc, newAssemblyDoc._id.toString(), backend);
64
+ // Loop all features
65
+ logger.debug?.(`**************** LOOPATAAN KAIKKI FEATURET SEURAAVAKSI File type: "${fileDoc.type}"`);
66
+ const featureStream = filesService.parseGFF3(filesService.getFileStream(fileDoc));
67
+ for await (const f of featureStream) {
68
+ const gff3Feature = f;
69
+ logger.verbose?.(`ENTRY=${JSON.stringify(gff3Feature)}`);
70
+ // Add new feature into database
71
+ await this.addFeatureIntoDb(gff3Feature, backend);
72
+ }
73
+ }
74
+ }
75
+ async executeOnLocalGFF3(_backend) {
76
+ throw new Error('executeOnLocalGFF3 not implemented');
77
+ }
78
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
79
+ async executeOnClient(_dataStore) { }
80
+ getInverse() {
81
+ const { assembly, changes, logger, typeName } = this;
82
+ return new AddAssemblyAndFeaturesFromFileChange({ typeName, changes, assembly }, { logger });
83
+ }
84
+ }
85
+ exports.AddAssemblyAndFeaturesFromFileChange = AddAssemblyAndFeaturesFromFileChange;
86
+ //# sourceMappingURL=AddAssemblyAndFeaturesFromFileChange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddAssemblyAndFeaturesFromFileChange.js","sourceRoot":"","sources":["../../src/Changes/AddAssemblyAndFeaturesFromFileChange.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { AssemblySpecificChange, ChangeOptions, ClientDataStore, LocalGFF3DataStore, SerializedAssemblySpecificChange, ServerDataStore } from '@apollo-annotation/common';
2
+ export interface SerializedAddAssemblyFromExternalChangeBase extends SerializedAssemblySpecificChange {
3
+ typeName: 'AddAssemblyFromExternalChange';
4
+ }
5
+ export interface AddAssemblyFromExternalChangeDetails {
6
+ assemblyName: string;
7
+ externalLocation: {
8
+ fa: string;
9
+ fai: string;
10
+ gzi?: string;
11
+ };
12
+ }
13
+ export interface SerializedAddAssemblyFromExternalChangeSingle extends SerializedAddAssemblyFromExternalChangeBase, AddAssemblyFromExternalChangeDetails {
14
+ }
15
+ export interface SerializedAddAssemblyFromExternalChangeMultiple extends SerializedAddAssemblyFromExternalChangeBase {
16
+ changes: AddAssemblyFromExternalChangeDetails[];
17
+ }
18
+ export type SerializedAddAssemblyFromExternalChange = SerializedAddAssemblyFromExternalChangeSingle | SerializedAddAssemblyFromExternalChangeMultiple;
19
+ export declare class AddAssemblyFromExternalChange extends AssemblySpecificChange {
20
+ typeName: "AddAssemblyFromExternalChange";
21
+ changes: AddAssemblyFromExternalChangeDetails[];
22
+ constructor(json: SerializedAddAssemblyFromExternalChange, options?: ChangeOptions);
23
+ get notification(): string;
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
+ getInverse(): AddAssemblyFromExternalChange;
34
+ }
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/restrict-template-expressions */
3
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.AddAssemblyFromExternalChange = void 0;
6
+ /* eslint-disable @typescript-eslint/require-await */
7
+ const common_1 = require("@apollo-annotation/common");
8
+ const indexedfasta_1 = require("@gmod/indexedfasta");
9
+ const generic_filehandle_1 = require("generic-filehandle");
10
+ class AddAssemblyFromExternalChange extends common_1.AssemblySpecificChange {
11
+ typeName = 'AddAssemblyFromExternalChange';
12
+ changes;
13
+ constructor(json, options) {
14
+ super(json, options);
15
+ this.changes = 'changes' in json ? json.changes : [json];
16
+ }
17
+ get notification() {
18
+ return `Assembly "${this.changes[0].assemblyName}" added successfully. To use it, please refresh the page.`;
19
+ }
20
+ toJSON() {
21
+ const { assembly, changes, typeName } = this;
22
+ if (changes.length === 1) {
23
+ const [{ assemblyName, externalLocation }] = changes;
24
+ return { typeName, assembly, assemblyName, externalLocation };
25
+ }
26
+ return { typeName, assembly, changes };
27
+ }
28
+ /**
29
+ * Applies the required change to database
30
+ * @param backend - parameters from backend
31
+ * @returns
32
+ */
33
+ async executeOnServer(backend) {
34
+ const { assemblyModel, checkModel, refSeqModel, user } = backend;
35
+ const { assembly, changes, logger } = this;
36
+ const { CHUNK_SIZE } = process.env;
37
+ const customChunkSize = CHUNK_SIZE && Number(CHUNK_SIZE);
38
+ for (const change of changes) {
39
+ const { assemblyName, externalLocation } = change;
40
+ const { fa, fai, gzi } = externalLocation;
41
+ const sequenceAdapter = gzi
42
+ ? new indexedfasta_1.BgzipIndexedFasta({
43
+ fasta: new generic_filehandle_1.RemoteFile(fa, { fetch }),
44
+ fai: new generic_filehandle_1.RemoteFile(fai, { fetch }),
45
+ gzi: new generic_filehandle_1.RemoteFile(gzi, { fetch }),
46
+ })
47
+ : new indexedfasta_1.IndexedFasta({
48
+ fasta: new generic_filehandle_1.RemoteFile(fa, { fetch }),
49
+ fai: new generic_filehandle_1.RemoteFile(fai, { fetch }),
50
+ });
51
+ const allSequenceSizes = await sequenceAdapter.getSequenceSizes();
52
+ if (!allSequenceSizes) {
53
+ throw new Error('No data read from indexed fasta getSequenceSizes');
54
+ }
55
+ const assemblyDoc = await assemblyModel
56
+ .findOne({ name: assemblyName })
57
+ .exec();
58
+ if (assemblyDoc) {
59
+ throw new Error(`Assembly "${assemblyName}" already exists`);
60
+ }
61
+ const checkDocs = await checkModel.find({ default: true }).exec();
62
+ const checks = checkDocs.map((checkDoc) => checkDoc._id.toHexString());
63
+ const [newAssemblyDoc] = await assemblyModel.create([
64
+ {
65
+ _id: assembly,
66
+ name: assemblyName,
67
+ user,
68
+ status: -1,
69
+ externalLocation,
70
+ checks,
71
+ },
72
+ ]);
73
+ logger.debug?.(`Added new assembly "${assemblyName}", docId "${newAssemblyDoc._id}"`);
74
+ for (const sequenceName in allSequenceSizes) {
75
+ const [newRefSeqDoc] = await refSeqModel.create([
76
+ {
77
+ name: sequenceName,
78
+ assembly: newAssemblyDoc._id,
79
+ length: allSequenceSizes[sequenceName],
80
+ ...(customChunkSize ? { chunkSize: customChunkSize } : null),
81
+ user,
82
+ status: -1,
83
+ },
84
+ ]);
85
+ logger.debug?.(`Added new refSeq "${sequenceName}", docId "${newRefSeqDoc._id}"`);
86
+ }
87
+ }
88
+ }
89
+ async executeOnLocalGFF3(_backend) {
90
+ throw new Error('executeOnLocalGFF3 not implemented');
91
+ }
92
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
93
+ async executeOnClient(_dataStore) { }
94
+ getInverse() {
95
+ const { assembly, changes, logger, typeName } = this;
96
+ return new AddAssemblyFromExternalChange({ typeName, changes, assembly }, { logger });
97
+ }
98
+ }
99
+ exports.AddAssemblyFromExternalChange = AddAssemblyFromExternalChange;
100
+ //# sourceMappingURL=AddAssemblyFromExternalChange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddAssemblyFromExternalChange.js","sourceRoot":"","sources":["../../src/Changes/AddAssemblyFromExternalChange.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { ChangeOptions, ClientDataStore, LocalGFF3DataStore, SerializedAssemblySpecificChange, ServerDataStore } from '@apollo-annotation/common';
2
+ import { FromFileBaseChange } from './FromFileBaseChange';
3
+ export interface SerializedAddAssemblyFromFileChangeBase extends SerializedAssemblySpecificChange {
4
+ typeName: 'AddAssemblyFromFileChange';
5
+ }
6
+ export interface AddAssemblyFromFileChangeDetails {
7
+ assemblyName: string;
8
+ fileIds: {
9
+ fa: string;
10
+ } | {
11
+ fa: string;
12
+ fai: string;
13
+ gzi: string;
14
+ };
15
+ }
16
+ export interface SerializedAddAssemblyFromFileChangeSingle extends SerializedAddAssemblyFromFileChangeBase, AddAssemblyFromFileChangeDetails {
17
+ }
18
+ export interface SerializedAddAssemblyFromFileChangeMultiple extends SerializedAddAssemblyFromFileChangeBase {
19
+ changes: AddAssemblyFromFileChangeDetails[];
20
+ }
21
+ export type SerializedAddAssemblyFromFileChange = SerializedAddAssemblyFromFileChangeSingle | SerializedAddAssemblyFromFileChangeMultiple;
22
+ export declare class AddAssemblyFromFileChange extends FromFileBaseChange {
23
+ typeName: "AddAssemblyFromFileChange";
24
+ changes: AddAssemblyFromFileChangeDetails[];
25
+ constructor(json: SerializedAddAssemblyFromFileChange, options?: ChangeOptions);
26
+ get notification(): string;
27
+ 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
+ getInverse(): AddAssemblyFromFileChange;
43
+ }
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AddAssemblyFromFileChange = void 0;
4
+ const indexedfasta_1 = require("@gmod/indexedfasta");
5
+ const FromFileBaseChange_1 = require("./FromFileBaseChange");
6
+ class AddAssemblyFromFileChange extends FromFileBaseChange_1.FromFileBaseChange {
7
+ typeName = 'AddAssemblyFromFileChange';
8
+ changes;
9
+ constructor(json, options) {
10
+ super(json, options);
11
+ this.changes = 'changes' in json ? json.changes : [json];
12
+ }
13
+ get notification() {
14
+ return `Assembly "${this.changes[0].assemblyName}" added successfully. To use it, please refresh the page.`;
15
+ }
16
+ toJSON() {
17
+ const { assembly, changes, typeName } = this;
18
+ if (changes.length === 1) {
19
+ const [{ assemblyName, fileIds }] = changes;
20
+ return { typeName, assembly, assemblyName, fileIds };
21
+ }
22
+ return { typeName, assembly, changes };
23
+ }
24
+ /**
25
+ * Applies the required change to database
26
+ * @param backend - parameters from backend
27
+ * @returns
28
+ */
29
+ async executeOnServer(backend) {
30
+ const { changes } = this;
31
+ for (const change of changes) {
32
+ const { assemblyName, fileIds } = change;
33
+ await ('gzi' in fileIds
34
+ ? this.executeOnServerIndexed(backend, assemblyName, fileIds)
35
+ : this.executeOnServerFasta(backend, assemblyName, fileIds.fa));
36
+ }
37
+ }
38
+ async executeOnServerIndexed(backend, assemblyName, fileIds) {
39
+ const { CHUNK_SIZE } = process.env;
40
+ const customChunkSize = CHUNK_SIZE && Number(CHUNK_SIZE);
41
+ const { FILE_UPLOAD_FOLDER } = process.env;
42
+ if (!FILE_UPLOAD_FOLDER) {
43
+ throw new Error('No FILE_UPLOAD_FOLDER found in .env file');
44
+ }
45
+ const { fa, fai, gzi } = fileIds;
46
+ const { assemblyModel, checkModel, fileModel, filesService, refSeqModel, user, } = backend;
47
+ const faDoc = await fileModel.findById(fa);
48
+ const faChecksum = faDoc?.checksum;
49
+ if (!faChecksum) {
50
+ throw new Error(`No checksum for file document ${faDoc}`);
51
+ }
52
+ const faiDoc = await fileModel.findById(fai);
53
+ const faiChecksum = faiDoc?.checksum;
54
+ if (!faiChecksum) {
55
+ throw new Error(`No checksum for file document ${faiDoc}`);
56
+ }
57
+ const gziDoc = await fileModel.findById(gzi);
58
+ const gziChecksum = gziDoc?.checksum;
59
+ if (!gziChecksum) {
60
+ throw new Error(`No checksum for file document ${gziDoc}`);
61
+ }
62
+ const sequenceAdapter = new indexedfasta_1.BgzipIndexedFasta({
63
+ fasta: filesService.getFileHandle(faDoc),
64
+ fai: filesService.getFileHandle(faiDoc),
65
+ gzi: filesService.getFileHandle(gziDoc),
66
+ });
67
+ const allSequenceSizes = await sequenceAdapter.getSequenceSizes();
68
+ const assemblyDoc = await assemblyModel
69
+ .findOne({ name: assemblyName })
70
+ .exec();
71
+ if (assemblyDoc) {
72
+ throw new Error(`Assembly "${assemblyName}" already exists`);
73
+ }
74
+ const checkDocs = await checkModel.find({ default: true }).exec();
75
+ const checks = checkDocs.map((checkDoc) => checkDoc._id.toHexString());
76
+ const [newAssemblyDoc] = await assemblyModel.create([
77
+ {
78
+ _id: this.assembly,
79
+ name: assemblyName,
80
+ user,
81
+ status: -1,
82
+ fileIds,
83
+ checks,
84
+ },
85
+ ]);
86
+ this.logger.debug?.(`Added new assembly "${assemblyName}", docId "${newAssemblyDoc._id}"`);
87
+ for (const sequenceName in allSequenceSizes) {
88
+ const [newRefSeqDoc] = await refSeqModel.create([
89
+ {
90
+ name: sequenceName,
91
+ assembly: newAssemblyDoc._id,
92
+ length: allSequenceSizes[sequenceName],
93
+ ...(customChunkSize ? { chunkSize: customChunkSize } : null),
94
+ user,
95
+ status: -1,
96
+ },
97
+ ]);
98
+ this.logger.debug?.(`Added new refSeq "${sequenceName}", docId "${newRefSeqDoc._id}"`);
99
+ }
100
+ }
101
+ async executeOnServerFasta(backend, assemblyName, fileId) {
102
+ const { assemblyModel, checkModel, fileModel, user } = backend;
103
+ // Get file checksum
104
+ const fileDoc = await fileModel.findById(fileId).exec();
105
+ if (!fileDoc) {
106
+ throw new Error(`File "${fileId}" not found in Mongo`);
107
+ }
108
+ this.logger.debug?.(`FileId "${fileId}", checksum "${fileDoc.checksum}"`);
109
+ // Check and add new assembly
110
+ const assemblyDoc = await assemblyModel
111
+ .findOne({ name: assemblyName })
112
+ .exec();
113
+ if (assemblyDoc) {
114
+ throw new Error(`Assembly "${assemblyName}" already exists`);
115
+ }
116
+ const checkDocs = await checkModel.find({ default: true }).exec();
117
+ const checks = checkDocs.map((checkDoc) => checkDoc._id.toHexString());
118
+ // Add assembly
119
+ const [newAssemblyDoc] = await assemblyModel.create([
120
+ {
121
+ _id: this.assembly,
122
+ name: assemblyName,
123
+ user,
124
+ status: -1,
125
+ fileIds: { fa: fileId },
126
+ checks,
127
+ },
128
+ ]);
129
+ this.logger.debug?.(`Added new assembly "${assemblyName}", docId "${newAssemblyDoc._id}"`);
130
+ this.logger.debug?.(`File type: "${fileDoc.type}", assemblyId: "${newAssemblyDoc._id}"`);
131
+ // Add refSeqs
132
+ // We cannot use Mongo 'session' / transaction here because Mongo has 16 MB limit for transaction
133
+ await this.addRefSeqIntoDb(fileDoc, newAssemblyDoc._id.toString(), backend);
134
+ }
135
+ async executeOnLocalGFF3(_backend) {
136
+ throw new Error('executeOnLocalGFF3 not implemented');
137
+ }
138
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
139
+ async executeOnClient(_dataStore) { }
140
+ getInverse() {
141
+ const { assembly, changes, logger, typeName } = this;
142
+ return new AddAssemblyFromFileChange({ typeName, changes, assembly }, { logger });
143
+ }
144
+ }
145
+ exports.AddAssemblyFromFileChange = AddAssemblyFromFileChange;
146
+ //# sourceMappingURL=AddAssemblyFromFileChange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddAssemblyFromFileChange.js","sourceRoot":"","sources":["../../src/Changes/AddAssemblyFromFileChange.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { ChangeOptions, ClientDataStore, FeatureChange, LocalGFF3DataStore, SerializedFeatureChange, ServerDataStore } from '@apollo-annotation/common';
2
+ import { AnnotationFeatureSnapshot } from '@apollo-annotation/mst';
3
+ import { DeleteFeatureChange } from './DeleteFeatureChange';
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;
19
+ export declare class AddFeatureChange extends FeatureChange {
20
+ typeName: "AddFeatureChange";
21
+ changes: AddFeatureChangeDetails[];
22
+ constructor(json: SerializedAddFeatureChange, options?: ChangeOptions);
23
+ toJSON(): SerializedAddFeatureChange;
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
+ getInverse(): DeleteFeatureChange;
33
+ }
34
+ export declare function isAddFeatureChange(change: unknown): change is AddFeatureChange;
35
+ export {};