@openneuro/server 4.28.3 → 4.29.0-alpha.1

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 (61) hide show
  1. package/package.json +9 -9
  2. package/src/app.ts +0 -2
  3. package/src/cache/item.ts +4 -4
  4. package/src/datalad/__tests__/files.spec.ts +0 -25
  5. package/src/datalad/analytics.ts +0 -1
  6. package/src/datalad/dataset.ts +17 -7
  7. package/src/datalad/description.ts +11 -11
  8. package/src/datalad/draft.ts +1 -1
  9. package/src/datalad/pagination.ts +3 -3
  10. package/src/datalad/snapshots.ts +6 -2
  11. package/src/elasticsearch/reindex-dataset.ts +2 -6
  12. package/src/graphql/permissions.ts +1 -1
  13. package/src/graphql/resolvers/__tests__/brainlife.spec.ts +1 -1
  14. package/src/graphql/resolvers/brainlife.ts +3 -5
  15. package/src/graphql/resolvers/cache.ts +1 -1
  16. package/src/graphql/resolvers/dataset-search.ts +4 -4
  17. package/src/graphql/resolvers/dataset.ts +14 -10
  18. package/src/graphql/resolvers/derivatives.ts +5 -7
  19. package/src/graphql/resolvers/draft.ts +4 -15
  20. package/src/graphql/resolvers/importRemoteDataset.ts +1 -0
  21. package/src/graphql/resolvers/metadata.ts +5 -4
  22. package/src/graphql/resolvers/mutation.ts +6 -3
  23. package/src/graphql/resolvers/permissions.ts +52 -33
  24. package/src/graphql/resolvers/reset.ts +1 -1
  25. package/src/graphql/resolvers/reviewer.ts +1 -0
  26. package/src/graphql/resolvers/snapshots.ts +4 -2
  27. package/src/graphql/resolvers/summary.ts +4 -4
  28. package/src/graphql/resolvers/validation.ts +37 -2
  29. package/src/graphql/schema.ts +59 -50
  30. package/src/handlers/comments.ts +7 -6
  31. package/src/handlers/datalad.ts +2 -3
  32. package/src/libs/__tests__/dataset.spec.ts +1 -1
  33. package/src/libs/email/index.ts +3 -2
  34. package/src/models/analytics.ts +2 -1
  35. package/src/models/badAnnexObject.ts +3 -2
  36. package/src/models/comment.ts +2 -1
  37. package/src/models/counter.ts +2 -1
  38. package/src/models/dataset.ts +3 -2
  39. package/src/models/deletion.ts +2 -1
  40. package/src/models/deprecatedSnapshot.ts +2 -1
  41. package/src/models/doi.ts +2 -1
  42. package/src/models/file.ts +3 -2
  43. package/src/models/ingestDataset.ts +2 -1
  44. package/src/models/issue.ts +2 -1
  45. package/src/models/key.ts +2 -1
  46. package/src/models/mailgunIdentifier.ts +2 -1
  47. package/src/models/metadata.ts +2 -1
  48. package/src/models/newsletter.ts +2 -1
  49. package/src/models/notification.ts +2 -1
  50. package/src/models/permission.ts +2 -1
  51. package/src/models/reviewer.ts +2 -1
  52. package/src/models/snapshot.ts +2 -1
  53. package/src/models/stars.ts +2 -1
  54. package/src/models/subscription.ts +2 -1
  55. package/src/models/summary.ts +9 -2
  56. package/src/models/upload.ts +2 -1
  57. package/src/models/user.ts +2 -1
  58. package/src/models/validation.ts +58 -0
  59. package/src/routes.ts +1 -1
  60. package/src/utils/validateUrl.ts +1 -1
  61. package/tsconfig.json +3 -1
package/src/models/key.ts CHANGED
@@ -1,4 +1,5 @@
1
- import mongoose, { Document } from "mongoose"
1
+ import mongoose from "mongoose"
2
+ import type { Document } from "mongoose"
2
3
  const { Schema, model } = mongoose
3
4
 
