@shipfox/api-server 9.1.0 → 9.3.0
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +63 -0
- package/README.md +14 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/instrumentation.js +2 -1
- package/dist/instrumentation.js.map +1 -1
- package/dist/modules.d.ts +4 -0
- package/dist/modules.d.ts.map +1 -1
- package/dist/modules.js +2 -1
- package/dist/modules.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +23 -23
- package/src/index.ts +1 -0
- package/src/instrumentation.ts +1 -1
- package/src/modules.test.ts +56 -12
- package/src/modules.ts +6 -1
- package/tsconfig.build.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
$ shipfox-swc
|
|
2
|
-
Successfully compiled: 7 files with swc (
|
|
2
|
+
Successfully compiled: 7 files with swc (307.75ms)
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,68 @@
|
|
|
1
1
|
# @shipfox/api-server
|
|
2
2
|
|
|
3
|
+
## 9.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- c8963f9: Expose an Auth module factory on `defaultModules()` for application-specific composition.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- 4425c6d: Adds independent stdout and file log thresholds and enables standard OpenTelemetry Pino log export in the API instrumentation preload.
|
|
12
|
+
- Updated dependencies [10cf63c]
|
|
13
|
+
- Updated dependencies [c0046d3]
|
|
14
|
+
- Updated dependencies [4425c6d]
|
|
15
|
+
- Updated dependencies [6017e56]
|
|
16
|
+
- Updated dependencies [7b6a409]
|
|
17
|
+
- @shipfox/api-auth@9.3.0
|
|
18
|
+
- @shipfox/api-auth-dto@9.3.0
|
|
19
|
+
- @shipfox/node-opentelemetry@0.6.3
|
|
20
|
+
- @shipfox/api-triggers@9.3.0
|
|
21
|
+
- @shipfox/api-workflows@9.3.0
|
|
22
|
+
- @shipfox/api-workflows-dto@9.3.0
|
|
23
|
+
- @shipfox/api-workspaces@9.3.0
|
|
24
|
+
- @shipfox/api-workspaces-dto@9.3.0
|
|
25
|
+
- @shipfox/annotations@9.3.0
|
|
26
|
+
- @shipfox/api-logs@9.3.0
|
|
27
|
+
- @shipfox/api-runners@9.3.0
|
|
28
|
+
- @shipfox/api-agent@9.3.0
|
|
29
|
+
- @shipfox/api-definitions@9.3.0
|
|
30
|
+
- @shipfox/api-dispatcher@9.3.0
|
|
31
|
+
- @shipfox/api-email-challenges@1.1.5
|
|
32
|
+
- @shipfox/api-integration-core@9.3.0
|
|
33
|
+
- @shipfox/api-projects@9.3.0
|
|
34
|
+
- @shipfox/api-secrets@9.3.0
|
|
35
|
+
- @shipfox/node-fastify@0.3.4
|
|
36
|
+
- @shipfox/node-module@1.0.3
|
|
37
|
+
|
|
38
|
+
## 9.2.0
|
|
39
|
+
|
|
40
|
+
### Patch Changes
|
|
41
|
+
|
|
42
|
+
- Updated dependencies [bd7c46b]
|
|
43
|
+
- Updated dependencies [b321700]
|
|
44
|
+
- Updated dependencies [456c884]
|
|
45
|
+
- Updated dependencies [36adf25]
|
|
46
|
+
- Updated dependencies [ad36e26]
|
|
47
|
+
- Updated dependencies [f31bee6]
|
|
48
|
+
- Updated dependencies [63c0e5b]
|
|
49
|
+
- @shipfox/api-auth@9.2.0
|
|
50
|
+
- @shipfox/api-auth-dto@9.2.0
|
|
51
|
+
- @shipfox/api-email-challenges@1.1.4
|
|
52
|
+
- @shipfox/api-projects-dto@9.2.0
|
|
53
|
+
- @shipfox/api-workspaces@9.2.0
|
|
54
|
+
- @shipfox/api-workspaces-dto@9.2.0
|
|
55
|
+
- @shipfox/annotations@9.2.0
|
|
56
|
+
- @shipfox/api-logs@9.2.0
|
|
57
|
+
- @shipfox/api-runners@9.2.0
|
|
58
|
+
- @shipfox/api-workflows@9.2.0
|
|
59
|
+
- @shipfox/api-definitions@9.2.0
|
|
60
|
+
- @shipfox/api-projects@9.2.0
|
|
61
|
+
- @shipfox/api-secrets@9.2.0
|
|
62
|
+
- @shipfox/api-integration-core@9.2.0
|
|
63
|
+
- @shipfox/api-agent@9.2.0
|
|
64
|
+
- @shipfox/api-triggers@9.2.0
|
|
65
|
+
|
|
3
66
|
## 9.1.0
|
|
4
67
|
|
|
5
68
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -5,10 +5,11 @@ Runs a Shipfox API server.
|
|
|
5
5
|
## What it does
|
|
6
6
|
|
|
7
7
|
- **`defaultModules()`**: Returns the standard module list.
|
|
8
|
+
- **`DefaultAuthModuleFactory`**: Builds the Auth module with the composed Workspaces client.
|
|
8
9
|
- **`createServer()`**: Builds an API server. The caller owns process signals.
|
|
9
10
|
- **`runServer()`**: Starts the server. It listens for SIGTERM and SIGINT.
|
|
10
11
|
- **`createLoginMethodsRoute()`**: Builds the public login-method catalog route. `createServer` mounts it automatically.
|
|
11
|
-
- **Instrumentation preload**: Starts metrics early. Load it before feature modules.
|
|
12
|
+
- **Instrumentation preload**: Starts metrics and optional logs early. Load it before feature modules.
|
|
12
13
|
|
|
13
14
|
## Installation
|
|
14
15
|
|
|
@@ -33,6 +34,18 @@ const modules = await defaultModules({
|
|
|
33
34
|
});
|
|
34
35
|
```
|
|
35
36
|
|
|
37
|
+
To provide an Auth module with an application-specific signup policy, use the
|
|
38
|
+
Auth factory. Its returned module is included in the standard composition and
|
|
39
|
+
its inter-module presentations are registered with the same transport:
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
import {createAuthModule} from '@shipfox/api-auth';
|
|
43
|
+
|
|
44
|
+
const modules = await defaultModules({
|
|
45
|
+
authModule: ({workspaces}) => createAuthModule({workspaces, signupPolicy}),
|
|
46
|
+
});
|
|
47
|
+
```
|
|
48
|
+
|
|
36
49
|
Load the instrumentation entry before feature modules:
|
|
37
50
|
|
|
38
51
|
```sh
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { type DefaultModulesExtension, type DefaultModulesOptions, type DefaultRunnersModuleFactory, defaultModules, } from './modules.js';
|
|
1
|
+
export { type DefaultAuthModuleFactory, type DefaultModulesExtension, type DefaultModulesOptions, type DefaultRunnersModuleFactory, defaultModules, } from './modules.js';
|
|
2
2
|
export { createLoginMethodsRoute } from './routes/login-methods.js';
|
|
3
3
|
export type { CreateServerOptions, RunServerOptions, ServerHandle } from './server.js';
|
|
4
4
|
export { createServer, runServer } from './server.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAC,mBAAmB,EAAE,gBAAgB,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AACrF,OAAO,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAC,mBAAmB,EAAE,gBAAgB,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AACrF,OAAO,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,aAAa,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n type DefaultModulesExtension,\n type DefaultModulesOptions,\n type DefaultRunnersModuleFactory,\n defaultModules,\n} from './modules.js';\nexport {createLoginMethodsRoute} from './routes/login-methods.js';\nexport type {CreateServerOptions, RunServerOptions, ServerHandle} from './server.js';\nexport {createServer, runServer} from './server.js';\n"],"names":["defaultModules","createLoginMethodsRoute","createServer","runServer"],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n type DefaultAuthModuleFactory,\n type DefaultModulesExtension,\n type DefaultModulesOptions,\n type DefaultRunnersModuleFactory,\n defaultModules,\n} from './modules.js';\nexport {createLoginMethodsRoute} from './routes/login-methods.js';\nexport type {CreateServerOptions, RunServerOptions, ServerHandle} from './server.js';\nexport {createServer, runServer} from './server.js';\n"],"names":["defaultModules","createLoginMethodsRoute","createServer","runServer"],"mappings":"AAAA,SAKEA,cAAc,QACT,eAAe;AACtB,SAAQC,uBAAuB,QAAO,4BAA4B;AAElE,SAAQC,YAAY,EAAEC,SAAS,QAAO,cAAc"}
|
package/dist/instrumentation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/instrumentation.ts"],"sourcesContent":["import {createRequire} from 'node:module';\nimport {startInstanceInstrumentation} from '@shipfox/node-opentelemetry';\n\nconst {version} = createRequire(import.meta.url)('../package.json') as {version: string};\n\n// The metrics API has no proxy meter: instruments created before this preload\n// completes bind to a no-op provider for the process lifetime.\nawait startInstanceInstrumentation({\n serviceName: 'api',\n serviceVersion: version,\n instrumentations: {fastify: true, http: true, pg: true, awsSdk: true},\n});\n"],"names":["createRequire","startInstanceInstrumentation","version","url","serviceName","serviceVersion","instrumentations","fastify","http","pg","awsSdk"],"mappings":"AAAA,SAAQA,aAAa,QAAO,cAAc;AAC1C,SAAQC,4BAA4B,QAAO,8BAA8B;AAEzE,MAAM,EAACC,OAAO,EAAC,GAAGF,cAAc,YAAYG,GAAG,EAAE;AAEjD,8EAA8E;AAC9E,+DAA+D;AAC/D,MAAMF,6BAA6B;IACjCG,aAAa;IACbC,gBAAgBH;IAChBI,kBAAkB;QAACC,SAAS;QAAMC,MAAM;QAAMC,IAAI;QAAMC,QAAQ;IAAI;
|
|
1
|
+
{"version":3,"sources":["../src/instrumentation.ts"],"sourcesContent":["import {createRequire} from 'node:module';\nimport {startInstanceInstrumentation} from '@shipfox/node-opentelemetry';\n\nconst {version} = createRequire(import.meta.url)('../package.json') as {version: string};\n\n// The metrics API has no proxy meter: instruments created before this preload\n// completes bind to a no-op provider for the process lifetime.\nawait startInstanceInstrumentation({\n serviceName: 'api',\n serviceVersion: version,\n instrumentations: {fastify: true, http: true, pg: true, awsSdk: true, pino: true},\n});\n"],"names":["createRequire","startInstanceInstrumentation","version","url","serviceName","serviceVersion","instrumentations","fastify","http","pg","awsSdk","pino"],"mappings":"AAAA,SAAQA,aAAa,QAAO,cAAc;AAC1C,SAAQC,4BAA4B,QAAO,8BAA8B;AAEzE,MAAM,EAACC,OAAO,EAAC,GAAGF,cAAc,YAAYG,GAAG,EAAE;AAEjD,8EAA8E;AAC9E,+DAA+D;AAC/D,MAAMF,6BAA6B;IACjCG,aAAa;IACbC,gBAAgBH;IAChBI,kBAAkB;QAACC,SAAS;QAAMC,MAAM;QAAMC,IAAI;QAAMC,QAAQ;QAAMC,MAAM;IAAI;AAClF"}
|
package/dist/modules.d.ts
CHANGED
|
@@ -4,9 +4,13 @@ import { type WorkspacesInterModuleClient } from '@shipfox/api-workspaces-dto/in
|
|
|
4
4
|
import type { ShipfoxModule } from '@shipfox/node-module';
|
|
5
5
|
export interface DefaultModulesOptions {
|
|
6
6
|
webhookDeliverySource?: WebhookDeliverySource | undefined;
|
|
7
|
+
authModule?: DefaultAuthModuleFactory | undefined;
|
|
7
8
|
runnersModule?: DefaultRunnersModuleFactory | undefined;
|
|
8
9
|
extension?: DefaultModulesExtension | undefined;
|
|
9
10
|
}
|
|
11
|
+
export type DefaultAuthModuleFactory = (options: {
|
|
12
|
+
workspaces: WorkspacesInterModuleClient;
|
|
13
|
+
}) => ShipfoxModule;
|
|
10
14
|
export type DefaultRunnersModuleFactory = (options: {
|
|
11
15
|
auth: AuthInterModuleClient;
|
|
12
16
|
}) => ShipfoxModule;
|
package/dist/modules.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,oCAAoC,CAAC;AAK5C,OAAO,EAA4B,KAAK,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AAapG,OAAO,EACL,KAAK,2BAA2B,EAEjC,MAAM,0CAA0C,CAAC;AAGlD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAOxD,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAC1D,aAAa,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IACxD,SAAS,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,EAAE;IAAC,IAAI,EAAE,qBAAqB,CAAA;CAAC,KAAK,aAAa,CAAC;AACpG,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE;IAC9C,UAAU,EAAE,2BAA2B,CAAC;CACzC,KAAK,aAAa,EAAE,CAAC;AAEtB,wBAAsB,cAAc,CAClC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,aAAa,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,oCAAoC,CAAC;AAK5C,OAAO,EAA4B,KAAK,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AAapG,OAAO,EACL,KAAK,2BAA2B,EAEjC,MAAM,0CAA0C,CAAC;AAGlD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAOxD,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAC1D,UAAU,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAClD,aAAa,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IACxD,SAAS,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE;IAC/C,UAAU,EAAE,2BAA2B,CAAC;CACzC,KAAK,aAAa,CAAC;AACpB,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,EAAE;IAAC,IAAI,EAAE,qBAAqB,CAAA;CAAC,KAAK,aAAa,CAAC;AACpG,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE;IAC9C,UAAU,EAAE,2BAA2B,CAAC;CACzC,KAAK,aAAa,EAAE,CAAC;AAEtB,wBAAsB,cAAc,CAClC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,aAAa,EAAE,CAAC,CAiJ1B"}
|
package/dist/modules.js
CHANGED
|
@@ -140,7 +140,7 @@ export async function defaultModules(options = {}) {
|
|
|
140
140
|
}) ?? [];
|
|
141
141
|
const modules = [
|
|
142
142
|
emailChallengesModule,
|
|
143
|
-
createAuthModule({
|
|
143
|
+
(options.authModule ?? createAuthModule)({
|
|
144
144
|
workspaces: workspacesClient
|
|
145
145
|
}),
|
|
146
146
|
workspacesModule,
|
|
@@ -159,6 +159,7 @@ export async function defaultModules(options = {}) {
|
|
|
159
159
|
projects: projectsClient,
|
|
160
160
|
runners: runnersClient,
|
|
161
161
|
secrets: secretsClient,
|
|
162
|
+
workspaces: workspacesClient,
|
|
162
163
|
integrations: integrationsClient
|
|
163
164
|
}),
|
|
164
165
|
annotationsModule,
|
package/dist/modules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/modules.ts"],"sourcesContent":["import {annotationsModule} from '@shipfox/annotations';\nimport {annotationsInterModuleContract} from '@shipfox/annotations-dto/inter-module';\nimport {createAgentModule} from '@shipfox/api-agent';\nimport {agentInterModuleContract} from '@shipfox/api-agent-dto/inter-module';\nimport {createAuthModule} from '@shipfox/api-auth';\nimport {config as authConfig} from '@shipfox/api-auth/config';\nimport {\n type AuthInterModuleClient,\n authInterModuleContract,\n} from '@shipfox/api-auth-dto/inter-module';\nimport {createDefinitionsModule} from '@shipfox/api-definitions';\nimport {definitionsInterModuleContract} from '@shipfox/api-definitions-dto/inter-module';\nimport {dispatcherModule} from '@shipfox/api-dispatcher';\nimport {emailChallengesModule} from '@shipfox/api-email-challenges';\nimport {createIntegrationsContext, type WebhookDeliverySource} from '@shipfox/api-integration-core';\nimport {integrationsInterModuleContract} from '@shipfox/api-integration-core-dto/inter-module';\nimport {createLogsModule} from '@shipfox/api-logs';\nimport {createProjectsModule} from '@shipfox/api-projects';\nimport {projectsInterModuleContract} from '@shipfox/api-projects-dto/inter-module';\nimport {createRunnersModule} from '@shipfox/api-runners';\nimport {runnersInterModuleContract} from '@shipfox/api-runners-dto/inter-module';\nimport {createSecretsModule} from '@shipfox/api-secrets';\nimport {secretsInterModuleContract} from '@shipfox/api-secrets-dto/inter-module';\nimport {createTriggersModule} from '@shipfox/api-triggers';\nimport {createWorkflowsModule} from '@shipfox/api-workflows';\nimport {workflowsInterModuleContract} from '@shipfox/api-workflows-dto/inter-module';\nimport {workspacesModule} from '@shipfox/api-workspaces';\nimport {\n type WorkspacesInterModuleClient,\n workspacesInterModuleContract,\n} from '@shipfox/api-workspaces-dto/inter-module';\nimport {reportError} from '@shipfox/node-error-monitoring';\nimport {durationToSeconds} from '@shipfox/node-jwt';\nimport type {ShipfoxModule} from '@shipfox/node-module';\nimport {\n createInMemoryInterModuleTransport,\n registerInterModulePresentations,\n} from '@shipfox/node-module/inter-module';\nimport {logger} from '@shipfox/node-opentelemetry';\n\nexport interface DefaultModulesOptions {\n webhookDeliverySource?: WebhookDeliverySource | undefined;\n runnersModule?: DefaultRunnersModuleFactory | undefined;\n extension?: DefaultModulesExtension | undefined;\n}\n\nexport type DefaultRunnersModuleFactory = (options: {auth: AuthInterModuleClient}) => ShipfoxModule;\nexport type DefaultModulesExtension = (options: {\n workspaces: WorkspacesInterModuleClient;\n}) => ShipfoxModule[];\n\nexport async function defaultModules(\n options: DefaultModulesOptions = {},\n): Promise<ShipfoxModule[]> {\n const interModuleTransport = createInMemoryInterModuleTransport({\n reportInternalError: (error, context) => {\n logger().error(\n {err: error, module: context.module, method: context.method, phase: context.phase},\n 'Inter-module call failed unexpectedly',\n );\n reportError(error, {\n boundary: 'inter-module',\n operation: `${context.module}.${context.method}`,\n tags: {module: context.module, method: context.method, phase: context.phase},\n });\n },\n });\n const workflowsClient = interModuleTransport.createClient(workflowsInterModuleContract);\n const authClient = interModuleTransport.createClient(authInterModuleContract);\n const agentClient = interModuleTransport.createClient(agentInterModuleContract);\n const runnersClient = interModuleTransport.createClient(runnersInterModuleContract);\n const projectsClient = interModuleTransport.createClient(projectsInterModuleContract);\n const definitionsClient = interModuleTransport.createClient(definitionsInterModuleContract);\n const annotationsClient = interModuleTransport.createClient(annotationsInterModuleContract);\n const secretsClient = interModuleTransport.createClient(secretsInterModuleContract);\n const workspacesClient = interModuleTransport.createClient(workspacesInterModuleContract);\n const integrationsClient = interModuleTransport.createClient(integrationsInterModuleContract);\n const integrations = await createIntegrationsContext({\n workspaces: workspacesClient,\n secrets: {\n deleteSecrets: async (params) => (await secretsClient.deleteSecrets(params)).deleted,\n linear: {\n getSecret: async (params) =>\n (\n await secretsClient.getSecret({\n ...params,\n namespace: `system/integrations/linear/${params.namespace}`,\n })\n ).value,\n setSecrets: async (params) => {\n const {editedBy, ...secretParams} = params;\n await secretsClient.setSecrets({\n ...secretParams,\n namespace: `system/integrations/linear/${secretParams.namespace}`,\n ...(editedBy === undefined ? {} : {editedBy}),\n });\n },\n deleteSecrets: async (params) =>\n (\n await secretsClient.deleteSecrets({\n ...params,\n namespace: `system/integrations/linear/${params.namespace}`,\n })\n ).deleted,\n },\n jira: {\n getSecret: async (params) =>\n (\n await secretsClient.getSecret({\n ...params,\n namespace: `system/integrations/jira/${params.namespace}`,\n })\n ).value,\n setSecrets: async (params) => {\n const {editedBy, ...secretParams} = params;\n await secretsClient.setSecrets({\n ...secretParams,\n namespace: `system/integrations/jira/${secretParams.namespace}`,\n ...(editedBy === undefined ? {} : {editedBy}),\n });\n },\n deleteSecrets: async (params) =>\n (\n await secretsClient.deleteSecrets({\n ...params,\n namespace: `system/integrations/jira/${params.namespace}`,\n })\n ).deleted,\n },\n slack: {\n getSecret: async (params) =>\n (\n await secretsClient.getSecret({\n ...params,\n namespace: `system/integrations/slack/${params.namespace}`,\n })\n ).value,\n setSecrets: async (params) => {\n const {editedBy, ...secretParams} = params;\n await secretsClient.setSecrets({\n ...secretParams,\n namespace: `system/integrations/slack/${secretParams.namespace}`,\n ...(editedBy === undefined ? {} : {editedBy}),\n });\n },\n deleteSecrets: async (params) =>\n (\n await secretsClient.deleteSecrets({\n ...params,\n namespace: `system/integrations/slack/${params.namespace}`,\n })\n ).deleted,\n },\n },\n agentTools: {workflows: workflowsClient},\n webhookDeliverySource: options.webhookDeliverySource,\n });\n const projectsModule = createProjectsModule({integrations: integrationsClient});\n const definitionsModule = createDefinitionsModule({\n projects: projectsClient,\n agent: agentClient,\n integrations: integrationsClient,\n });\n const extensionModules = options.extension?.({workspaces: workspacesClient}) ?? [];\n\n const modules = [\n emailChallengesModule,\n createAuthModule({workspaces: workspacesClient}),\n workspacesModule,\n createSecretsModule(projectsClient),\n createAgentModule({secrets: secretsClient}),\n integrations.module,\n projectsModule,\n definitionsModule,\n createWorkflowsModule({\n annotations: annotationsClient,\n agent: agentClient,\n definitions: definitionsClient,\n auth: authClient,\n projects: projectsClient,\n runners: runnersClient,\n secrets: secretsClient,\n integrations: integrationsClient,\n }),\n annotationsModule,\n (options.runnersModule ?? createRunnersModule)({auth: authClient}),\n createLogsModule({\n workflows: workflowsClient,\n jobLeaseTokenTtlSeconds: durationToSeconds(authConfig.AUTH_JOB_LEASE_TOKEN_EXPIRES_IN),\n }),\n createTriggersModule({workflows: workflowsClient}),\n dispatcherModule,\n ...extensionModules,\n ];\n registerInterModulePresentations({transport: interModuleTransport, modules});\n interModuleTransport.seal();\n return modules;\n}\n"],"names":["annotationsModule","annotationsInterModuleContract","createAgentModule","agentInterModuleContract","createAuthModule","config","authConfig","authInterModuleContract","createDefinitionsModule","definitionsInterModuleContract","dispatcherModule","emailChallengesModule","createIntegrationsContext","integrationsInterModuleContract","createLogsModule","createProjectsModule","projectsInterModuleContract","createRunnersModule","runnersInterModuleContract","createSecretsModule","secretsInterModuleContract","createTriggersModule","createWorkflowsModule","workflowsInterModuleContract","workspacesModule","workspacesInterModuleContract","reportError","durationToSeconds","createInMemoryInterModuleTransport","registerInterModulePresentations","logger","defaultModules","options","interModuleTransport","reportInternalError","error","context","err","module","method","phase","boundary","operation","tags","workflowsClient","createClient","authClient","agentClient","runnersClient","projectsClient","definitionsClient","annotationsClient","secretsClient","workspacesClient","integrationsClient","integrations","workspaces","secrets","deleteSecrets","params","deleted","linear","getSecret","namespace","value","setSecrets","editedBy","secretParams","undefined","jira","slack","agentTools","workflows","webhookDeliverySource","projectsModule","definitionsModule","projects","agent","extensionModules","extension","modules","annotations","definitions","auth","runners","runnersModule","jobLeaseTokenTtlSeconds","AUTH_JOB_LEASE_TOKEN_EXPIRES_IN","transport","seal"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/modules.ts"],"sourcesContent":["import {annotationsModule} from '@shipfox/annotations';\nimport {annotationsInterModuleContract} from '@shipfox/annotations-dto/inter-module';\nimport {createAgentModule} from '@shipfox/api-agent';\nimport {agentInterModuleContract} from '@shipfox/api-agent-dto/inter-module';\nimport {createAuthModule} from '@shipfox/api-auth';\nimport {config as authConfig} from '@shipfox/api-auth/config';\nimport {\n type AuthInterModuleClient,\n authInterModuleContract,\n} from '@shipfox/api-auth-dto/inter-module';\nimport {createDefinitionsModule} from '@shipfox/api-definitions';\nimport {definitionsInterModuleContract} from '@shipfox/api-definitions-dto/inter-module';\nimport {dispatcherModule} from '@shipfox/api-dispatcher';\nimport {emailChallengesModule} from '@shipfox/api-email-challenges';\nimport {createIntegrationsContext, type WebhookDeliverySource} from '@shipfox/api-integration-core';\nimport {integrationsInterModuleContract} from '@shipfox/api-integration-core-dto/inter-module';\nimport {createLogsModule} from '@shipfox/api-logs';\nimport {createProjectsModule} from '@shipfox/api-projects';\nimport {projectsInterModuleContract} from '@shipfox/api-projects-dto/inter-module';\nimport {createRunnersModule} from '@shipfox/api-runners';\nimport {runnersInterModuleContract} from '@shipfox/api-runners-dto/inter-module';\nimport {createSecretsModule} from '@shipfox/api-secrets';\nimport {secretsInterModuleContract} from '@shipfox/api-secrets-dto/inter-module';\nimport {createTriggersModule} from '@shipfox/api-triggers';\nimport {createWorkflowsModule} from '@shipfox/api-workflows';\nimport {workflowsInterModuleContract} from '@shipfox/api-workflows-dto/inter-module';\nimport {workspacesModule} from '@shipfox/api-workspaces';\nimport {\n type WorkspacesInterModuleClient,\n workspacesInterModuleContract,\n} from '@shipfox/api-workspaces-dto/inter-module';\nimport {reportError} from '@shipfox/node-error-monitoring';\nimport {durationToSeconds} from '@shipfox/node-jwt';\nimport type {ShipfoxModule} from '@shipfox/node-module';\nimport {\n createInMemoryInterModuleTransport,\n registerInterModulePresentations,\n} from '@shipfox/node-module/inter-module';\nimport {logger} from '@shipfox/node-opentelemetry';\n\nexport interface DefaultModulesOptions {\n webhookDeliverySource?: WebhookDeliverySource | undefined;\n authModule?: DefaultAuthModuleFactory | undefined;\n runnersModule?: DefaultRunnersModuleFactory | undefined;\n extension?: DefaultModulesExtension | undefined;\n}\n\nexport type DefaultAuthModuleFactory = (options: {\n workspaces: WorkspacesInterModuleClient;\n}) => ShipfoxModule;\nexport type DefaultRunnersModuleFactory = (options: {auth: AuthInterModuleClient}) => ShipfoxModule;\nexport type DefaultModulesExtension = (options: {\n workspaces: WorkspacesInterModuleClient;\n}) => ShipfoxModule[];\n\nexport async function defaultModules(\n options: DefaultModulesOptions = {},\n): Promise<ShipfoxModule[]> {\n const interModuleTransport = createInMemoryInterModuleTransport({\n reportInternalError: (error, context) => {\n logger().error(\n {err: error, module: context.module, method: context.method, phase: context.phase},\n 'Inter-module call failed unexpectedly',\n );\n reportError(error, {\n boundary: 'inter-module',\n operation: `${context.module}.${context.method}`,\n tags: {module: context.module, method: context.method, phase: context.phase},\n });\n },\n });\n const workflowsClient = interModuleTransport.createClient(workflowsInterModuleContract);\n const authClient = interModuleTransport.createClient(authInterModuleContract);\n const agentClient = interModuleTransport.createClient(agentInterModuleContract);\n const runnersClient = interModuleTransport.createClient(runnersInterModuleContract);\n const projectsClient = interModuleTransport.createClient(projectsInterModuleContract);\n const definitionsClient = interModuleTransport.createClient(definitionsInterModuleContract);\n const annotationsClient = interModuleTransport.createClient(annotationsInterModuleContract);\n const secretsClient = interModuleTransport.createClient(secretsInterModuleContract);\n const workspacesClient = interModuleTransport.createClient(workspacesInterModuleContract);\n const integrationsClient = interModuleTransport.createClient(integrationsInterModuleContract);\n const integrations = await createIntegrationsContext({\n workspaces: workspacesClient,\n secrets: {\n deleteSecrets: async (params) => (await secretsClient.deleteSecrets(params)).deleted,\n linear: {\n getSecret: async (params) =>\n (\n await secretsClient.getSecret({\n ...params,\n namespace: `system/integrations/linear/${params.namespace}`,\n })\n ).value,\n setSecrets: async (params) => {\n const {editedBy, ...secretParams} = params;\n await secretsClient.setSecrets({\n ...secretParams,\n namespace: `system/integrations/linear/${secretParams.namespace}`,\n ...(editedBy === undefined ? {} : {editedBy}),\n });\n },\n deleteSecrets: async (params) =>\n (\n await secretsClient.deleteSecrets({\n ...params,\n namespace: `system/integrations/linear/${params.namespace}`,\n })\n ).deleted,\n },\n jira: {\n getSecret: async (params) =>\n (\n await secretsClient.getSecret({\n ...params,\n namespace: `system/integrations/jira/${params.namespace}`,\n })\n ).value,\n setSecrets: async (params) => {\n const {editedBy, ...secretParams} = params;\n await secretsClient.setSecrets({\n ...secretParams,\n namespace: `system/integrations/jira/${secretParams.namespace}`,\n ...(editedBy === undefined ? {} : {editedBy}),\n });\n },\n deleteSecrets: async (params) =>\n (\n await secretsClient.deleteSecrets({\n ...params,\n namespace: `system/integrations/jira/${params.namespace}`,\n })\n ).deleted,\n },\n slack: {\n getSecret: async (params) =>\n (\n await secretsClient.getSecret({\n ...params,\n namespace: `system/integrations/slack/${params.namespace}`,\n })\n ).value,\n setSecrets: async (params) => {\n const {editedBy, ...secretParams} = params;\n await secretsClient.setSecrets({\n ...secretParams,\n namespace: `system/integrations/slack/${secretParams.namespace}`,\n ...(editedBy === undefined ? {} : {editedBy}),\n });\n },\n deleteSecrets: async (params) =>\n (\n await secretsClient.deleteSecrets({\n ...params,\n namespace: `system/integrations/slack/${params.namespace}`,\n })\n ).deleted,\n },\n },\n agentTools: {workflows: workflowsClient},\n webhookDeliverySource: options.webhookDeliverySource,\n });\n const projectsModule = createProjectsModule({integrations: integrationsClient});\n const definitionsModule = createDefinitionsModule({\n projects: projectsClient,\n agent: agentClient,\n integrations: integrationsClient,\n });\n const extensionModules = options.extension?.({workspaces: workspacesClient}) ?? [];\n\n const modules = [\n emailChallengesModule,\n (options.authModule ?? createAuthModule)({workspaces: workspacesClient}),\n workspacesModule,\n createSecretsModule(projectsClient),\n createAgentModule({secrets: secretsClient}),\n integrations.module,\n projectsModule,\n definitionsModule,\n createWorkflowsModule({\n annotations: annotationsClient,\n agent: agentClient,\n definitions: definitionsClient,\n auth: authClient,\n projects: projectsClient,\n runners: runnersClient,\n secrets: secretsClient,\n workspaces: workspacesClient,\n integrations: integrationsClient,\n }),\n annotationsModule,\n (options.runnersModule ?? createRunnersModule)({auth: authClient}),\n createLogsModule({\n workflows: workflowsClient,\n jobLeaseTokenTtlSeconds: durationToSeconds(authConfig.AUTH_JOB_LEASE_TOKEN_EXPIRES_IN),\n }),\n createTriggersModule({workflows: workflowsClient}),\n dispatcherModule,\n ...extensionModules,\n ];\n registerInterModulePresentations({transport: interModuleTransport, modules});\n interModuleTransport.seal();\n return modules;\n}\n"],"names":["annotationsModule","annotationsInterModuleContract","createAgentModule","agentInterModuleContract","createAuthModule","config","authConfig","authInterModuleContract","createDefinitionsModule","definitionsInterModuleContract","dispatcherModule","emailChallengesModule","createIntegrationsContext","integrationsInterModuleContract","createLogsModule","createProjectsModule","projectsInterModuleContract","createRunnersModule","runnersInterModuleContract","createSecretsModule","secretsInterModuleContract","createTriggersModule","createWorkflowsModule","workflowsInterModuleContract","workspacesModule","workspacesInterModuleContract","reportError","durationToSeconds","createInMemoryInterModuleTransport","registerInterModulePresentations","logger","defaultModules","options","interModuleTransport","reportInternalError","error","context","err","module","method","phase","boundary","operation","tags","workflowsClient","createClient","authClient","agentClient","runnersClient","projectsClient","definitionsClient","annotationsClient","secretsClient","workspacesClient","integrationsClient","integrations","workspaces","secrets","deleteSecrets","params","deleted","linear","getSecret","namespace","value","setSecrets","editedBy","secretParams","undefined","jira","slack","agentTools","workflows","webhookDeliverySource","projectsModule","definitionsModule","projects","agent","extensionModules","extension","modules","authModule","annotations","definitions","auth","runners","runnersModule","jobLeaseTokenTtlSeconds","AUTH_JOB_LEASE_TOKEN_EXPIRES_IN","transport","seal"],"mappings":"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"}
|