@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.
- package/LICENSE +679 -0
- package/dist/form/action.js +83 -0
- package/dist/form/affiliation.js +178 -0
- package/dist/form/apps.js +132 -0
- package/dist/form/disciplines.js +30 -0
- package/dist/form/events.js +836 -0
- package/dist/form/fellowships.js +1307 -0
- package/dist/form/files.js +30 -0
- package/dist/form/mailing.js +43 -0
- package/dist/form/news.js +252 -0
- package/dist/form/people.js +658 -0
- package/dist/form/projects.js +338 -0
- package/dist/form/publications.js +364 -0
- package/dist/form/tags.js +38 -0
- package/dist/form/users.js +576 -0
- package/dist/graphql/client/action/query.get.action.gql +22 -0
- package/dist/graphql/client/action/query.list.action.gql +32 -0
- package/dist/graphql/client/affiliation/query.get.affiliations.gql +37 -0
- package/dist/graphql/client/affiliation/query.list.affiliations.gql +43 -0
- package/dist/graphql/client/apps/query.get.apps.gql +33 -0
- package/dist/graphql/client/apps/query.list.apps.gql +43 -0
- package/dist/graphql/client/events/query.get.events.gql +119 -0
- package/dist/graphql/client/events/query.list.events.gql +40 -0
- package/dist/graphql/client/fellowships/query.get.fellowships.gql +163 -0
- package/dist/graphql/client/fellowships/query.list.fellowships.gql +49 -0
- package/dist/graphql/client/files/query.get.files.gql +24 -0
- package/dist/graphql/client/files/query.list.files.gql +37 -0
- package/dist/graphql/client/mailing/query.get.mailing.gql +24 -0
- package/dist/graphql/client/mailing/query.list.mailing.gql +23 -0
- package/dist/graphql/client/misc/apex.mutations.delete.gql +0 -0
- package/dist/graphql/client/misc/apex.mutations.upsert.gql +0 -0
- package/dist/graphql/client/misc/apex.queries.login.gql +0 -0
- package/dist/graphql/client/misc/query.get.disciplines.gql +17 -0
- package/dist/graphql/client/misc/query.get.tags.gql +13 -0
- package/dist/graphql/client/misc/query.list.disciplines.gql +23 -0
- package/dist/graphql/client/misc/query.list.tags.gql +23 -0
- package/dist/graphql/client/news/query.get.news.gql +128 -0
- package/dist/graphql/client/news/query.list.news.gql +35 -0
- package/dist/graphql/client/people/query.get.people.gql +173 -0
- package/dist/graphql/client/people/query.get.users.gql +0 -0
- package/dist/graphql/client/people/query.list.people.gql +55 -0
- package/dist/graphql/client/people/query.list.users.gql +31 -0
- package/dist/graphql/client/projects/query.get.projects.gql +166 -0
- package/dist/graphql/client/projects/query.list.projects.gql +33 -0
- package/dist/graphql/client/publications/query.get.publications.gql +169 -0
- package/dist/graphql/client/publications/query.list.publications.gql +35 -0
- package/dist/graphql/schemas/apex-resolvers-list.json +45 -0
- package/dist/graphql/schemas/schema.apex.graphql +946 -0
- package/dist/graphql/schemas/schema.website.graphql +794 -0
- package/dist/graphql/schemas/website-resolvers-list.json +22 -0
- package/dist/list/action.js +133 -0
- package/dist/list/affiliation.js +133 -0
- package/dist/list/apps.js +133 -0
- package/dist/list/disciplines.js +132 -0
- package/dist/list/events.js +186 -0
- package/dist/list/fellowships.js +149 -0
- package/dist/list/files.js +132 -0
- package/dist/list/mailing.js +132 -0
- package/dist/list/news.js +135 -0
- package/dist/list/people.js +176 -0
- package/dist/list/projects.js +135 -0
- package/dist/list/publications.js +152 -0
- package/dist/list/tags.js +133 -0
- package/dist/list/users.js +176 -0
- package/index.ts +63 -0
- package/lib/README.md +206 -0
- package/lib/buildClientGraphQL.ts +342 -0
- package/lib/buildDefaults.ts +0 -0
- package/lib/buildSchemas.ts +109 -0
- package/lib/generate.ts +505 -0
- package/lib/generateAll.ts +231 -0
- package/lib/utils.ts +24 -0
- package/package.json +34 -0
- package/readme.md +116 -0
- package/src/LICENSE +661 -0
- package/src/action/graphql/client/query.get.action.gql +22 -0
- package/src/action/graphql/client/query.list.action.gql +32 -0
- package/src/action/graphql/server/apex.types.action.graphql +15 -0
- package/src/action/models/action.ts +147 -0
- package/src/affiliation/graphql/client/query.get.affiliations.gql +37 -0
- package/src/affiliation/graphql/client/query.list.affiliations.gql +43 -0
- package/src/affiliation/graphql/server/shared.types.affiliations.graphql +20 -0
- package/src/affiliation/models/affiliation.ts +130 -0
- package/src/affiliation/models/member.ts +11 -0
- package/src/affiliation/models/partner.ts +9 -0
- package/src/apps/graphql/client/query.get.apps.gql +33 -0
- package/src/apps/graphql/client/query.list.apps.gql +43 -0
- package/src/apps/models/apps.ts +195 -0
- package/src/events/graphql/client/query.get.events.gql +119 -0
- package/src/events/graphql/client/query.list.events.gql +40 -0
- package/src/events/graphql/server/shared.inputs.events.graphql +24 -0
- package/src/events/models/eventSlot.ts +73 -0
- package/src/events/models/events.ts +569 -0
- package/src/fellowships/graphql/client/query.get.fellowships.gql +163 -0
- package/src/fellowships/graphql/client/query.list.fellowships.gql +49 -0
- package/src/fellowships/graphql/server/apex.inputs.fellowshipDetails.graphql +13 -0
- package/src/fellowships/graphql/server/shared.types.fellowshipDetails.graphql +13 -0
- package/src/fellowships/graphql/server/shared.types.fellowships.graphql +38 -0
- package/src/fellowships/models/fellowshipDetails.ts +145 -0
- package/src/fellowships/models/fellowships.ts +341 -0
- package/src/files/graphql/client/query.get.files.gql +24 -0
- package/src/files/graphql/client/query.list.files.gql +37 -0
- package/src/files/graphql/server/apex.inputs.files.graphql +7 -0
- package/src/files/graphql/server/apex.inputs.video.graphql +9 -0
- package/src/files/graphql/server/apex.types.files.graphql +4 -0
- package/src/files/graphql/server/shared.inputs.image.graphql +9 -0
- package/src/files/graphql/server/shared.types.files.graphql +15 -0
- package/src/files/graphql/server/shared.types.image.graphql +9 -0
- package/src/files/graphql/server/shared.types.video.graphql +9 -0
- package/src/files/models/files.ts +113 -0
- package/src/files/models/gallery.ts +11 -0
- package/src/files/models/image.ts +159 -0
- package/src/files/models/video.ts +166 -0
- package/src/form.ts +52 -0
- package/src/index.ts +98 -0
- package/src/list.ts +34 -0
- package/src/mailing/graphql/client/query.get.mailing.gql +24 -0
- package/src/mailing/graphql/client/query.list.mailing.gql +23 -0
- package/src/mailing/graphql/server/apex.types.mailing.graphql +13 -0
- package/src/mailing/models/mailing.ts +123 -0
- package/src/misc/graphql/client/apex.mutations.delete.gql +0 -0
- package/src/misc/graphql/client/apex.mutations.upsert.gql +0 -0
- package/src/misc/graphql/client/apex.queries.login.gql +0 -0
- package/src/misc/graphql/client/query.get.disciplines.gql +17 -0
- package/src/misc/graphql/client/query.get.tags.gql +13 -0
- package/src/misc/graphql/client/query.list.disciplines.gql +23 -0
- package/src/misc/graphql/client/query.list.tags.gql +23 -0
- package/src/misc/graphql/server/apex.inputs.misc.graphql +13 -0
- package/src/misc/graphql/server/apex.inputs.socials.graphql +12 -0
- package/src/misc/graphql/server/apex.mutations.graphql +23 -0
- package/src/misc/graphql/server/apex.queries.graphql +36 -0
- package/src/misc/graphql/server/apex.types.disciplines.graphql +4 -0
- package/src/misc/graphql/server/apex.types.tags.graphql +4 -0
- package/src/misc/graphql/server/shared.enums.graphql +112 -0
- package/src/misc/graphql/server/shared.inputs.misc.graphql +101 -0
- package/src/misc/graphql/server/shared.queries.graphql +35 -0
- package/src/misc/graphql/server/shared.types.disciplines.graphql +8 -0
- package/src/misc/graphql/server/shared.types.events.graphql +39 -0
- package/src/misc/graphql/server/shared.types.location.graphql +17 -0
- package/src/misc/graphql/server/shared.types.misc.graphql +120 -0
- package/src/misc/graphql/server/shared.types.related.graphql +10 -0
- package/src/misc/graphql/server/shared.types.relatedAffiliation.graphql +7 -0
- package/src/misc/graphql/server/shared.types.relatedEvent.graphql +7 -0
- package/src/misc/graphql/server/shared.types.relatedFellowships.graphql +7 -0
- package/src/misc/graphql/server/shared.types.relatedNews.graphql +7 -0
- package/src/misc/graphql/server/shared.types.relatedPeople.graphql +6 -0
- package/src/misc/graphql/server/shared.types.relatedProject.graphql +7 -0
- package/src/misc/graphql/server/shared.types.relatedPublications.graphql +6 -0
- package/src/misc/graphql/server/shared.types.socials.graphql +22 -0
- package/src/misc/graphql/server/shared.types.tags.graphql +11 -0
- package/src/misc/graphql/server/website.mutations.graphql +4 -0
- package/src/misc/models/disciplines.ts +116 -0
- package/src/misc/models/location.ts +136 -0
- package/src/misc/models/organizers.ts +13 -0
- package/src/misc/models/related.ts +123 -0
- package/src/misc/models/relatedEvents.ts +16 -0
- package/src/misc/models/relatedFellowships.ts +7 -0
- package/src/misc/models/relatedNews.ts +13 -0
- package/src/misc/models/relatedPeople.ts +8 -0
- package/src/misc/models/relatedProject.ts +14 -0
- package/src/misc/models/relatedPublications.ts +14 -0
- package/src/misc/models/socials.ts +133 -0
- package/src/misc/models/sponsor.ts +13 -0
- package/src/misc/models/tags.ts +116 -0
- package/src/misc/models/taxonomy.ts +1 -0
- package/src/model.ts +7 -0
- package/src/news/graphql/client/query.get.news.gql +128 -0
- package/src/news/graphql/client/query.list.news.gql +35 -0
- package/src/news/graphql/server/share.types.news.graphql +27 -0
- package/src/news/models/news.ts +257 -0
- package/src/people/graphql/client/query.get.people.gql +173 -0
- package/src/people/graphql/client/query.get.users.gql +0 -0
- package/src/people/graphql/client/query.list.people.gql +55 -0
- package/src/people/graphql/client/query.list.users.gql +31 -0
- package/src/people/graphql/server/apex.inputs.consent.graphql +9 -0
- package/src/people/graphql/server/apex.inputs.groups.graphql +8 -0
- package/src/people/graphql/server/apex.inputs.vintage.graphql +6 -0
- package/src/people/graphql/server/shared.types.consent.graphql +9 -0
- package/src/people/graphql/server/shared.types.groups.graphql +8 -0
- package/src/people/graphql/server/shared.types.people.graphql +29 -0
- package/src/people/graphql/server/shared.types.position.graphql +6 -0
- package/src/people/graphql/server/shared.types.users.graphql +17 -0
- package/src/people/graphql/server/shared.types.vintage.graphql +6 -0
- package/src/people/models/consent.ts +82 -0
- package/src/people/models/discussants.ts +9 -0
- package/src/people/models/experiences.ts +38 -0
- package/src/people/models/fellows.ts +12 -0
- package/src/people/models/groups.ts +58 -0
- package/src/people/models/people.ts +244 -0
- package/src/people/models/position.ts +62 -0
- package/src/people/models/speakers.ts +9 -0
- package/src/people/models/users.ts +252 -0
- package/src/people/models/vintage.ts +124 -0
- package/src/projects/graphql/client/query.get.projects.gql +166 -0
- package/src/projects/graphql/client/query.list.projects.gql +33 -0
- package/src/projects/graphql/server/shared.types.projects.graphql +29 -0
- package/src/projects/models/projects.ts +249 -0
- package/src/publications/graphql/client/query.get.publications.gql +169 -0
- package/src/publications/graphql/client/query.list.publications.gql +35 -0
- package/src/publications/graphql/server/shared.types.publications.graphql +34 -0
- package/src/publications/models/article.ts +262 -0
- 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.
|