@eventcatalog/create-eventcatalog 3.0.11 → 3.0.13
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/dist/index.js +4 -1
- package/package.json +1 -1
- package/templates/graphql/Dockerfile +23 -0
- package/templates/graphql/Dockerfile.server +23 -0
- package/templates/graphql/README-template.md +1 -0
- package/templates/graphql/dockerignore +8 -0
- package/templates/graphql/env +9 -0
- package/templates/graphql/eventcatalog.auth.js +45 -0
- package/templates/graphql/eventcatalog.config.js +60 -0
- package/templates/graphql/eventcatalog.styles.css +1 -0
- package/templates/graphql/gitignore +27 -0
- package/templates/graphql/graphql-files/orders-service.graphql +76 -0
- package/templates/graphql/graphql-files/payment-service.graphql +327 -0
- package/templates/graphql/npmrc +1 -0
- package/templates/graphql/public/logo.png +0 -0
- package/templates/graphql/teams/order-management.mdx +31 -0
- package/templates/graphql/teams/payment-management.mdx +18 -0
- package/templates/graphql/teams/product-management.mdx +18 -0
- package/templates/graphql/users/aSmith.mdx +27 -0
- package/templates/graphql/users/alee.mdx +8 -0
- package/templates/graphql/users/azhang.mdx +11 -0
- package/templates/graphql/users/dboyne.mdx +32 -0
- package/templates/graphql/users/dkim.mdx +11 -0
- package/templates/graphql/users/jbrown.mdx +11 -0
- package/templates/graphql/users/mSmith.mdx +8 -0
- package/templates/index.ts +4 -0
- package/templates/types.ts +1 -1
package/dist/index.js
CHANGED
|
@@ -22466,7 +22466,7 @@ var import_os2 = __toESM(require("os"));
|
|
|
22466
22466
|
var package_default = {
|
|
22467
22467
|
name: "@eventcatalog/create-eventcatalog",
|
|
22468
22468
|
description: "Create EventCatalog with one command",
|
|
22469
|
-
version: "3.0.
|
|
22469
|
+
version: "3.0.13",
|
|
22470
22470
|
bin: {
|
|
22471
22471
|
"create-catalog": "./dist/index.js"
|
|
22472
22472
|
},
|
|
@@ -22582,6 +22582,9 @@ var installTemplate = async ({
|
|
|
22582
22582
|
if (template === "openapi") {
|
|
22583
22583
|
dependencies.push("@eventcatalog/generator-openapi");
|
|
22584
22584
|
}
|
|
22585
|
+
if (template === "graphql") {
|
|
22586
|
+
dependencies.push("@eventcatalog/generator-graphql");
|
|
22587
|
+
}
|
|
22585
22588
|
if (template === "confluent") {
|
|
22586
22589
|
dependencies.push("@eventcatalog/generator-confluent-schema-registry");
|
|
22587
22590
|
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
## Stage 1: Build the app
|
|
2
|
+
FROM node:lts AS build
|
|
3
|
+
|
|
4
|
+
WORKDIR /app
|
|
5
|
+
|
|
6
|
+
# Install dependencies
|
|
7
|
+
COPY package.json package-lock.json ./
|
|
8
|
+
RUN npm install
|
|
9
|
+
|
|
10
|
+
# Copy source code
|
|
11
|
+
COPY . .
|
|
12
|
+
|
|
13
|
+
# Fix for Astro in Docker: https://github.com/withastro/astro/issues/2596
|
|
14
|
+
ENV NODE_OPTIONS=--max_old_space_size=2048
|
|
15
|
+
# Build the app
|
|
16
|
+
RUN npm run build
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## Stage 2: Serve app with httpd server
|
|
20
|
+
FROM httpd:2.4
|
|
21
|
+
|
|
22
|
+
# Copy built app to serve
|
|
23
|
+
COPY --from=build /app/dist /usr/local/apache2/htdocs
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Use this Docker file if your EventCatalog output is set to `server`.
|
|
2
|
+
# When EventCatalog output is set to `server`, the output will be a node server.
|
|
3
|
+
# This server is required for certain features like the EventCatalog Chat (with your own keys).
|
|
4
|
+
|
|
5
|
+
FROM node:lts AS runtime
|
|
6
|
+
WORKDIR /app
|
|
7
|
+
|
|
8
|
+
# Install dependencies
|
|
9
|
+
COPY package.json package-lock.json ./
|
|
10
|
+
RUN npm install
|
|
11
|
+
|
|
12
|
+
COPY . .
|
|
13
|
+
|
|
14
|
+
# Fix for Astro in Docker: https://github.com/withastro/astro/issues/2596
|
|
15
|
+
ENV NODE_OPTIONS=--max_old_space_size=2048
|
|
16
|
+
RUN npm run build
|
|
17
|
+
|
|
18
|
+
ENV HOST=0.0.0.0
|
|
19
|
+
ENV PORT=3000
|
|
20
|
+
EXPOSE 3000
|
|
21
|
+
|
|
22
|
+
# Start the server
|
|
23
|
+
CMD npm run start
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# My Event Catalog
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# EventCatalog Scale License Key, if you want to unlock the scale features
|
|
2
|
+
# You can get a 14 day trial license key from https://eventcatalog.cloud
|
|
3
|
+
|
|
4
|
+
EVENTCATALOG_SCALE_LICENSE_KEY=
|
|
5
|
+
|
|
6
|
+
# Optional key if you are using EventCatalog Chat with OpenAI Models.
|
|
7
|
+
# You need to set `output` to `server` in your eventcatalog.config.js file.
|
|
8
|
+
# See documentation for more details: https://www.eventcatalog.dev/features/ai-assistant
|
|
9
|
+
OPENAI_API_KEY=
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This is an optional file that can add authentication to your EventCatalog.
|
|
4
|
+
*
|
|
5
|
+
* To enable authentication you need to set `server:output` in your `eventcatalog.config.js` file.
|
|
6
|
+
* And then pick which provider you want to use.
|
|
7
|
+
*
|
|
8
|
+
* You can read more in the documentation:
|
|
9
|
+
* https://www.eventcatalog.dev/docs/development/guides/authentication/introduction
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
// export default {
|
|
14
|
+
// debug: false,
|
|
15
|
+
// providers: {
|
|
16
|
+
// // GitHub Authentication
|
|
17
|
+
// github: {
|
|
18
|
+
// clientId: process.env.AUTH_GITHUB_CLIENT_ID,
|
|
19
|
+
// clientSecret: process.env.AUTH_GITHUB_CLIENT_SECRET,
|
|
20
|
+
// },
|
|
21
|
+
// // Azure AD Entra ID
|
|
22
|
+
// entra: {
|
|
23
|
+
// clientId: process.env.AUTH_MICROSOFT_ENTRA_ID_ID,
|
|
24
|
+
// clientSecret: process.env.AUTH_MICROSOFT_ENTRA_ID_SECRET,
|
|
25
|
+
// issuer: process.env.AUTH_MICROSOFT_ENTRA_ID_ISSUER,
|
|
26
|
+
// },
|
|
27
|
+
// // Google Authentication
|
|
28
|
+
// google: {
|
|
29
|
+
// clientId: process.env.AUTH_GOOGLE_ID,
|
|
30
|
+
// clientSecret: process.env.AUTH_GOOGLE_SECRET,
|
|
31
|
+
// },
|
|
32
|
+
// // Auth0 Authentication
|
|
33
|
+
// auth0: {
|
|
34
|
+
// clientId: process.env.AUTH_AUTH0_ID,
|
|
35
|
+
// clientSecret: process.env.AUTH_AUTH0_SECRET,
|
|
36
|
+
// issuer: process.env.AUTH_AUTH0_ISSUER,
|
|
37
|
+
// },
|
|
38
|
+
// // Okta Authentication
|
|
39
|
+
// okta: {
|
|
40
|
+
// clientId: process.env.AUTH_OKTA_CLIENT_ID,
|
|
41
|
+
// clientSecret: process.env.AUTH_OKTA_CLIENT_SECRET,
|
|
42
|
+
// issuer: process.env.AUTH_OKTA_ISSUER,
|
|
43
|
+
// },
|
|
44
|
+
// },
|
|
45
|
+
// }
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import url from "url";
|
|
3
|
+
|
|
4
|
+
const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
|
|
5
|
+
|
|
6
|
+
/** @type {import('@eventcatalog/core/bin/eventcatalog.config').Config} */
|
|
7
|
+
export default {
|
|
8
|
+
title: "EventCatalog",
|
|
9
|
+
tagline: 'This internal platform provides a comprehensive view of our event-driven architecture across all systems. Use this portal to discover existing domains, explore services and their dependencies, and understand the message contracts that connect our infrastructure',
|
|
10
|
+
organizationName: '<organizationName>',
|
|
11
|
+
homepageLink: "https://eventcatalog.dev/",
|
|
12
|
+
editUrl: "https://github.com/boyney123/eventcatalog-demo/edit/master",
|
|
13
|
+
// Supports static or server. Static renders a static site, server renders a server side rendered site
|
|
14
|
+
// large catalogs may benefit from server side rendering
|
|
15
|
+
output: 'static',
|
|
16
|
+
// By default set to false, add true to get urls ending in /
|
|
17
|
+
trailingSlash: false,
|
|
18
|
+
// Change to make the base url of the site different, by default https://{website}.com/docs,
|
|
19
|
+
// changing to /company would be https://{website}.com/company/docs,
|
|
20
|
+
base: "/",
|
|
21
|
+
// Customize the logo, add your logo to public/ folder
|
|
22
|
+
logo: {
|
|
23
|
+
alt: "EventCatalog Logo",
|
|
24
|
+
src: "/logo.png",
|
|
25
|
+
text: "EventCatalog",
|
|
26
|
+
},
|
|
27
|
+
// This lets you copy markdown contents from EventCatalog to your clipboard
|
|
28
|
+
// Including schemas for your events and services
|
|
29
|
+
llmsTxt: {
|
|
30
|
+
enabled: true,
|
|
31
|
+
},
|
|
32
|
+
generators: [
|
|
33
|
+
[
|
|
34
|
+
"@eventcatalog/generator-graphql",
|
|
35
|
+
{
|
|
36
|
+
services: [
|
|
37
|
+
{ path: path.join(__dirname, "graphql-files", "orders-service.graphql"), id: 'orders-service', version: '0.0.1', owners: ['order-management'] },
|
|
38
|
+
],
|
|
39
|
+
domain: { id: "orders", name: "Orders", version: "0.0.1" },
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
"@eventcatalog/generator-graphql",
|
|
44
|
+
{
|
|
45
|
+
services: [
|
|
46
|
+
{ path: path.join(__dirname, "graphql-files", "payment-service.graphql"), id: 'payment-service', version: '0.0.1', owners: ['payment-management'] },
|
|
47
|
+
],
|
|
48
|
+
domain: { id: "payment", name: "Payment", version: "0.0.1" },
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
],
|
|
52
|
+
// Enable RSS feed for your eventcatalog
|
|
53
|
+
rss: {
|
|
54
|
+
enabled: true,
|
|
55
|
+
// number of items to include in the feed per resource (event, service, etc)
|
|
56
|
+
limit: 20
|
|
57
|
+
},
|
|
58
|
+
// required random generated id used by eventcatalog
|
|
59
|
+
cId: '<cId>'
|
|
60
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/* Custom styling support coming soon. */
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Dependencies
|
|
2
|
+
/node_modules
|
|
3
|
+
|
|
4
|
+
# Production
|
|
5
|
+
/build
|
|
6
|
+
|
|
7
|
+
# Generated files
|
|
8
|
+
.astro
|
|
9
|
+
out
|
|
10
|
+
dist
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# Misc
|
|
14
|
+
.DS_Store
|
|
15
|
+
.env.local
|
|
16
|
+
.env.development.local
|
|
17
|
+
.env.test.local
|
|
18
|
+
.env.production.local
|
|
19
|
+
|
|
20
|
+
npm-debug.log*
|
|
21
|
+
yarn-debug.log*
|
|
22
|
+
yarn-error.log*
|
|
23
|
+
|
|
24
|
+
.eventcatalog-core
|
|
25
|
+
|
|
26
|
+
.env
|
|
27
|
+
.env-*
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
type Query {
|
|
2
|
+
"""
|
|
3
|
+
Fetch a user by their unique ID
|
|
4
|
+
"""
|
|
5
|
+
getUser(id: ID!): User
|
|
6
|
+
"""
|
|
7
|
+
Retrieve all users from the system
|
|
8
|
+
"""
|
|
9
|
+
getUsers: [User!]!
|
|
10
|
+
"""
|
|
11
|
+
Get user profile information by user ID
|
|
12
|
+
"""
|
|
13
|
+
getProfile(userId: ID!): Profile
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
type Mutation {
|
|
17
|
+
"""
|
|
18
|
+
Create a new user account
|
|
19
|
+
"""
|
|
20
|
+
createUser(input: CreateUserInput!): User
|
|
21
|
+
"""
|
|
22
|
+
Update an existing user's information
|
|
23
|
+
"""
|
|
24
|
+
updateUser(id: ID!, input: UpdateUserInput!): User
|
|
25
|
+
"""
|
|
26
|
+
Delete a user from the system
|
|
27
|
+
"""
|
|
28
|
+
deleteUser(id: ID!): Boolean
|
|
29
|
+
"""
|
|
30
|
+
Update user profile details
|
|
31
|
+
"""
|
|
32
|
+
updateProfile(userId: ID!, input: UpdateProfileInput!): Profile
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
type Subscription {
|
|
36
|
+
"""
|
|
37
|
+
Subscribe to user creation events
|
|
38
|
+
"""
|
|
39
|
+
userCreated: User
|
|
40
|
+
"""
|
|
41
|
+
Subscribe to user update events
|
|
42
|
+
"""
|
|
43
|
+
userUpdated: User
|
|
44
|
+
"""
|
|
45
|
+
Triggered when a user is deleted
|
|
46
|
+
"""
|
|
47
|
+
userDeleted: ID
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
type User {
|
|
51
|
+
id: ID!
|
|
52
|
+
name: String!
|
|
53
|
+
email: String!
|
|
54
|
+
profile: Profile
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
type Profile {
|
|
58
|
+
id: ID!
|
|
59
|
+
bio: String
|
|
60
|
+
avatar: String
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
input CreateUserInput {
|
|
64
|
+
name: String!
|
|
65
|
+
email: String!
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
input UpdateUserInput {
|
|
69
|
+
name: String
|
|
70
|
+
email: String
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
input UpdateProfileInput {
|
|
74
|
+
bio: String
|
|
75
|
+
avatar: String
|
|
76
|
+
}
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
type Query {
|
|
2
|
+
"""
|
|
3
|
+
Fetch a payment by its unique ID
|
|
4
|
+
"""
|
|
5
|
+
getPayment(id: ID!): Payment
|
|
6
|
+
"""
|
|
7
|
+
Retrieve all payments for a specific user
|
|
8
|
+
"""
|
|
9
|
+
getPaymentsByUser(userId: ID!): [Payment!]!
|
|
10
|
+
"""
|
|
11
|
+
Get payment history with optional filtering
|
|
12
|
+
"""
|
|
13
|
+
getPaymentHistory(
|
|
14
|
+
userId: ID
|
|
15
|
+
status: PaymentStatus
|
|
16
|
+
dateFrom: String
|
|
17
|
+
dateTo: String
|
|
18
|
+
limit: Int = 10
|
|
19
|
+
offset: Int = 0
|
|
20
|
+
): PaymentConnection!
|
|
21
|
+
"""
|
|
22
|
+
Fetch payment methods for a user
|
|
23
|
+
"""
|
|
24
|
+
getPaymentMethods(userId: ID!): [PaymentMethod!]!
|
|
25
|
+
"""
|
|
26
|
+
Get a specific payment method by ID
|
|
27
|
+
"""
|
|
28
|
+
getPaymentMethod(id: ID!): PaymentMethod
|
|
29
|
+
"""
|
|
30
|
+
Retrieve transaction details by ID
|
|
31
|
+
"""
|
|
32
|
+
getTransaction(id: ID!): Transaction
|
|
33
|
+
"""
|
|
34
|
+
Get all transactions for a payment
|
|
35
|
+
"""
|
|
36
|
+
getTransactionsByPayment(paymentId: ID!): [Transaction!]!
|
|
37
|
+
"""
|
|
38
|
+
Check payment status and details
|
|
39
|
+
"""
|
|
40
|
+
getPaymentStatus(paymentId: ID!): PaymentStatusResponse!
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
type Mutation {
|
|
44
|
+
"""
|
|
45
|
+
Process a new payment
|
|
46
|
+
"""
|
|
47
|
+
processPayment(input: ProcessPaymentInput!): PaymentResult!
|
|
48
|
+
"""
|
|
49
|
+
Refund a payment (full or partial)
|
|
50
|
+
"""
|
|
51
|
+
refundPayment(input: RefundPaymentInput!): RefundResult!
|
|
52
|
+
"""
|
|
53
|
+
Add a new payment method for a user
|
|
54
|
+
"""
|
|
55
|
+
addPaymentMethod(input: AddPaymentMethodInput!): PaymentMethod!
|
|
56
|
+
"""
|
|
57
|
+
Update an existing payment method
|
|
58
|
+
"""
|
|
59
|
+
updatePaymentMethod(id: ID!, input: UpdatePaymentMethodInput!): PaymentMethod!
|
|
60
|
+
"""
|
|
61
|
+
Remove a payment method
|
|
62
|
+
"""
|
|
63
|
+
removePaymentMethod(id: ID!): Boolean!
|
|
64
|
+
"""
|
|
65
|
+
Set a payment method as default
|
|
66
|
+
"""
|
|
67
|
+
setDefaultPaymentMethod(userId: ID!, paymentMethodId: ID!): PaymentMethod!
|
|
68
|
+
"""
|
|
69
|
+
Cancel a pending payment
|
|
70
|
+
"""
|
|
71
|
+
cancelPayment(paymentId: ID!): Payment!
|
|
72
|
+
"""
|
|
73
|
+
Retry a failed payment
|
|
74
|
+
"""
|
|
75
|
+
retryPayment(paymentId: ID!): PaymentResult!
|
|
76
|
+
"""
|
|
77
|
+
Capture an authorized payment
|
|
78
|
+
"""
|
|
79
|
+
capturePayment(paymentId: ID!, amount: Float): Payment!
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
type Subscription {
|
|
83
|
+
"""
|
|
84
|
+
Subscribe to payment status updates
|
|
85
|
+
"""
|
|
86
|
+
paymentStatusUpdated(paymentId: ID!): Payment!
|
|
87
|
+
"""
|
|
88
|
+
Subscribe to all payment events for a user
|
|
89
|
+
"""
|
|
90
|
+
userPaymentEvents(userId: ID!): PaymentEvent!
|
|
91
|
+
"""
|
|
92
|
+
Subscribe to transaction updates
|
|
93
|
+
"""
|
|
94
|
+
transactionUpdated(transactionId: ID!): Transaction!
|
|
95
|
+
"""
|
|
96
|
+
Subscribe to refund status changes
|
|
97
|
+
"""
|
|
98
|
+
refundStatusUpdated(refundId: ID!): Refund!
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
type Payment {
|
|
102
|
+
id: ID!
|
|
103
|
+
userId: ID!
|
|
104
|
+
amount: Float!
|
|
105
|
+
currency: String!
|
|
106
|
+
status: PaymentStatus!
|
|
107
|
+
description: String
|
|
108
|
+
paymentMethod: PaymentMethod!
|
|
109
|
+
transactions: [Transaction!]!
|
|
110
|
+
refunds: [Refund!]!
|
|
111
|
+
metadata: PaymentMetadata
|
|
112
|
+
createdAt: String!
|
|
113
|
+
updatedAt: String!
|
|
114
|
+
expiresAt: String
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
type PaymentMethod {
|
|
118
|
+
id: ID!
|
|
119
|
+
userId: ID!
|
|
120
|
+
type: PaymentMethodType!
|
|
121
|
+
isDefault: Boolean!
|
|
122
|
+
card: CardDetails
|
|
123
|
+
bankAccount: BankAccountDetails
|
|
124
|
+
digitalWallet: DigitalWalletDetails
|
|
125
|
+
isActive: Boolean!
|
|
126
|
+
createdAt: String!
|
|
127
|
+
updatedAt: String!
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
type CardDetails {
|
|
131
|
+
last4: String!
|
|
132
|
+
brand: String!
|
|
133
|
+
expiryMonth: Int!
|
|
134
|
+
expiryYear: Int!
|
|
135
|
+
fingerprint: String!
|
|
136
|
+
country: String
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
type BankAccountDetails {
|
|
140
|
+
last4: String!
|
|
141
|
+
bankName: String!
|
|
142
|
+
accountType: String!
|
|
143
|
+
country: String!
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
type DigitalWalletDetails {
|
|
147
|
+
provider: String!
|
|
148
|
+
email: String
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
type Transaction {
|
|
152
|
+
id: ID!
|
|
153
|
+
paymentId: ID!
|
|
154
|
+
type: TransactionType!
|
|
155
|
+
amount: Float!
|
|
156
|
+
currency: String!
|
|
157
|
+
status: TransactionStatus!
|
|
158
|
+
gateway: String!
|
|
159
|
+
gatewayTransactionId: String
|
|
160
|
+
failureReason: String
|
|
161
|
+
createdAt: String!
|
|
162
|
+
updatedAt: String!
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
type Refund {
|
|
166
|
+
id: ID!
|
|
167
|
+
paymentId: ID!
|
|
168
|
+
amount: Float!
|
|
169
|
+
currency: String!
|
|
170
|
+
status: RefundStatus!
|
|
171
|
+
reason: String
|
|
172
|
+
createdAt: String!
|
|
173
|
+
updatedAt: String!
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
type PaymentConnection {
|
|
177
|
+
edges: [PaymentEdge!]!
|
|
178
|
+
pageInfo: PageInfo!
|
|
179
|
+
totalCount: Int!
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
type PaymentEdge {
|
|
183
|
+
node: Payment!
|
|
184
|
+
cursor: String!
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
type PageInfo {
|
|
188
|
+
hasNextPage: Boolean!
|
|
189
|
+
hasPreviousPage: Boolean!
|
|
190
|
+
startCursor: String
|
|
191
|
+
endCursor: String
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
type PaymentMetadata {
|
|
195
|
+
orderId: String
|
|
196
|
+
customerId: String
|
|
197
|
+
invoiceId: String
|
|
198
|
+
tags: [String!]
|
|
199
|
+
notes: String
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
type PaymentResult {
|
|
203
|
+
payment: Payment
|
|
204
|
+
success: Boolean!
|
|
205
|
+
error: PaymentError
|
|
206
|
+
requiresAction: Boolean!
|
|
207
|
+
actionUrl: String
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
type RefundResult {
|
|
211
|
+
refund: Refund
|
|
212
|
+
success: Boolean!
|
|
213
|
+
error: PaymentError
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
type PaymentStatusResponse {
|
|
217
|
+
payment: Payment!
|
|
218
|
+
canRefund: Boolean!
|
|
219
|
+
canCapture: Boolean!
|
|
220
|
+
canCancel: Boolean!
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
type PaymentEvent {
|
|
224
|
+
id: ID!
|
|
225
|
+
type: PaymentEventType!
|
|
226
|
+
paymentId: ID!
|
|
227
|
+
data: String!
|
|
228
|
+
createdAt: String!
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
type PaymentError {
|
|
232
|
+
code: String!
|
|
233
|
+
message: String!
|
|
234
|
+
details: String
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
enum PaymentStatus {
|
|
238
|
+
PENDING
|
|
239
|
+
PROCESSING
|
|
240
|
+
AUTHORIZED
|
|
241
|
+
CAPTURED
|
|
242
|
+
SUCCEEDED
|
|
243
|
+
FAILED
|
|
244
|
+
CANCELLED
|
|
245
|
+
EXPIRED
|
|
246
|
+
REFUNDED
|
|
247
|
+
PARTIALLY_REFUNDED
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
enum PaymentMethodType {
|
|
251
|
+
CREDIT_CARD
|
|
252
|
+
DEBIT_CARD
|
|
253
|
+
BANK_ACCOUNT
|
|
254
|
+
DIGITAL_WALLET
|
|
255
|
+
CRYPTOCURRENCY
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
enum TransactionType {
|
|
259
|
+
AUTHORIZATION
|
|
260
|
+
CAPTURE
|
|
261
|
+
SALE
|
|
262
|
+
REFUND
|
|
263
|
+
VOID
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
enum TransactionStatus {
|
|
267
|
+
PENDING
|
|
268
|
+
SUCCEEDED
|
|
269
|
+
FAILED
|
|
270
|
+
CANCELLED
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
enum RefundStatus {
|
|
274
|
+
PENDING
|
|
275
|
+
PROCESSING
|
|
276
|
+
SUCCEEDED
|
|
277
|
+
FAILED
|
|
278
|
+
CANCELLED
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
enum PaymentEventType {
|
|
282
|
+
PAYMENT_CREATED
|
|
283
|
+
PAYMENT_AUTHORIZED
|
|
284
|
+
PAYMENT_CAPTURED
|
|
285
|
+
PAYMENT_SUCCEEDED
|
|
286
|
+
PAYMENT_FAILED
|
|
287
|
+
PAYMENT_CANCELLED
|
|
288
|
+
REFUND_CREATED
|
|
289
|
+
REFUND_SUCCEEDED
|
|
290
|
+
REFUND_FAILED
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
input ProcessPaymentInput {
|
|
294
|
+
userId: ID!
|
|
295
|
+
amount: Float!
|
|
296
|
+
currency: String!
|
|
297
|
+
paymentMethodId: ID!
|
|
298
|
+
description: String
|
|
299
|
+
captureImmediately: Boolean = true
|
|
300
|
+
metadata: PaymentMetadataInput
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
input RefundPaymentInput {
|
|
304
|
+
paymentId: ID!
|
|
305
|
+
amount: Float
|
|
306
|
+
reason: String
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
input AddPaymentMethodInput {
|
|
310
|
+
userId: ID!
|
|
311
|
+
type: PaymentMethodType!
|
|
312
|
+
token: String!
|
|
313
|
+
setAsDefault: Boolean = false
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
input UpdatePaymentMethodInput {
|
|
317
|
+
isActive: Boolean
|
|
318
|
+
setAsDefault: Boolean
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
input PaymentMetadataInput {
|
|
322
|
+
orderId: String
|
|
323
|
+
customerId: String
|
|
324
|
+
invoiceId: String
|
|
325
|
+
tags: [String!]
|
|
326
|
+
notes: String
|
|
327
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
strict-peer-dependencies=false
|
|
Binary file
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: order-management
|
|
3
|
+
name: Order Management
|
|
4
|
+
summmary: Order Management team based in London, UK
|
|
5
|
+
members:
|
|
6
|
+
- dboyne
|
|
7
|
+
- asmith
|
|
8
|
+
- msmith
|
|
9
|
+
- alee
|
|
10
|
+
- azhang
|
|
11
|
+
email: test@test.com
|
|
12
|
+
slackDirectMessageUrl: https://yourteam.slack.com/channels/boyney123
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
The Order Management team is responsible for managing orders, inventory, shipment and payment.
|
|
18
|
+
|
|
19
|
+
## Responsibilities
|
|
20
|
+
|
|
21
|
+
- Manage orders and order processing
|
|
22
|
+
- Manage inventory and inventory processing
|
|
23
|
+
- Manage shipment and shipment processing
|
|
24
|
+
- Manage payment and payment processing
|
|
25
|
+
- Manage user and user processing
|
|
26
|
+
|
|
27
|
+
## Key Contacts
|
|
28
|
+
|
|
29
|
+
- David Boyne
|
|
30
|
+
- Alice Smith
|
|
31
|
+
- Mike Smith
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: payment-management
|
|
3
|
+
name: Payment Management
|
|
4
|
+
members:
|
|
5
|
+
- dboyne
|
|
6
|
+
- jbrown
|
|
7
|
+
- dkim
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
The payment management team is responsible for managing payments and payment accounts.
|
|
11
|
+
|
|
12
|
+
## Responsibilities
|
|
13
|
+
|
|
14
|
+
- Manage payment and payment account management
|
|
15
|
+
- Manage payment and payment account provisioning
|
|
16
|
+
- Manage payment and payment account deprovisioning
|
|
17
|
+
- Manage user and user account password management
|
|
18
|
+
- Manage user and user account role management
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: product-management
|
|
3
|
+
name: Product Management
|
|
4
|
+
members:
|
|
5
|
+
- dboyne
|
|
6
|
+
- jbrown
|
|
7
|
+
- dkim
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
The product management team is responsible for managing products and product accounts.
|
|
11
|
+
|
|
12
|
+
## Responsibilities
|
|
13
|
+
|
|
14
|
+
- Manage product and product account management
|
|
15
|
+
- Manage product and product account provisioning
|
|
16
|
+
- Manage product and product account deprovisioning
|
|
17
|
+
- Manage product and product account password management
|
|
18
|
+
- Manage product and product account role management
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: asmith
|
|
3
|
+
name: Amy Smith
|
|
4
|
+
avatarUrl: https://randomuser.me/api/portraits/women/48.jpg
|
|
5
|
+
role: Product owner
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Hello! I'm Amy Smith, the Product Owner of the innovative Full Stackers team. With a strong focus on delivering exceptional value, I specialize in connecting business objectives with technical solutions to create products that users love.
|
|
9
|
+
|
|
10
|
+
### About Me
|
|
11
|
+
|
|
12
|
+
With a comprehensive background in product management and a solid understanding of software development, I bring a unique perspective to the table. My career has been driven by a passion for understanding user needs, defining clear product visions, and leading teams to successful product deliveries.
|
|
13
|
+
|
|
14
|
+
### What I Do
|
|
15
|
+
|
|
16
|
+
As the Product Owner for Full Stackers, my role involves a wide range of responsibilities aimed at ensuring our products are both high-quality and user-centric. Key aspects of my role include:
|
|
17
|
+
|
|
18
|
+
- **Product Vision & Strategy**: Defining and communicating the long-term vision and strategy for our products, ensuring alignment with the company's objectives and market demands.
|
|
19
|
+
- **Roadmap Planning**: Developing and maintaining a product roadmap that highlights key features and milestones, prioritizing tasks based on their business value and user feedback.
|
|
20
|
+
- **Stakeholder Management**: Engaging with stakeholders across the organization to gather requirements, provide updates, and ensure everyone is aligned on the product's direction.
|
|
21
|
+
- **User-Centric Design**: Championing the end-users by conducting user research, analyzing feedback, and ensuring our products effectively solve their problems.
|
|
22
|
+
- **Agile Leadership**: Leading the development process using Agile methodologies, facilitating sprint planning, and ensuring the team has clear priorities and objectives.
|
|
23
|
+
|
|
24
|
+
My mission is to deliver products that not only meet but exceed customer expectations. I thrive on the challenge of translating complex requirements into simple, intuitive solutions.
|
|
25
|
+
|
|
26
|
+
If you’re interested in product management, user experience, or discussing the latest trends in technology, feel free to reach out!
|
|
27
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: alee
|
|
3
|
+
name: Alice Lee
|
|
4
|
+
avatarUrl: https://randomuser.me/api/portraits/women/91.jpg
|
|
5
|
+
role: Technical Writer
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
As a Technical Writer on the Documentation team, I create clear, comprehensive documentation for our products and APIs. My focus is on making complex technical concepts accessible to developers and end-users alike. I collaborate with engineering teams to ensure our documentation stays current and accurate.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: azhang
|
|
3
|
+
name: Alice Zhang
|
|
4
|
+
avatarUrl: https://randomuser.me/api/portraits/women/97.jpg
|
|
5
|
+
role: Data Engineer
|
|
6
|
+
email: azhang@company.com
|
|
7
|
+
slackDirectMessageUrl: https://yourteam.slack.com/channels/azhang
|
|
8
|
+
msTeamsDirectMessageUrl: https://teams.microsoft.com/l/chat/0/0?users=azhang@company.com
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Building and maintaining data pipelines and infrastructure...
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dboyne
|
|
3
|
+
name: David Boyne
|
|
4
|
+
avatarUrl: "https://pbs.twimg.com/profile_images/1262283153563140096/DYRDqKg6_400x400.png"
|
|
5
|
+
role: Lead developer
|
|
6
|
+
email: test@test.com
|
|
7
|
+
slackDirectMessageUrl: https://yourteam.slack.com/channels/boyney123
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Hello! I'm David Boyne, the Tech Lead of an amazing team called Full Stackers. With a passion for building robust and scalable systems, I specialize in designing and implementing event-driven architectures that power modern, responsive applications.
|
|
11
|
+
|
|
12
|
+
### About Me
|
|
13
|
+
|
|
14
|
+
With over a decade of experience in the tech industry, I have honed my skills in full-stack development, cloud computing, and distributed systems. My journey has taken me through various roles, from software engineer to architect, and now as a tech lead, I am committed to driving innovation and excellence within my team.
|
|
15
|
+
|
|
16
|
+
### What I Do
|
|
17
|
+
|
|
18
|
+
At Full Stackers, we focus on creating seamless and efficient event-driven architectures that enhance the performance and scalability of our applications. My role involves:
|
|
19
|
+
|
|
20
|
+
- **Architecture Design**: Crafting scalable and resilient system architectures using event-driven paradigms.
|
|
21
|
+
- **Team Leadership**: Guiding a talented team of developers, fostering a collaborative and innovative environment.
|
|
22
|
+
- **Code Reviews & Mentorship**: Ensuring code quality and sharing knowledge to help the team grow.
|
|
23
|
+
- **Stakeholder Collaboration**: Working closely with other teams and stakeholders to align our technical solutions with business goals.
|
|
24
|
+
- **Continuous Improvement**: Advocating for best practices in software development, deployment, and monitoring.
|
|
25
|
+
|
|
26
|
+
I am passionate about leveraging the power of events to build systems that are not only highly responsive but also easier to maintain and extend. In an ever-evolving tech landscape, I strive to stay ahead of the curve, continuously learning and adapting to new technologies and methodologies.
|
|
27
|
+
|
|
28
|
+
Feel free to connect with me to discuss all things tech, event-driven architectures, or to exchange ideas on building better software systems!
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
*David Boyne*
|
|
32
|
+
*Tech Lead, Full Stackers*
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dkim
|
|
3
|
+
name: David Kim
|
|
4
|
+
avatarUrl: https://randomuser.me/api/portraits/men/96.jpg
|
|
5
|
+
role: Performance Engineer
|
|
6
|
+
email: dkim@company.com
|
|
7
|
+
slackDirectMessageUrl: https://yourteam.slack.com/channels/dkim
|
|
8
|
+
msTeamsDirectMessageUrl: https://teams.microsoft.com/l/chat/0/0?users=dkim@company.com
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Optimizing application performance and user experience...
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: jbrown
|
|
3
|
+
name: Jessica Brown
|
|
4
|
+
avatarUrl: https://randomuser.me/api/portraits/women/95.jpg
|
|
5
|
+
role: UI/UX Designer
|
|
6
|
+
email: jbrown@company.com
|
|
7
|
+
slackDirectMessageUrl: https://yourteam.slack.com/channels/jbrown
|
|
8
|
+
msTeamsDirectMessageUrl: https://teams.microsoft.com/l/chat/0/0?users=jbrown@company.com
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Creating intuitive and engaging user interfaces...
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: msmith
|
|
3
|
+
name: Martin Smith
|
|
4
|
+
avatarUrl: "https://randomuser.me/api/portraits/men/51.jpg"
|
|
5
|
+
role: Senior software engineer
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
As a Senior Mobile Developer on The Mobile Devs team, I play a key role in designing, developing, and maintaining our company’s mobile applications. My focus is on creating a seamless and intuitive user experience for our customers on both iOS and Android platforms. I work closely with cross-functional teams, including backend developers, UX/UI designers, and product managers, to deliver high-quality mobile solutions that meet business objectives and exceed user expectations.
|
package/templates/index.ts
CHANGED
|
@@ -82,6 +82,10 @@ export const installTemplate = async ({
|
|
|
82
82
|
dependencies.push("@eventcatalog/generator-openapi");
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
if (template === "graphql") {
|
|
86
|
+
dependencies.push("@eventcatalog/generator-graphql");
|
|
87
|
+
}
|
|
88
|
+
|
|
85
89
|
if (template === "confluent") {
|
|
86
90
|
dependencies.push("@eventcatalog/generator-confluent-schema-registry");
|
|
87
91
|
}
|
package/templates/types.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PackageManager } from "../helpers/get-pkg-manager";
|
|
2
2
|
|
|
3
|
-
export type TemplateType = "default" | "app" | "empty" | "asyncapi" | "openapi" | "confluent" | "eventbridge" | "amazon-apigateway";
|
|
3
|
+
export type TemplateType = "default" | "app" | "empty" | "asyncapi" | "openapi" | "confluent" | "eventbridge" | "amazon-apigateway" | "graphql";
|
|
4
4
|
export type TemplateMode = "js" | "ts";
|
|
5
5
|
|
|
6
6
|
export interface GetTemplateFileArgs {
|