@flink-app/github-app-plugin 0.12.1-alpha.47 → 0.13.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.13.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Fixed invalid types and improve typescript error message during schema compilation
8
+
9
+ ## 0.13.0
10
+
11
+ ### Minor Changes
12
+
13
+ - Migrate to pnpm and streamlines build process.
14
+
3
15
  All notable changes to the GitHub App Plugin will be documented in this file.
4
16
 
5
17
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
@@ -10,137 +22,151 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
10
22
  ### Added
11
23
 
12
24
  #### Core Features
13
- - GitHub App installation flow with CSRF protection using state parameter
14
- - JWT signing with RSA private key (RS256 algorithm)
15
- - Automatic detection of PKCS#1 and PKCS#8 private key formats
16
- - Installation access token management with automatic caching (55-minute TTL)
17
- - Automatic token refresh when expired
18
- - Webhook integration with HMAC-SHA256 signature validation
19
- - Constant-time comparison for security-critical validations
20
- - GitHub API client wrapper with automatic token injection
21
- - Repository access verification
22
- - Standalone plugin architecture (works without JWT Auth Plugin)
25
+
26
+ - GitHub App installation flow with CSRF protection using state parameter
27
+ - JWT signing with RSA private key (RS256 algorithm)
28
+ - Automatic detection of PKCS#1 and PKCS#8 private key formats
29
+ - Installation access token management with automatic caching (55-minute TTL)
30
+ - Automatic token refresh when expired
31
+ - Webhook integration with HMAC-SHA256 signature validation
32
+ - Constant-time comparison for security-critical validations
33
+ - GitHub API client wrapper with automatic token injection
34
+ - Repository access verification
35
+ - Standalone plugin architecture (works without JWT Auth Plugin)
23
36
 
24
37
  #### Database
25
- - `GitHubAppSessionRepo` for CSRF session storage with TTL index (default: 10 minutes)
26
- - `GitHubInstallationRepo` for installation-to-user mappings
27
- - `GitHubWebhookEventRepo` for optional webhook event logging
28
- - Configurable collection names for all repositories
29
- - Automatic TTL index creation for session cleanup
38
+
39
+ - `GitHubAppSessionRepo` for CSRF session storage with TTL index (default: 10 minutes)
40
+ - `GitHubInstallationRepo` for installation-to-user mappings
41
+ - `GitHubWebhookEventRepo` for optional webhook event logging
42
+ - Configurable collection names for all repositories
43
+ - Automatic TTL index creation for session cleanup
30
44
 
31
45
  #### API Handlers
32
- - `GET /github-app/install` - Initiate GitHub App installation
33
- - `GET /github-app/callback` - Handle installation callback
34
- - `POST /github-app/webhook` - Receive and validate webhook events
35
- - `DELETE /github-app/installation/:id` - Uninstall GitHub App
36
- - Optional handler registration via `registerRoutes` config option
46
+
47
+ - `GET /github-app/install` - Initiate GitHub App installation
48
+ - `GET /github-app/callback` - Handle installation callback
49
+ - `POST /github-app/webhook` - Receive and validate webhook events
50
+ - `DELETE /github-app/installation/:id` - Uninstall GitHub App
51
+ - Optional handler registration via `registerRoutes` config option
37
52
 
38
53
  #### Context API
39
- - `getClient(installationId)` - Get GitHub API client for installation
40
- - `getInstallation(userId)` - Get first installation for user
41
- - `getInstallations(userId)` - Get all installations for user
42
- - `deleteInstallation(userId, installationId)` - Delete installation
43
- - `hasRepositoryAccess(userId, owner, repo)` - Verify repository access
44
- - `getInstallationToken(installationId)` - Get raw installation token (advanced usage)
45
- - `clearTokenCache()` - Clear all cached installation tokens
46
- - `options` - Read-only access to plugin configuration
54
+
55
+ - `getClient(installationId)` - Get GitHub API client for installation
56
+ - `getInstallation(userId)` - Get first installation for user
57
+ - `getInstallations(userId)` - Get all installations for user
58
+ - `deleteInstallation(userId, installationId)` - Delete installation
59
+ - `hasRepositoryAccess(userId, owner, repo)` - Verify repository access
60
+ - `getInstallationToken(installationId)` - Get raw installation token (advanced usage)
61
+ - `clearTokenCache()` - Clear all cached installation tokens
62
+ - `options` - Read-only access to plugin configuration
47
63
 
