@paris-ias/trees 1.8.56

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 (202) hide show
  1. package/LICENSE +679 -0
  2. package/dist/form/action.js +83 -0
  3. package/dist/form/affiliation.js +178 -0
  4. package/dist/form/apps.js +132 -0
  5. package/dist/form/disciplines.js +30 -0
  6. package/dist/form/events.js +836 -0
  7. package/dist/form/fellowships.js +1307 -0
  8. package/dist/form/files.js +30 -0
  9. package/dist/form/mailing.js +43 -0
  10. package/dist/form/news.js +252 -0
  11. package/dist/form/people.js +658 -0
  12. package/dist/form/projects.js +338 -0
  13. package/dist/form/publications.js +364 -0
  14. package/dist/form/tags.js +38 -0
  15. package/dist/form/users.js +576 -0
  16. package/dist/graphql/client/action/query.get.action.gql +22 -0
  17. package/dist/graphql/client/action/query.list.action.gql +32 -0
  18. package/dist/graphql/client/affiliation/query.get.affiliations.gql +37 -0
  19. package/dist/graphql/client/affiliation/query.list.affiliations.gql +43 -0
  20. package/dist/graphql/client/apps/query.get.apps.gql +33 -0
  21. package/dist/graphql/client/apps/query.list.apps.gql +43 -0
  22. package/dist/graphql/client/events/query.get.events.gql +119 -0
  23. package/dist/graphql/client/events/query.list.events.gql +40 -0
  24. package/dist/graphql/client/fellowships/query.get.fellowships.gql +163 -0
  25. package/dist/graphql/client/fellowships/query.list.fellowships.gql +49 -0
  26. package/dist/graphql/client/files/query.get.files.gql +24 -0
  27. package/dist/graphql/client/files/query.list.files.gql +37 -0
  28. package/dist/graphql/client/mailing/query.get.mailing.gql +24 -0
  29. package/dist/graphql/client/mailing/query.list.mailing.gql +23 -0
  30. package/dist/graphql/client/misc/apex.mutations.delete.gql +0 -0
  31. package/dist/graphql/client/misc/apex.mutations.upsert.gql +0 -0
  32. package/dist/graphql/client/misc/apex.queries.login.gql +0 -0
  33. package/dist/graphql/client/misc/query.get.disciplines.gql +17 -0
  34. package/dist/graphql/client/misc/query.get.tags.gql +13 -0
  35. package/dist/graphql/client/misc/query.list.disciplines.gql +23 -0
  36. package/dist/graphql/client/misc/query.list.tags.gql +23 -0
  37. package/dist/graphql/client/news/query.get.news.gql +128 -0
  38. package/dist/graphql/client/news/query.list.news.gql +35 -0
  39. package/dist/graphql/client/people/query.get.people.gql +173 -0
  40. package/dist/graphql/client/people/query.get.users.gql +0 -0
  41. package/dist/graphql/client/people/query.list.people.gql +55 -0
  42. package/dist/graphql/client/people/query.list.users.gql +31 -0
  43. package/dist/graphql/client/projects/query.get.projects.gql +166 -0
  44. package/dist/graphql/client/projects/query.list.projects.gql +33 -0
  45. package/dist/graphql/client/publications/query.get.publications.gql +169 -0
  46. package/dist/graphql/client/publications/query.list.publications.gql +35 -0
  47. package/dist/graphql/schemas/apex-resolvers-list.json +45 -0
  48. package/dist/graphql/schemas/schema.apex.graphql +946 -0
  49. package/dist/graphql/schemas/schema.website.graphql +794 -0
  50. package/dist/graphql/schemas/website-resolvers-list.json +22 -0
  51. package/dist/list/action.js +133 -0
  52. package/dist/list/affiliation.js +133 -0
  53. package/dist/list/apps.js +133 -0
  54. package/dist/list/disciplines.js +132 -0
  55. package/dist/list/events.js +186 -0
  56. package/dist/list/fellowships.js +149 -0
  57. package/dist/list/files.js +132 -0
  58. package/dist/list/mailing.js +132 -0
  59. package/dist/list/news.js +135 -0
  60. package/dist/list/people.js +176 -0
  61. package/dist/list/projects.js +135 -0
  62. package/dist/list/publications.js +152 -0
  63. package/dist/list/tags.js +133 -0
  64. package/dist/list/users.js +176 -0
  65. package/index.ts +63 -0
  66. package/lib/README.md +206 -0
  67. package/lib/buildClientGraphQL.ts +342 -0
  68. package/lib/buildDefaults.ts +0 -0
  69. package/lib/buildSchemas.ts +109 -0
  70. package/lib/generate.ts +505 -0
  71. package/lib/generateAll.ts +231 -0
  72. package/lib/utils.ts +24 -0
  73. package/package.json +34 -0
  74. package/readme.md +116 -0
  75. package/src/LICENSE +661 -0
  76. package/src/action/graphql/client/query.get.action.gql +22 -0
  77. package/src/action/graphql/client/query.list.action.gql +32 -0
  78. package/src/action/graphql/server/apex.types.action.graphql +15 -0
  79. package/src/action/models/action.ts +147 -0
  80. package/src/affiliation/graphql/client/query.get.affiliations.gql +37 -0
  81. package/src/affiliation/graphql/client/query.list.affiliations.gql +43 -0
  82. package/src/affiliation/graphql/server/shared.types.affiliations.graphql +20 -0
  83. package/src/affiliation/models/affiliation.ts +130 -0
  84. package/src/affiliation/models/member.ts +11 -0
  85. package/src/affiliation/models/partner.ts +9 -0
  86. package/src/apps/graphql/client/query.get.apps.gql +33 -0
  87. package/src/apps/graphql/client/query.list.apps.gql +43 -0
  88. package/src/apps/models/apps.ts +195 -0
  89. package/src/events/graphql/client/query.get.events.gql +119 -0
  90. package/src/events/graphql/client/query.list.events.gql +40 -0
  91. package/src/events/graphql/server/shared.inputs.events.graphql +24 -0
  92. package/src/events/models/eventSlot.ts +73 -0
  93. package/src/events/models/events.ts +569 -0
  94. package/src/fellowships/graphql/client/query.get.fellowships.gql +163 -0
  95. package/src/fellowships/graphql/client/query.list.fellowships.gql +49 -0
  96. package/src/fellowships/graphql/server/apex.inputs.fellowshipDetails.graphql +13 -0
  97. package/src/fellowships/graphql/server/shared.types.fellowshipDetails.graphql +13 -0
  98. package/src/fellowships/graphql/server/shared.types.fellowships.graphql +38 -0
  99. package/src/fellowships/models/fellowshipDetails.ts +145 -0
  100. package/src/fellowships/models/fellowships.ts +341 -0
  101. package/src/files/graphql/client/query.get.files.gql +24 -0
  102. package/src/files/graphql/client/query.list.files.gql +37 -0
  103. package/src/files/graphql/server/apex.inputs.files.graphql +7 -0
  104. package/src/files/graphql/server/apex.inputs.video.graphql +9 -0
  105. package/src/files/graphql/server/apex.types.files.graphql +4 -0
  106. package/src/files/graphql/server/shared.inputs.image.graphql +9 -0
  107. package/src/files/graphql/server/shared.types.files.graphql +15 -0
  108. package/src/files/graphql/server/shared.types.image.graphql +9 -0
  109. package/src/files/graphql/server/shared.types.video.graphql +9 -0
  110. package/src/files/models/files.ts +113 -0
  111. package/src/files/models/gallery.ts +11 -0
  112. package/src/files/models/image.ts +159 -0
  113. package/src/files/models/video.ts +166 -0
  114. package/src/form.ts +52 -0
  115. package/src/index.ts +98 -0
  116. package/src/list.ts +34 -0
  117. package/src/mailing/graphql/client/query.get.mailing.gql +24 -0
  118. package/src/mailing/graphql/client/query.list.mailing.gql +23 -0
  119. package/src/mailing/graphql/server/apex.types.mailing.graphql +13 -0
  120. package/src/mailing/models/mailing.ts +123 -0
  121. package/src/misc/graphql/client/apex.mutations.delete.gql +0 -0
  122. package/src/misc/graphql/client/apex.mutations.upsert.gql +0 -0
  123. package/src/misc/graphql/client/apex.queries.login.gql +0 -0
  124. package/src/misc/graphql/client/query.get.disciplines.gql +17 -0
  125. package/src/misc/graphql/client/query.get.tags.gql +13 -0
  126. package/src/misc/graphql/client/query.list.disciplines.gql +23 -0
  127. package/src/misc/graphql/client/query.list.tags.gql +23 -0
  128. package/src/misc/graphql/server/apex.inputs.misc.graphql +13 -0
  129. package/src/misc/graphql/server/apex.inputs.socials.graphql +12 -0
  130. package/src/misc/graphql/server/apex.mutations.graphql +23 -0
  131. package/src/misc/graphql/server/apex.queries.graphql +36 -0
  132. package/src/misc/graphql/server/apex.types.disciplines.graphql +4 -0
  133. package/src/misc/graphql/server/apex.types.tags.graphql +4 -0
  134. package/src/misc/graphql/server/shared.enums.graphql +112 -0
  135. package/src/misc/graphql/server/shared.inputs.misc.graphql +101 -0
  136. package/src/misc/graphql/server/shared.queries.graphql +35 -0
  137. package/src/misc/graphql/server/shared.types.disciplines.graphql +8 -0
  138. package/src/misc/graphql/server/shared.types.events.graphql +39 -0
  139. package/src/misc/graphql/server/shared.types.location.graphql +17 -0
  140. package/src/misc/graphql/server/shared.types.misc.graphql +120 -0
  141. package/src/misc/graphql/server/shared.types.related.graphql +10 -0
  142. package/src/misc/graphql/server/shared.types.relatedAffiliation.graphql +7 -0
  143. package/src/misc/graphql/server/shared.types.relatedEvent.graphql +7 -0
  144. package/src/misc/graphql/server/shared.types.relatedFellowships.graphql +7 -0
  145. package/src/misc/graphql/server/shared.types.relatedNews.graphql +7 -0
  146. package/src/misc/graphql/server/shared.types.relatedPeople.graphql +6 -0
  147. package/src/misc/graphql/server/shared.types.relatedProject.graphql +7 -0
  148. package/src/misc/graphql/server/shared.types.relatedPublications.graphql +6 -0
  149. package/src/misc/graphql/server/shared.types.socials.graphql +22 -0
  150. package/src/misc/graphql/server/shared.types.tags.graphql +11 -0
  151. package/src/misc/graphql/server/website.mutations.graphql +4 -0
  152. package/src/misc/models/disciplines.ts +116 -0
  153. package/src/misc/models/location.ts +136 -0
  154. package/src/misc/models/organizers.ts +13 -0
  155. package/src/misc/models/related.ts +123 -0
  156. package/src/misc/models/relatedEvents.ts +16 -0
  157. package/src/misc/models/relatedFellowships.ts +7 -0
  158. package/src/misc/models/relatedNews.ts +13 -0
  159. package/src/misc/models/relatedPeople.ts +8 -0
  160. package/src/misc/models/relatedProject.ts +14 -0
  161. package/src/misc/models/relatedPublications.ts +14 -0
  162. package/src/misc/models/socials.ts +133 -0
  163. package/src/misc/models/sponsor.ts +13 -0
  164. package/src/misc/models/tags.ts +116 -0
  165. package/src/misc/models/taxonomy.ts +1 -0
  166. package/src/model.ts +7 -0
  167. package/src/news/graphql/client/query.get.news.gql +128 -0
  168. package/src/news/graphql/client/query.list.news.gql +35 -0
  169. package/src/news/graphql/server/share.types.news.graphql +27 -0
  170. package/src/news/models/news.ts +257 -0
  171. package/src/people/graphql/client/query.get.people.gql +173 -0
  172. package/src/people/graphql/client/query.get.users.gql +0 -0
  173. package/src/people/graphql/client/query.list.people.gql +55 -0
  174. package/src/people/graphql/client/query.list.users.gql +31 -0
  175. package/src/people/graphql/server/apex.inputs.consent.graphql +9 -0
  176. package/src/people/graphql/server/apex.inputs.groups.graphql +8 -0
  177. package/src/people/graphql/server/apex.inputs.vintage.graphql +6 -0
  178. package/src/people/graphql/server/shared.types.consent.graphql +9 -0
  179. package/src/people/graphql/server/shared.types.groups.graphql +8 -0
  180. package/src/people/graphql/server/shared.types.people.graphql +29 -0
  181. package/src/people/graphql/server/shared.types.position.graphql +6 -0
  182. package/src/people/graphql/server/shared.types.users.graphql +17 -0
  183. package/src/people/graphql/server/shared.types.vintage.graphql +6 -0
  184. package/src/people/models/consent.ts +82 -0
  185. package/src/people/models/discussants.ts +9 -0
  186. package/src/people/models/experiences.ts +38 -0
  187. package/src/people/models/fellows.ts +12 -0
  188. package/src/people/models/groups.ts +58 -0
  189. package/src/people/models/people.ts +244 -0
  190. package/src/people/models/position.ts +62 -0
  191. package/src/people/models/speakers.ts +9 -0
  192. package/src/people/models/users.ts +252 -0
  193. package/src/people/models/vintage.ts +124 -0
  194. package/src/projects/graphql/client/query.get.projects.gql +166 -0
  195. package/src/projects/graphql/client/query.list.projects.gql +33 -0
  196. package/src/projects/graphql/server/shared.types.projects.graphql +29 -0
  197. package/src/projects/models/projects.ts +249 -0
  198. package/src/publications/graphql/client/query.get.publications.gql +169 -0
  199. package/src/publications/graphql/client/query.list.publications.gql +35 -0
  200. package/src/publications/graphql/server/shared.types.publications.graphql +34 -0
  201. package/src/publications/models/article.ts +262 -0
  202. package/src/publications/models/publications.ts +306 -0
