-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcatalog.json
More file actions
144 lines (144 loc) · 5.08 KB
/
Copy pathcatalog.json
File metadata and controls
144 lines (144 loc) · 5.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
{
"version": 1,
"groups": {
"tracing": {
"title": "Tracing / APM",
"exclusive": true,
"pick": "Only if the service is traced — none is normal."
},
"orm": {
"title": "ORM / database",
"exclusive": true,
"pick": "Only if the service uses a database — none is normal."
},
"features": { "title": "Service features", "exclusive": false }
},
"packages": {
"opentelemetry": {
"group": "tracing",
"title": "OpenTelemetry instrumentation",
"pick": "Recommended: vendor-neutral, so the backend can change without touching service code.",
"deps": {
"@imqueue/opentelemetry": "*",
"@opentelemetry/api": "*",
"@opentelemetry/instrumentation": "*",
"@opentelemetry/resources": "*",
"@opentelemetry/sdk-trace-node": "*",
"@opentelemetry/semantic-conventions": "*"
},
"snippets": { "preload": "import './telemetry.js';" },
"env": ["OTEL_EXPORTER_OTLP_ENDPOINT"],
"instructions": [
"OpenTelemetry: tracing is initialized in src/telemetry.ts (imported first at start-up).",
"OpenTelemetry: add the 'gcp' package to export traces to Google Cloud Trace."
]
},
"gcp": {
"group": "features",
"title": "Google Cloud Trace exporter (for OpenTelemetry)",
"deps": { "@google-cloud/opentelemetry-cloud-trace-exporter": "*" },
"env": ["GOOGLE_APPLICATION_CREDENTIALS"],
"instructions": [
"GCP trace export: requires the opentelemetry package; traces export to Google Cloud Trace when GOOGLE_APPLICATION_CREDENTIALS is set."
]
},
"dd-trace": {
"group": "tracing",
"title": "Datadog APM",
"hint": "already on Datadog",
"pick": "For a fleet already standing on Datadog\u2019s own agent; otherwise take opentelemetry.",
"deps": { "@imqueue/datadog": "*" },
"snippets": { "preload": "import './tracer.js';" },
"env": ["DD_AGENT_HOST", "DD_TRACE_ENABLED"],
"instructions": [
"Datadog: tracing is initialized in src/tracer.ts (imported first at start-up).",
"Datadog: ensure a Datadog agent is reachable via DD_AGENT_HOST."
]
},
"sequelize": {
"group": "orm",
"title": "Sequelize ORM + @imqueue/pg-sequelize toolkit",
"hint": "match a Sequelize fleet",
"pick": "For a service joining a fleet already built on Sequelize, where matching the existing stack is worth more than the default. Migrating the fleet to pg-prisma is worth proposing, as separate work.",
"deps": { "@imqueue/pg-sequelize": "*", "sequelize": "*" },
"instructions": [
"Sequelize: configure your database connection in config.ts."
]
},
"pg-prisma": {
"group": "orm",
"title": "Prisma ORM + @imqueue/pg-prisma toolkit",
"pick": "Recommended. Take this unless the fleet the service joins is already built on Sequelize.",
"deps": {
"@imqueue/pg-prisma": "*",
"@imqueue/validation": "*",
"@prisma/client": "*",
"@prisma/adapter-pg": "*",
"pg": "*",
"zod": "*"
},
"devDeps": { "prisma": "*", "@types/pg": "*" },
"env": ["DATABASE_URL"],
"instructions": [
"pg-prisma: set DATABASE_URL, then run `npx prisma migrate dev` to create the database.",
"pg-prisma: edit prisma/schema.prisma and run `npx prisma generate` to (re)generate models."
]
},
"validation": {
"group": "features",
"title": "Input validation (@imqueue/validation)",
"deps": { "@imqueue/validation": "*", "zod": "*" },
"instructions": [
"validation: annotate argument classes with @validatable/@validate and methods with @validated."
]
},
"core": {
"group": "features",
"title": "@imqueue/core (direct dependency)",
"deps": { "@imqueue/core": "*" },
"instructions": [
"core: @imqueue/core is otherwise pulled in transitively by @imqueue/rpc; add it directly only if you import from it."
]
},
"pg-cache": {
"group": "features",
"title": "PostgreSQL query cache",
"deps": { "@imqueue/pg-cache": "*" }
},
"pg-pubsub": {
"group": "features",
"title": "PostgreSQL pub/sub",
"deps": { "@imqueue/pg-pubsub": "*" }
},
"tag-cache": {
"group": "features",
"title": "Tag-based cache",
"deps": { "@imqueue/tag-cache": "*" }
},
"job": {
"group": "features",
"title": "Background jobs",
"deps": { "@imqueue/job": "*" }
},
"net": {
"group": "features",
"title": "Network helpers",
"deps": { "@imqueue/net": "*" }
},
"http-protect": {
"group": "features",
"title": "HTTP protection",
"deps": { "@imqueue/http-protect": "*" }
},
"graphql-dependency": {
"group": "features",
"title": "GraphQL dependency resolution",
"deps": { "@imqueue/graphql-dependency": "*" }
},
"type-graphql-dependency": {
"group": "features",
"title": "TypeGraphQL dependency resolution",
"deps": { "@imqueue/type-graphql-dependency": "*" }
}
}
}