48
64
  #### GitHub API Client Methods
49
- - `getRepositories()` - List accessible repositories
50
- - `getRepository(owner, repo)` - Get repository details
51
- - `getContents(owner, repo, path)` - Get file contents
52
- - `createIssue(owner, repo, params)` - Create GitHub issue
53
- - `request(method, endpoint, data)` - Generic API request with retry logic
65
+
66
+ - `getRepositories()` - List accessible repositories
67
+ - `getRepository(owner, repo)` - Get repository details
68
+ - `getContents(owner, repo, path)` - Get file contents
69
+ - `createIssue(owner, repo, params)` - Create GitHub issue
70
+ - `request(method, endpoint, data)` - Generic API request with retry logic
54
71
 
55
72
  #### Configuration Options
56
- - Required: `appId`, `privateKey`, `webhookSecret`, `clientId`, `clientSecret`
57
- - Optional: `appSlug`, `baseUrl` (default: https://api.github.com)
58
- - Callbacks: `onInstallationSuccess` (required), `onInstallationError`, `onWebhookEvent`
59
- - Database: `sessionsCollectionName`, `installationsCollectionName`, `webhookEventsCollectionName`
60
- - Cache: `tokenCacheTTL` (default: 3300 seconds), `sessionTTL` (default: 600 seconds)
61
- - Features: `registerRoutes` (default: true), `logWebhookEvents` (default: false)
73
+
74
+ - Required: `appId`, `privateKey`, `webhookSecret`, `clientId`, `clientSecret`
75
+ - Optional: `appSlug`, `baseUrl` (default: https://api.github.com)
76
+ - Callbacks: `onInstallationSuccess` (required), `onInstallationError`, `onWebhookEvent`
77
+ - Database: `sessionsCollectionName`, `installationsCollectionName`, `webhookEventsCollectionName`
78
+ - Cache: `tokenCacheTTL` (default: 3300 seconds), `sessionTTL` (default: 600 seconds)
79
+ - Features: `registerRoutes` (default: true), `logWebhookEvents` (default: false)
62
80
 
63
81
  #### Security Features
64
- - Private key validation on plugin initialization
65
- - CSRF protection with cryptographically secure state parameter (32 bytes)
66
- - Webhook signature validation using HMAC-SHA256
67
- - Constant-time comparison for state and signature validation
68
- - Installation tokens cached in memory only (never in database)
69
- - One-time use sessions (deleted after successful callback)
70
- - Automatic session expiration via MongoDB TTL indexes
82
+
83
+ - Private key validation on plugin initialization
84
+ - CSRF protection with cryptographically secure state parameter (32 bytes)
85
+ - Webhook signature validation using HMAC-SHA256
86
+ - Constant-time comparison for state and signature validation
87
+ - Installation tokens cached in memory only (never in database)
88
+ - One-time use sessions (deleted after successful callback)
89
+ - Automatic session expiration via MongoDB TTL indexes
71
90
 
72
91
  #### Error Handling
73
- - Kebab-case error codes for frontend translation
74
- - Comprehensive error codes: `invalid-state`, `session-expired`, `installation-not-found`, `invalid-private-key`, `jwt-signing-failed`, `token-exchange-failed`, `webhook-signature-invalid`, `webhook-payload-invalid`, `repository-not-accessible`, `installation-suspended`, `installation-not-owned`, `api-rate-limit`, `network-error`, `server-error`
75
- - User-friendly error messages with actionable hints
76
- - Detailed error logging for debugging
77
- - Graceful handling of GitHub API failures
78
- - Retry logic with exponential backoff for rate limits
92
+
93
+ - Kebab-case error codes for frontend translation
94
+ - Comprehensive error codes: `invalid-state`, `session-expired`, `installation-not-found`, `invalid-private-key`, `jwt-signing-failed`, `token-exchange-failed`, `webhook-signature-invalid`, `webhook-payload-invalid`, `repository-not-accessible`, `installation-suspended`, `installation-not-owned`, `api-rate-limit`, `network-error`, `server-error`
95
+ - User-friendly error messages with actionable hints
96
+ - Detailed error logging for debugging
97
+ - Graceful handling of GitHub API failures
98
+ - Retry logic with exponential backoff for rate limits
79
99
 
80
100
  #### Documentation
81
- - Comprehensive README.md with step-by-step guides
82
- - SECURITY.md covering all security considerations
83
- - 8 complete usage examples:
84
- - `basic-installation.ts` - Basic GitHub App installation with standalone auth
85
- - `webhook-handling.ts` - Process webhook events (push, PR, installation)
86
- - `repository-access.ts` - Access repositories via API client
87
- - `create-issue.ts` - Create GitHub issue with permission check
88
- - `with-jwt-auth.ts` - Optional integration with JWT Auth Plugin
89
- - `organization-installation.ts` - Organization-level installation
90
- - `error-handling.ts` - Comprehensive error handling
91
- - `multi-event-webhook.ts` - Handle multiple webhook event types
92
- - JSDoc comments on all public interfaces
93
- - TypeScript type exports for all schemas and interfaces
101
+
102
+ - Comprehensive README.md with step-by-step guides
103
+ - SECURITY.md covering all security considerations
104
+ - 8 complete usage examples:
105
+ - `basic-installation.ts` - Basic GitHub App installation with standalone auth
106
+ - `webhook-handling.ts` - Process webhook events (push, PR, installation)
107
+ - `repository-access.ts` - Access repositories via API client
108
+ - `create-issue.ts` - Create GitHub issue with permission check
109
+ - `with-jwt-auth.ts` - Optional integration with JWT Auth Plugin
110
+ - `organization-installation.ts` - Organization-level installation
111
+ - `error-handling.ts` - Comprehensive error handling
112
+ - `multi-event-webhook.ts` - Handle multiple webhook event types
113
+ - JSDoc comments on all public interfaces
114
+ - TypeScript type exports for all schemas and interfaces
94
115
 
95
116
  #### Testing
96
- - Project initialization tests
97
- - Schema and repository tests
98
- - JWT utilities tests (PKCS#1 and PKCS#8 support)
99
- - Webhook signature validation tests
100
- - Token cache tests
101
- - Error utilities tests
102
- - Authentication service tests
103
- - API client tests
104
- - Handler tests (installation flow, callbacks, webhooks)
105
- - Plugin initialization tests
106
- - Integration tests for end-to-end flows
107
- - Security tests for CSRF and signature validation
117
+
118
+ - Project initialization tests
119
+ - Schema and repository tests
120
+ - JWT utilities tests (PKCS#1 and PKCS#8 support)
121
+ - Webhook signature validation tests
122
+ - Token cache tests
123
+ - Error utilities tests
124
+ - Authentication service tests
125
+ - API client tests
126
+ - Handler tests (installation flow, callbacks, webhooks)
127
+ - Plugin initialization tests
128
+ - Integration tests for end-to-end flows
129
+ - Security tests for CSRF and signature validation
108
130
 
109
131
  ### Features Highlights
110
132
 
111
133
  #### Standalone Architecture
112
- - **No dependencies on JWT Auth Plugin** - Works with any authentication system
113
- - Plugin agnostic about authentication mechanism
114
- - Developers can use sessions, custom tokens, or any auth system
115
- - Optional integration with JWT Auth Plugin available
134
+
135
+ - **No dependencies on JWT Auth Plugin** - Works with any authentication system
136
+ - Plugin agnostic about authentication mechanism
137
+ - Developers can use sessions, custom tokens, or any auth system
138
+ - Optional integration with JWT Auth Plugin available
116
139
 
117
140
  #### Token Management
118
- - **Automatic caching** - Reduces GitHub API calls
119
- - **Smart expiration** - Caches for 55 minutes (tokens expire at 60 minutes)
120
- - **Automatic refresh** - Seamless token renewal
121
- - **Memory-only storage** - Enhanced security
141
+
142
+ - **Automatic caching** - Reduces GitHub API calls
143
+ - **Smart expiration** - Caches for 55 minutes (tokens expire at 60 minutes)
144
+ - **Automatic refresh** - Seamless token renewal
145
+ - **Memory-only storage** - Enhanced security
122
146
 
123
147
  #### Webhook Security
124
- - **Signature validation** - HMAC-SHA256 with constant-time comparison
125
- - **Automatic validation** - No manual verification needed
126
- - **Rejection of invalid webhooks** - Returns 401 for invalid signatures
148
+
149
+ - **Signature validation** - HMAC-SHA256 with constant-time comparison
150
+ - **Automatic validation** - No manual verification needed
151
+ - **Rejection of invalid webhooks** - Returns 401 for invalid signatures
127
152
 
128
153
  #### Developer Experience
129
- - **TypeScript-first** - Full type safety
130
- - **Auto-registration** - Handlers, repos, and jobs automatically registered
131
- - **Comprehensive examples** - 8 working examples covering all use cases
132
- - **Clear error messages** - Actionable error codes with hints
133
- - **Flexible configuration** - Sensible defaults, customizable when needed
154
+
155
+ - **TypeScript-first** - Full type safety
156
+ - **Auto-registration** - Handlers, repos, and jobs automatically registered
157
+ - **Comprehensive examples** - 8 working examples covering all use cases
158
+ - **Clear error messages** - Actionable error codes with hints
159
+ - **Flexible configuration** - Sensible defaults, customizable when needed
134
160
 
135
161
  ### Known Limitations
136
162
 
137
- - Single GitHub App per Flink application (multi-tenant support deferred to future)
138
- - No proactive token refresh before expiration (refreshes on-demand when expired)
139
- - GitHub Enterprise Server support via `baseUrl` option but not explicitly tested
140
- - No GraphQL API support (REST API only)
141
- - No advanced rate limit handling with queuing (basic retry logic included)
142
- - No webhook event replay mechanism
143
- - No repository permission auditing features
163
+ - Single GitHub App per Flink application (multi-tenant support deferred to future)
164
+ - No proactive token refresh before expiration (refreshes on-demand when expired)
165
+ - GitHub Enterprise Server support via `baseUrl` option but not explicitly tested
166
+ - No GraphQL API support (REST API only)
167
+ - No advanced rate limit handling with queuing (basic retry logic included)
168
+ - No webhook event replay mechanism
169
+ - No repository permission auditing features
144
170
 
145
171
  ### Breaking Changes
146
172
 
@@ -157,44 +183,48 @@ None (initial release)
157
183
  ## Roadmap
158
184
 
159
185
  ### Planned for v0.2.0
160
- - Multi-tenant support (multiple GitHub Apps per Flink application)
161
- - Proactive token refresh before expiration
162
- - Enhanced rate limit handling with request queuing
163
- - Webhook event replay mechanism for failed deliveries
164
- - GitHub Actions integration
165
- - GraphQL API support
186
+
187
+ - Multi-tenant support (multiple GitHub Apps per Flink application)
188
+ - Proactive token refresh before expiration
189
+ - Enhanced rate limit handling with request queuing
190
+ - Webhook event replay mechanism for failed deliveries
191
+ - GitHub Actions integration
192
+ - GraphQL API support
166
193
 
167
194
  ### Planned for v0.3.0
168
- - Repository permission auditing
169
- - Installation analytics and reporting
170
- - Batch operations for multiple repositories
171
- - Advanced webhook event filtering
172
- - Custom event processors registry
173
- - Webhook event transformation pipeline
195
+
196
+ - Repository permission auditing
197
+ - Installation analytics and reporting
198
+ - Batch operations for multiple repositories
199
+ - Advanced webhook event filtering
200
+ - Custom event processors registry
201
+ - Webhook event transformation pipeline
174
202
 
175
203
  ### Planned for v1.0.0
176
- - Production-ready stability
177
- - Comprehensive GitHub Enterprise Server testing
178
- - Performance optimizations
179
- - Advanced caching strategies
180
- - Complete test coverage (>90%)
181
- - Security audit and hardening
204
+
205
+ - Production-ready stability
206
+ - Comprehensive GitHub Enterprise Server testing
207
+ - Performance optimizations
208
+ - Advanced caching strategies
209
+ - Complete test coverage (>90%)
210
+ - Security audit and hardening
182
211
 
183
212
  ### Future Considerations
184
- - GitHub Packages integration
185
- - Container Registry support
186
- - Deployment status integration
187
- - Check runs and check suites support
188
- - Team management features
189
- - Marketplace integration
213
+
214
+ - GitHub Packages integration
215
+ - Container Registry support
216
+ - Deployment status integration
217
+ - Check runs and check suites support
218
+ - Team management features
219
+ - Marketplace integration
190
220
 
191
221
  ## Support
192
222
 
193
- - **Documentation:** [README.md](./README.md)
194
- - **Security:** [SECURITY.md](./SECURITY.md)
195
- - **Examples:** [examples/](./examples/)
196
- - **Issues:** [GitHub Issues](https://github.com/your-org/flink-framework/issues)
197
- - **Discussions:** [GitHub Discussions](https://github.com/your-org/flink-framework/discussions)
223
+ - **Documentation:** [README.md](./README.md)
224
+ - **Security:** [SECURITY.md](./SECURITY.md)
225
+ - **Examples:** [examples/](./examples/)
226
+ - **Issues:** [GitHub Issues](https://github.com/your-org/flink-framework/issues)
227
+ - **Discussions:** [GitHub Discussions](https://github.com/your-org/flink-framework/discussions)
198
228
 
199
229
  ## Contributing
200
230
 
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.githubAppPlugin = void 0;
29
+ exports.githubAppPlugin = githubAppPlugin;
30
30
  const flink_1 = require("@flink-app/flink");
31
31
  const GitHubAppSessionRepo_1 = __importDefault(require("./repos/GitHubAppSessionRepo"));
32
32
  const GitHubInstallationRepo_1 = __importDefault(require("./repos/GitHubInstallationRepo"));
@@ -373,4 +373,3 @@ function githubAppPlugin(options) {
373
373
  init,
374
374
  };
375
375
  }
376
- exports.githubAppPlugin = githubAppPlugin;
@@ -3,8 +3,6 @@
3
3
  *
4
4
  * Validates GitHub webhook signatures and parses webhook payloads.
5
5
  */
6
- /// <reference types="node" />
7
- /// <reference types="node" />
8
6
  /**
9
7
  * Parsed webhook payload data
10
8
  */
@@ -8,7 +8,10 @@
8
8
  * Error codes use kebab-case for frontend translation consistency.
9
9
  */
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.handleGitHubAPIError = exports.validatePrivateKey = exports.createGitHubAppError = exports.GitHubAppErrorCodes = void 0;
11
+ exports.GitHubAppErrorCodes = void 0;
12
+ exports.createGitHubAppError = createGitHubAppError;
13
+ exports.validatePrivateKey = validatePrivateKey;
14
+ exports.handleGitHubAPIError = handleGitHubAPIError;
12
15
  /**
13
16
  * GitHub App error codes
14
17
  *
@@ -50,7 +53,6 @@ function createGitHubAppError(code, message, details) {
50
53
  details,
51
54
  };
52
55
  }
53
- exports.createGitHubAppError = createGitHubAppError;
54
56
  /**
55
57
  * Validate private key format
56
58
  *
@@ -71,7 +73,6 @@ function validatePrivateKey(privateKey) {
71
73
  }
72
74
  return true;
73
75
  }
74
- exports.validatePrivateKey = validatePrivateKey;
75
76
  /**
76
77
  * Map GitHub API errors to standardized errors
77
78
  *
@@ -118,4 +119,3 @@ function handleGitHubAPIError(error) {
118
119
  status: error.status,
119
120
  });
120
121
  }
121
- exports.handleGitHubAPIError = handleGitHubAPIError;
@@ -9,7 +9,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
9
9
  return (mod && mod.__esModule) ? mod : { "default": mod };
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.generateJWT = exports.detectPEMFormat = void 0;
12
+ exports.detectPEMFormat = detectPEMFormat;
13
+ exports.generateJWT = generateJWT;
13
14
  const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
14
15
  /**
15
16
  * Detect PEM format (PKCS#1 or PKCS#8)
@@ -31,7 +32,6 @@ function detectPEMFormat(privateKey) {
31
32
  }
32
33
  throw new Error("Invalid PEM format. Expected PKCS#1 (BEGIN RSA PRIVATE KEY) or PKCS#8 (BEGIN PRIVATE KEY).");
33
34
  }
34
- exports.detectPEMFormat = detectPEMFormat;
35
35
  /**
36
36
  * Generate GitHub App JWT
37
37
  *
@@ -64,4 +64,3 @@ function generateJWT(appId, privateKey) {
64
64
  throw new Error(`Failed to sign JWT: ${error.message}`);
65
65
  }
66
66
  }
67
- exports.generateJWT = generateJWT;
@@ -11,7 +11,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
11
11
  return (mod && mod.__esModule) ? mod : { "default": mod };
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.generateSessionId = exports.validateState = exports.generateState = void 0;
14
+ exports.generateState = generateState;
15
+ exports.validateState = validateState;
16
+ exports.generateSessionId = generateSessionId;
15
17
  const crypto_1 = __importDefault(require("crypto"));
16
18
  /**
17
19
  * Generate a cryptographically secure state parameter
@@ -25,7 +27,6 @@ const crypto_1 = __importDefault(require("crypto"));
25
27
  function generateState() {
26
28
  return crypto_1.default.randomBytes(32).toString("hex");
27
29
  }
28
- exports.generateState = generateState;
29
30
  /**
30
31
  * Validate state parameter using constant-time comparison
31
32
  *
@@ -59,7 +60,6 @@ function validateState(provided, stored) {
59
60
  return false;
60
61
  }
61
62
  }
62
- exports.validateState = validateState;
63
63
  /**
64
64
  * Generate a session ID for installation flow tracking
65
65
  *
@@ -71,4 +71,3 @@ exports.validateState = validateState;
71
71
  function generateSessionId() {
72
72
  return crypto_1.default.randomBytes(16).toString("hex");
73
73
  }
74
- exports.generateSessionId = generateSessionId;
@@ -4,8 +4,6 @@
4
4
  * Validates GitHub webhook signatures using HMAC-SHA256 with
5
5
  * constant-time comparison to prevent timing attacks.
6
6
  */
7
- /// <reference types="node" />
8
- /// <reference types="node" />
9
7
  /**
10
8
  * Validate GitHub webhook signature
11
9
  *
@@ -9,7 +9,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
9
9
  return (mod && mod.__esModule) ? mod : { "default": mod };
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.validateWebhookSignature = void 0;
12
+ exports.validateWebhookSignature = validateWebhookSignature;
13
13
  const crypto_1 = __importDefault(require("crypto"));
14
14
  /**
15
15
  * Validate GitHub webhook signature
@@ -54,4 +54,3 @@ function validateWebhookSignature(payload, signature, secret) {
54
54
  return false;
55
55
  }
56
56
  }
57
- exports.validateWebhookSignature = validateWebhookSignature;
package/package.json CHANGED
@@ -1,41 +1,36 @@
1
1
  {
2
- "name": "@flink-app/github-app-plugin",
3
- "version": "0.12.1-alpha.47",
4
- "description": "Flink plugin for GitHub App integration with installation management and webhook handling",
5
- "scripts": {
6
- "test": "node --preserve-symlinks -r ts-node/register -- node_modules/jasmine/bin/jasmine --config=./spec/support/jasmine.json",
7
- "test:watch": "nodemon --ext ts --exec 'jasmine-ts --config=./spec/support/jasmine.json'",
8
- "prepare": "tsc --project tsconfig.dist.json",
9
- "build": "tsc --project tsconfig.dist.json",
10
- "watch": "tsc-watch --project tsconfig.dist.json"
11
- },
12
- "author": "joel@frost.se",
13
- "license": "MIT",
14
- "types": "dist/index.d.ts",
15
- "main": "dist/index.js",
16
- "publishConfig": {
17
- "access": "public"
18
- },
19
- "peerDependencies": {
20
- "mongodb": "^6.15.0"
21
- },
22
- "dependencies": {
23
- "jsonwebtoken": "^9.0.2"
24
- },
25
- "devDependencies": {
26
- "@flink-app/flink": "^0.12.1-alpha.47",
27
- "@flink-app/test-utils": "^0.12.1-alpha.47",
28
- "@types/jasmine": "^3.7.1",
29
- "@types/jsonwebtoken": "^9.0.5",
30
- "@types/node": "22.13.10",
31
- "jasmine": "^3.7.0",
32
- "jasmine-spec-reporter": "^7.0.0",
33
- "mongodb": "6.15.0",
34
- "mongodb-memory-server": "^10.2.3",
35
- "nodemon": "^2.0.7",
36
- "ts-node": "^9.1.1",
37
- "tsc-watch": "^4.2.9",
38
- "typescript": "5.4.5"
39
- },
40
- "gitHead": "a98a0af7f11e4a97f68da4d0d67677df7d2a2749"
41
- }
2
+ "name": "@flink-app/github-app-plugin",
3
+ "version": "0.13.1",
4
+ "description": "Flink plugin for GitHub App integration with installation management and webhook handling",
5
+ "author": "joel@frost.se",
6
+ "license": "MIT",
7
+ "types": "dist/index.d.ts",
8
+ "main": "dist/index.js",
9
+ "publishConfig": {
10
+ "access": "public"
11
+ },
12
+ "peerDependencies": {
13
+ "mongodb": "^6.15.0"
14
+ },
15
+ "dependencies": {
16
+ "jsonwebtoken": "^9.0.2"
17
+ },
18
+ "devDependencies": {
19
+ "@types/jasmine": "^3.7.1",
20
+ "@types/jsonwebtoken": "^9.0.5",
21
+ "@types/node": "22.13.10",
22
+ "mongodb-memory-server": "^10.2.3",
23
+ "ts-node": "^10.9.2",
24
+ "tsc-watch": "^4.2.9",
25
+ "@flink-app/flink": "0.13.1",
26
+ "@flink-app/test-utils": "0.13.1"
27
+ },
28
+ "gitHead": "4243e3b3cd6d4e1ca001a61baa8436bf2bbe4113",
29
+ "scripts": {
30
+ "test": "jasmine-ts --config=./spec/support/jasmine.json",
31
+ "test:watch": "nodemon --ext ts --exec 'jasmine-ts --config=./spec/support/jasmine.json'",
32
+ "build": "tsc --project tsconfig.dist.json",
33
+ "watch": "tsc-watch --project tsconfig.dist.json",
34
+ "clean": "rimraf dist .flink"
35
+ }
36
+ }
package/tsconfig.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "noEmit": false,
16
16
  "declaration": true,
17
17
  "experimentalDecorators": true,
18
- "checkJs": true,
18
+ "checkJs": false,
19
19
  "outDir": "dist",
20
20
  "typeRoots": ["./node_modules/@types"]
21
21
  },