@@ -0,0 +1,231 @@
1
+ import { spawn } from "child_process"
2
+ import { fileURLToPath } from "url"
3
+ import path from "path"
4
+
5
+ // Declare process global and other types for environments without @types/node
6
+ declare const process: any
7
+
8
+ const __filename = fileURLToPath(import.meta.url)
9
+ const __dirname = path.dirname(__filename)
10
+
11
+ /**
12
+ * Task execution result
13
+ */
14
+ interface TaskResult {
15
+ name: string
16
+ success: boolean
17
+ duration: number
18
+ output: string[]
19
+ errors: string[]
20
+ }
21
+
22
+ /**
23
+ * Overall generation statistics
24
+ */
25
+ interface GenerationStats {
26
+ totalDuration: number
27
+ tasks: TaskResult[]
28
+ successCount: number
29
+ errorCount: number
30
+ }
31
+
32
+ /**
33
+ * Executes a script and captures output
34
+ */
35
+ function executeScript(
36
+ scriptPath: string,
37
+ taskName: string
38
+ ): Promise<TaskResult> {
39
+ return new Promise((resolve) => {
40
+ const startTime = Date.now()
41
+ const output: string[] = []
42
+ const errors: string[] = []
43
+
44
+ console.log(`🔄 ${taskName}...`)
45
+
46
+ const child = spawn("npx", ["tsx", scriptPath], {
47
+ cwd: path.dirname(__dirname),
48
+ stdio: ["pipe", "pipe", "pipe"],
49
+ })
50
+
51
+ child.stdout?.on("data", (data: any) => {
52
+ const lines = data
53
+ .toString()
54
+ .split("\n")
55
+ .filter((line: string) => line.trim())
56
+ lines.forEach((line: string) => {
57
+ output.push(line)
58
+ console.log(` ${line}`)
59
+ })
60
+ })
61
+
62
+ child.stderr?.on("data", (data: any) => {
63
+ const lines = data
64
+ .toString()
65
+ .split("\n")
66
+ .filter((line: string) => line.trim())
67
+ lines.forEach((line: string) => {
68
+ errors.push(line)
69
+ console.log(` ⚠️ ${line}`)
70
+ })
71
+ })
72
+
73
+ child.on("close", (code: any) => {
74
+ const duration = Date.now() - startTime
75
+ const success = code === 0
76
+
77
+ console.log(
78
+ ` ${success ? "✅" : "❌"} ${taskName} ${
79
+ success ? "completed" : "failed"
80
+ } (${duration}ms)`
81
+ )
82
+
83
+ resolve({
84
+ name: taskName,
85
+ success,
86
+ duration,
87
+ output,
88
+ errors,
89
+ })
90
+ })
91
+ })
92
+ }
93
+
94
+ /**
95
+ * Extracts key metrics from task output
96
+ */
97
+ function extractMetrics(result: TaskResult): string {
98
+ const { output } = result
99
+
100
+ switch (result.name) {
101
+ case "Generate Modules":
102
+ const moduleMatches = output
103
+ .join(" ")
104
+ .match(/Successfully generated: (\d+)\/(\d+) modules/)
105
+ if (moduleMatches) {
106
+ return `${moduleMatches[1]}/${moduleMatches[2]} modules`
107
+ }
108
+ const moduleCount = output.filter((line) =>
109
+ line.includes("✅ Module")
110
+ ).length
111
+ return moduleCount > 0 ? `${moduleCount} modules` : "Unknown count"
112
+
113
+ case "Generate Schemas":
114
+ const schemaSuccess = output.some((line) =>
115
+ line.includes("✅ Schemas generated successfully")
116
+ )
117
+ if (schemaSuccess) {
118
+ return "2 schemas + resolvers"
119
+ }
120
+ return "Schema generation status unknown"
121
+
122
+ case "Generate GraphQL Client":
123
+ const clientMatch = output
124
+ .join(" ")
125
+ .match(/(\d+) GraphQL files processed/)
126
+ const typeMatch = output.join(" ").match(/(\d+) type categories/)
127
+ if (clientMatch && typeMatch) {
128
+ return `${clientMatch[1]} files, ${typeMatch[1]} types`
129
+ }
130
+ return "GraphQL client status unknown"
131
+
132
+ default:
133
+ return "Status unknown"
134
+ }
135
+ }
136
+
137
+ /**
138
+ * Main generation orchestrator
139
+ */
140
+ export async function generateAll(): Promise<void> {
141
+ const overallStartTime = Date.now()
142
+ const stats: GenerationStats = {
143
+ totalDuration: 0,
144
+ tasks: [],
145
+ successCount: 0,
146
+ errorCount: 0,
147
+ }
148
+
149
+ console.log("🚀 Starting unified generation process...")
150
+ console.log("=".repeat(60))
151
+
152
+ // Define tasks to execute
153
+ const tasks = [
154
+ { script: "lib/generate.ts", name: "Generate Modules" },
155
+ { script: "lib/buildSchemas.ts", name: "Generate Schemas" },
156
+ { script: "lib/buildClientGraphQL.ts", name: "Generate GraphQL Client" },
157
+ ]
158
+
159
+ // Execute tasks sequentially
160
+ for (const task of tasks) {
161
+ const result = await executeScript(task.script, task.name)
162
+ stats.tasks.push(result)
163
+
164
+ if (result.success) {
165
+ stats.successCount++
166
+ } else {
167
+ stats.errorCount++
168
+ }
169
+ }
170
+
171
+ // Calculate total duration
172
+ stats.totalDuration = Date.now() - overallStartTime
173
+
174
+ // Display unified summary
175
+ console.log("\n" + "=".repeat(60))
176
+ console.log("📊 GENERATION SUMMARY")
177
+ console.log("=".repeat(60))
178
+
179
+ console.log(`🕐 Total Duration: ${stats.totalDuration}ms`)
180
+ console.log(
181
+ `� Success Rate: ${stats.successCount}/${tasks.length} tasks completed`
182
+ )
183
+
184
+ if (stats.successCount > 0) {
185
+ console.log("\n✅ Completed Tasks:")
186
+ stats.tasks
187
+ .filter((task) => task.success)
188
+ .forEach((task) => {
189
+ const metrics = extractMetrics(task)
190
+ console.log(` • ${task.name}: ${metrics} (${task.duration}ms)`)
191
+ })
192
+ }
193
+
194
+ if (stats.errorCount > 0) {
195
+ console.log("\n❌ Failed Tasks:")
196
+ stats.tasks
197
+ .filter((task) => !task.success)
198
+ .forEach((task) => {
199
+ console.log(` • ${task.name}: Failed (${task.duration}ms)`)
200
+ if (task.errors.length > 0) {
201
+ console.log(` Errors: ${task.errors.slice(0, 3).join(", ")}`)
202
+ }
203
+ })
204
+ }
205
+
206
+ // Overall status
207
+ if (stats.errorCount === 0) {
208
+ console.log("\n🎉 All generation tasks completed successfully!")
209
+ } else if (stats.successCount > 0) {
210
+ console.log("\n⚠️ Generation completed with some errors")
211
+ } else {
212
+ console.log("\n💥 Generation failed - no tasks completed successfully")
213
+ }
214
+
215
+ console.log("=".repeat(60))
216
+ }
217
+
218
+ // Execute if run directly
219
+ if (
220
+ typeof process !== "undefined" &&
221
+ import.meta.url === `file://${process.argv[1]}`
222
+ ) {
223
+ try {
224
+ await generateAll()
225
+ } catch (error) {
226
+ console.error("💥 Generation orchestrator failed:", error)
227
+ if (typeof process !== "undefined") {
228
+ process.exit(1)
229
+ }
230
+ }
231
+ }
package/lib/utils.ts ADDED
@@ -0,0 +1,24 @@
1
+ import fs from "fs"
2
+ import path from "path"
3
+
4
+ export function createJsonFile(
5
+ type: string,
6
+ module: any,
7
+ append: string = ""
8
+ ): void {
9
+ const distPath = path.resolve("./dist" + append)
10
+
11
+ if (!fs.existsSync(distPath)) {
12
+ fs.mkdirSync(distPath, { recursive: true })
13
+ }
14
+
15
+ const filePath = path.join(distPath, `${type}.js`)
16
+ fs.writeFileSync(
17
+ filePath,
18
+ `export default ${JSON.stringify(module, null, 2)}`
19
+ )
20
+ }
21
+ export const mapEnum = (arg) =>
22
+ Object.keys(arg)
23
+ .filter((key) => isNaN(Number(key))) // Filter out numeric keys
24
+ .map((key) => key) // Cast to string array
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@paris-ias/trees",
3
+ "version": "1.8.56",
4
+ "type": "module",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "dev": "tsx index.ts",
8
+ "generate": "npx tsx lib/generateAll.ts",
9
+ "generate:modules": "npx tsx lib/generate.ts",
10
+ "generate:schemas": "npx tsx lib/buildSchemas.ts",
11
+ "generate:client": "npx tsx lib/buildClientGraphQL.ts",
12
+ "draw": "npx depcruise src --include-only \"^src\" --output-type dot | dot -T svg > dependency-graph.svg",
13
+ "clean": "rm -rf dist/",
14
+ "prebuild": "npm run clean"
15
+ },
16
+ "files": [
17
+ "index.ts",
18
+ "src/**",
19
+ "lib/**",
20
+ "dist/**"
21
+ ],
22
+ "author": "Antoine Cordelois, Paris Institute for Advanced Study",
23
+ "license": "ISC",
24
+ "description": "Type definitions and schema generator for Paris IAS data management system",
25
+ "dependencies": {
26
+ "ts-node": "^10.9.2",
27
+ "@graphql-tools/load-files": "^7",
28
+ "@graphql-tools/merge": "^8",
29
+ "graphql": "^16"
30
+ },
31
+ "devDependencies": {
32
+ "dependency-cruiser": "^16.10.0"
33
+ }
34
+ }
package/readme.md ADDED
@@ -0,0 +1,116 @@
1
+ # Types Project
2
+
3
+ This project provides type definitions and utilities for various modules in the system. It includes interfaces, schemas, and configuration for different entities like projects, news, people, and more.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Types Project](#types-project)
8
+ - [Table of Contents](#table-of-contents)
9
+ - [Installation](#installation)
10
+ - [Usage](#usage)
11
+ - [Structure](#structure)
12
+ - [Modules](#modules)
13
+ - [Projects](#projects)
14
+ - [News](#news)
15
+ - [People](#people)
16
+ - [Fellowships](#fellowships)
17
+ - [Publications](#publications)
18
+ - [Events](#events)
19
+ - [Other Modules \& submodules](#other-modules--submodules)
20
+ - [Contributing](#contributing)
21
+ - [Repository Update Convention](#repository-update-convention)
22
+ - [License](#license)
23
+
24
+ ## Installation
25
+
26
+ To install the dependencies, run:
27
+
28
+ ```bash
29
+ yarn add @paris-ias/data
30
+ ```
31
+
32
+ ## Usage
33
+
34
+ A precompiled version of the common objects is produced during CI. It is available in the `dist` folder. It can be imported to produce lists and forms using the related packages produced by Paris IAS.
35
+
36
+ You can also import and use the types and utilities provided by this project in your code as follows:
37
+
38
+ ```ts
39
+ import { projects, news, people } from '@paris-ias/data';
40
+
41
+ // Example usage
42
+
43
+ ```
44
+ ## Structure
45
+
46
+
47
+ ## Modules
48
+
49
+ ### Projects
50
+
51
+ Provides type definitions and utilities for handling projects.
52
+
53
+ ### News
54
+
55
+ Provides type definitions and utilities for handling news articles.
56
+
57
+ ### People
58
+
59
+ Provides type definitions and utilities for handling people entities.
60
+
61
+ ### Fellowships
62
+
63
+ ### Publications
64
+
65
+ ### Events
66
+
67
+ ### Other Modules & submodules
68
+
69
+ - Tags
70
+ - Image
71
+ - Affiliations
72
+ - Positions
73
+ - Consent
74
+ - Files
75
+ - Related
76
+ - Related Projects
77
+ - Related Publications
78
+ - Related News
79
+ - Related Events
80
+ - Related People
81
+
82
+ ## Contributing
83
+
84
+ We welcome contributions to this project. Please follow the guidelines below:
85
+
86
+ 1. Fork the repository.
87
+ 2. Create a new branch for your feature or bugfix.
88
+ 3. Make your changes and commit them with clear and concise messages.
89
+ 4. Push your changes to your fork.
90
+ 5. Create a pull request to the main repository.
91
+
92
+ ## Repository Update Convention
93
+
94
+ We follow the semantic versioning convention to upgrade the repository version [semver](https://semver.org/).
95
+
96
+ - For a major change in the project, upgrade the package version using:
97
+
98
+ ```bash
99
+ npm version major
100
+ ```
101
+
102
+ - For a minor change, use the command:
103
+
104
+ ```bash
105
+ npm version minor
106
+ ```
107
+
108
+ - For a fix (patch), use:
109
+
110
+ ```bash
111
+ npm version patch
112
+ ```
113
+
114
+ ## License
115
+
116
+ This project is licensed under the AGPL v3 License. See the [LICENSE](LICENSE) file for details.