4
5
  export interface KeyDocument extends Document {
@@ -1,4 +1,5 @@
1
- import mongoose, { Document } from "mongoose"
1
+ import mongoose from "mongoose"
2
+ import type { Document } from "mongoose"
2
3
  const { Schema, model } = mongoose
3
4
 
4
5
  export interface MailgunIdentifierDocument extends Document {
@@ -1,5 +1,6 @@
1
1
  import { v4 as uuidv4 } from "uuid"
2
- import mongoose, { Document } from "mongoose"
2
+ import mongoose from "mongoose"
3
+ import type { Document } from "mongoose"
3
4
  const { Schema, model } = mongoose
4
5
 
5
6
  export interface MetadataDocument extends Document {
@@ -1,4 +1,5 @@
1
- import mongoose, { Document } from "mongoose"
1
+ import mongoose from "mongoose"
2
+ import type { Document } from "mongoose"
2
3
  const { Schema, model } = mongoose
3
4
 
4
5
  export interface NewsletterDocument extends Document {
@@ -1,4 +1,5 @@
1
- import mongoose, { Document } from "mongoose"
1
+ import mongoose from "mongoose"
2
+ import type { Document } from "mongoose"
2
3
  const { Schema, model } = mongoose
3
4
 
4
5
  export interface NotificationDocument extends Document {
@@ -1,4 +1,5 @@
1
- import mongoose, { Document } from "mongoose"
1
+ import mongoose from "mongoose"
2
+ import type { Document } from "mongoose"
2
3
  const { Schema, model } = mongoose
3
4
 
4
5
  export interface PermissionDocument extends Document {
@@ -1,5 +1,6 @@
1
1
  import { v4 as uuidv4 } from "uuid"
2
- import mongoose, { Document } from "mongoose"
2
+ import mongoose from "mongoose"
3
+ import type { Document } from "mongoose"
3
4
  const { Schema, model } = mongoose
4
5
 
5
6
  export interface ReviewerDocument extends Document {
@@ -1,4 +1,5 @@
1
- import mongoose, { Document } from "mongoose"
1
+ import mongoose from "mongoose"
2
+ import type { Document } from "mongoose"
2
3
  const { Schema, model } = mongoose
3
4
 
4
5
  export interface SnapshotDocument extends Document {
@@ -1,4 +1,5 @@
1
- import mongoose, { Document } from "mongoose"
1
+ import mongoose from "mongoose"
2
+ import type { Document } from "mongoose"
2
3
  const { Schema, model } = mongoose
3
4
 
4
5
  export interface StarDocument extends Document {
@@ -1,4 +1,5 @@
1
- import mongoose, { Document } from "mongoose"
1
+ import mongoose from "mongoose"
2
+ import type { Document } from "mongoose"
2
3
  const { Schema, model } = mongoose
3
4
 
4
5
  export interface SubscriptionDocument extends Document {
@@ -1,4 +1,5 @@
1
- import mongoose, { Document } from "mongoose"
1
+ import mongoose from "mongoose"
2
+ import type { Document } from "mongoose"
2
3
  const { Schema, model } = mongoose
3
4
 
4
5
  export interface SummaryPetField {
@@ -9,12 +10,18 @@ export interface SummaryPetField {
9
10
  TracerRadionuclide: string[]
10
11
  }
11
12
 
13
+ export interface SummarySubjectMetadata {
14
+ participantId: string
15
+ age: number
16
+ sex: string
17
+ }
18
+
12
19
  export interface SummaryDocument extends Document {
13
20
  id: string
14
21
  datasetId: string
15
22
  sessions: string[]
16
23
  subjects: string[]
17
- subjectMetadata: Record<string, any>
24
+ subjectMetadata: SummarySubjectMetadata[]
18
25
  tasks: string[]
19
26
  modalities: string[]
20
27
  primaryModality: string
@@ -1,5 +1,6 @@
1
1
  import { v4 as uuidv4 } from "uuid"
2
- import mongoose, { Document } from "mongoose"
2
+ import mongoose from "mongoose"
3
+ import type { Document } from "mongoose"
3
4
  const { Schema, model } = mongoose
4
5
 
5
6
  export interface UploadDocument extends Document {
@@ -1,5 +1,6 @@
1
1
  import { v4 as uuidv4 } from "uuid"
2
- import mongoose, { Document } from "mongoose"
2
+ import mongoose from "mongoose"
3
+ import type { Document } from "mongoose"
3
4
  const { Schema, model } = mongoose
4
5
 
5
6
  export interface UserDocument extends Document {
@@ -0,0 +1,58 @@
1
+ import mongoose from "mongoose"
2
+ import type { Document } from "mongoose"
3
+ const { Schema, model } = mongoose
4
+
5
+ export interface ValidatorMetadata {
6
+ validator: string
7
+ version: string
8
+ }
9
+
10
+ export interface ValidatorCodeMessages {
11
+ code: string
12
+ message: string
13
+ }
14
+
15
+ export interface ValidatorIssue {
16
+ code: string
17
+ subCode?: string
18
+ location?: string
19
+ severity?: "error" | "warning"
20
+ rule?: string
21
+ }
22
+
23
+ /**
24
+ * Schema validator output collection
25
+ */
26
+ export interface ValidationDocument extends Document {
27
+ id: string
28
+ datasetId: string
29
+ issues: ValidatorIssue[]
30
+ codeMessages: ValidatorCodeMessages
31
+ validatorMetadata: ValidatorMetadata
32
+ }
33
+
34
+ const issueSchema = new Schema({
35
+ id: { type: String, required: true },
36
+ datasetId: { type: String, required: true },
37
+ issues: [{
38
+ code: String,
39
+ subCode: String,
40
+ location: String,
41
+ severity: String,
42
+ rule: String,
43
+ }],
44
+ codeMessages: [
45
+ {
46
+ code: String,
47
+ message: String,
48
+ },
49
+ ],
50
+ validatorMetadata: {
51
+ validator: String,
52
+ version: String,
53
+ },
54
+ })
55
+
56
+ const Validation = model<ValidationDocument>("Validation", issueSchema)
57
+
58
+ export default Validation
package/src/routes.ts CHANGED
@@ -177,7 +177,7 @@ const routes = [
177
177
  const router = express.Router()
178
178
 
179
179
  for (const route of routes) {
180
- const arr = route.hasOwnProperty("middleware") ? route.middleware : []
180
+ const arr = Object.hasOwn(route, "middleware") ? route.middleware : []
181
181
  arr.unshift(route.url)
182
182
  arr.push(route.handler)
183
183
  router[route.method](...arr)
@@ -7,7 +7,7 @@ export function validateUrl(value: string): boolean {
7
7
  try {
8
8
  const url = new URL(value)
9
9
  return url.protocol === "https:"
10
- } catch (err) {
10
+ } catch (_err) {
11
11
  return false
12
12
  }
13
13
  }
package/tsconfig.json CHANGED
@@ -4,7 +4,9 @@
4
4
  "rootDir": "./src",
5
5
  "outDir": "./dist",
6
6
  "tsBuildInfoFile": "../../.build-cache/server.tsbuildinfo",
7
- "types": ["vitest/globals"]
7
+ "types": ["vitest/globals"],
8
+ "moduleResolution": "Node",
9
+ "module": "CommonJS"
8
10
  },
9
11
  "include": ["./src"],
10
12
  "files": ["./src/lerna.json"],