@learncard/learn-cloud-service 2.5.35 → 2.5.37
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/.env.example +24 -25
- package/CHANGELOG.md +30 -0
- package/bootstrapLambda.test.ts +68 -0
- package/bundle.mjs +9 -1
- package/config/config.dev.json +8 -0
- package/config/config.example.json +8 -0
- package/config/config.json +1 -0
- package/config/config.production.json +8 -0
- package/config/config.scouts.dev.json +3 -0
- package/config/config.scouts.production.json +4 -0
- package/didWebLambda.test.ts +41 -0
- package/didWebLambda.ts +13 -19
- package/didWebLambdaApp.ts +23 -0
- package/dist/config/applyDockerStageConfig.d.ts +2 -0
- package/dist/config/applyDockerStageConfig.d.ts.map +1 -0
- package/dist/config/serverlessFunctionEnv.test.d.ts +2 -0
- package/dist/config/serverlessFunctionEnv.test.d.ts.map +1 -0
- package/dist/config/stageConfig.d.ts +10 -0
- package/dist/config/stageConfig.d.ts.map +1 -0
- package/dist/config/stageConfig.test.d.ts +2 -0
- package/dist/config/stageConfig.test.d.ts.map +1 -0
- package/dist/didkit_wasm_bg.wasm +0 -0
- package/dist/docker-entry.d.ts +1 -1
- package/dist/docker-entry.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/publish-metafile.json +1 -0
- package/esbuildPlugins.cjs +1 -0
- package/lambda.ts +22 -153
- package/lambdaApp.ts +163 -0
- package/oidcLambda.test.ts +41 -0
- package/oidcLambda.ts +13 -19
- package/oidcLambdaApp.ts +23 -0
- package/package.json +17 -16
- package/project.json +8 -1
- package/serverless-local.yml +3 -1
- package/serverless.function-env.cjs +31 -0
- package/serverless.yml +15 -29
- package/src/config/applyDockerStageConfig.ts +6 -0
- package/src/config/serverlessFunctionEnv.test.ts +81 -0
- package/src/config/stageConfig.test.ts +26 -0
- package/src/config/stageConfig.ts +24 -0
- package/src/docker-entry.ts +2 -0
- package/vitest.config.ts +3 -0
- package/xApiLambda.test.ts +41 -0
- package/xApiLambda.ts +13 -19
- package/xApiLambdaApp.ts +23 -0
package/.env.example
CHANGED
|
@@ -1,36 +1,35 @@
|
|
|
1
|
-
# LearnCloud
|
|
2
|
-
#
|
|
1
|
+
# LearnCloud: copy to .env. Values below are disposable local examples, not deploy secrets.
|
|
2
|
+
# Public configuration lives in config/config.json and config/config.<stage>.json.
|
|
3
|
+
# Precedence: schema defaults < base < stage < Lambda runtime bundle < non-empty real env.
|
|
4
|
+
# CONFIG_STAGE=dev or production opts local/Docker/offline into checked-in stage settings.
|
|
5
|
+
# Without CONFIG_STAGE, keep using local env and schema defaults as before.
|
|
6
|
+
# Lambda selects LAMBDA_STAGE; the bundle is learn-cloud-service/<stage>/runtime-secrets.
|
|
7
|
+
# Leave RUNTIME_SECRETS_ID unset locally. Keep GitHub fallbacks for rollback.
|
|
8
|
+
CONFIG_STAGE=
|
|
9
|
+
RUNTIME_SECRETS_ID=
|
|
3
10
|
|
|
4
|
-
|
|
5
|
-
PORT=3000
|
|
11
|
+
# Required credentials: replace every example before connecting to shared services.
|
|
6
12
|
LEARN_CLOUD_SEED=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
7
13
|
LEARN_CLOUD_MONGO_URI=mongodb://localhost:27017
|
|
8
14
|
LEARN_CLOUD_MONGO_DB_NAME=learncloud
|
|
9
|
-
DOMAIN_NAME=
|
|
10
|
-
SERVER_URL=http://localhost:4100
|
|
11
|
-
XAPI_ENDPOINT=
|
|
12
15
|
|
|
16
|
+
# Optional runtime credentials, including the private xAPI endpoint.
|
|
17
|
+
XAPI_ENDPOINT=
|
|
18
|
+
XAPI_USERNAME=
|
|
19
|
+
XAPI_PASSWORD=
|
|
20
|
+
JWT_SIGNING_KEY=
|
|
21
|
+
SENTRY_DSN=
|
|
13
22
|
# Configure both RSA values or leave both empty to generate an ephemeral pair.
|
|
14
23
|
RSA_PRIVATE_KEY=
|
|
15
24
|
RSA_PUBLIC_KEY=
|
|
16
25
|
|
|
26
|
+
# Local infrastructure. Explicit env wins over a selected stage.
|
|
27
|
+
NODE_ENV=development
|
|
28
|
+
IS_OFFLINE=true
|
|
29
|
+
PORT=3000
|
|
17
30
|
REDIS_HOST=
|
|
18
31
|
REDIS_PORT=
|
|
19
|
-
|
|
20
|
-
SENTRY_ENV
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
CI=false
|
|
24
|
-
|
|
25
|
-
# LC-2187 service-only share-content routes start with valid service configuration.
|
|
26
|
-
# All four values are required and REDIS_HOST/REDIS_PORT must point at the real
|
|
27
|
-
# replay store. Real values are provisioned per environment, never committed.
|
|
28
|
-
# LearnCloud's own service DID that service tokens must address.
|
|
29
|
-
SHARE_CONTENT_AUDIENCE=
|
|
30
|
-
# Comma-separated allowlisted Brain service DIDs.
|
|
31
|
-
SHARE_CONTENT_SERVICE_DIDS=
|
|
32
|
-
# Comma-separated exact JWS `kid` verification methods (DID URL with fragment).
|
|
33
|
-
SHARE_CONTENT_VERIFICATION_METHODS=
|
|
34
|
-
# JSON object mapping each service DID to the namespaces it may use, e.g.
|
|
35
|
-
# {"did:web:brain.example":["learncard"]}
|
|
36
|
-
SHARE_CONTENT_NAMESPACE_BINDINGS=
|
|
32
|
+
# Local URL override, if needed: SERVER_URL=http://localhost:4100.
|
|
33
|
+
# SENTRY_ENV and SHARE_CONTENT_* trust settings come from the selected stage.
|
|
34
|
+
# Self-hosters can register config/config.example.json as their own stage or use explicit env.
|
|
35
|
+
# SENTRY_AUTH_TOKEN / SENTRY_ORG / SENTRY_PROJECT belong only in the build environment.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# @learncard/network-brain-service
|
|
2
2
|
|
|
3
|
+
## 2.5.37
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1711](https://github.com/learningeconomy/LearnCard/pull/1711) [`63ded61d2b1b81ce1c8ad7b9415510da5e4c24ae`](https://github.com/learningeconomy/LearnCard/commit/63ded61d2b1b81ce1c8ad7b9415510da5e4c24ae) Thanks [@goblincore](https://github.com/goblincore)! - Exclude bundled service configuration from published service dependencies so public packages do not require the private service-config workspace package during installation. Keep runtime workspace dependencies for source-based service deployments.
|
|
8
|
+
|
|
9
|
+
## 2.5.36
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#1670](https://github.com/learningeconomy/LearnCard/pull/1670) [`7656a57d30c6d80b8a25a8bb14bcd3b08b3648c2`](https://github.com/learningeconomy/LearnCard/commit/7656a57d30c6d80b8a25a8bb14bcd3b08b3648c2) Thanks [@Custard7](https://github.com/Custard7)! - Adopt the shared service-config model: load checked-in non-secret per-stage configuration before environment validation, bootstrap every Lambda entrypoint through the shared lazy loader, and deliver runtime secrets through an optional AWS Secrets Manager bundle with a per-value fallback for stages without one.
|
|
14
|
+
|
|
15
|
+
- [#1670](https://github.com/learningeconomy/LearnCard/pull/1670) [`7656a57d30c6d80b8a25a8bb14bcd3b08b3648c2`](https://github.com/learningeconomy/LearnCard/commit/7656a57d30c6d80b8a25a8bb14bcd3b08b3648c2) Thanks [@Custard7](https://github.com/Custard7)! - Select backend stage files by tenant as well as stage. `CONFIG_TENANT=scouts` loads `config.scouts.<stage>.json` (generated from the live ScoutPass Lambdas), so ScoutPass deployments no longer inherit LearnCard domains, trust settings or seed-encryption flags; a named tenant without a stage file fails closed. `ESCROW_ENCLAVE_MODE` is now forwarded in runtime-secrets bundle mode too.
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [[`6209da80c52ac056a7644dab14669192740c9dad`](https://github.com/learningeconomy/LearnCard/commit/6209da80c52ac056a7644dab14669192740c9dad), [`5890451789b18afee45dc5ecbab3fa30aa90f085`](https://github.com/learningeconomy/LearnCard/commit/5890451789b18afee45dc5ecbab3fa30aa90f085), [`1387cd0a08fa6b0a706c86a5a0376b6c7d706856`](https://github.com/learningeconomy/LearnCard/commit/1387cd0a08fa6b0a706c86a5a0376b6c7d706856), [`d7ca528898d988c65f0dc7084cfdcd41767648c5`](https://github.com/learningeconomy/LearnCard/commit/d7ca528898d988c65f0dc7084cfdcd41767648c5), [`8f3bc66ab3d3e5e1edb3fbf5f362025875a914ba`](https://github.com/learningeconomy/LearnCard/commit/8f3bc66ab3d3e5e1edb3fbf5f362025875a914ba), [`1387cd0a08fa6b0a706c86a5a0376b6c7d706856`](https://github.com/learningeconomy/LearnCard/commit/1387cd0a08fa6b0a706c86a5a0376b6c7d706856), [`267cf40291b3a63caf178857be0e57feaf5e0948`](https://github.com/learningeconomy/LearnCard/commit/267cf40291b3a63caf178857be0e57feaf5e0948), [`7656a57d30c6d80b8a25a8bb14bcd3b08b3648c2`](https://github.com/learningeconomy/LearnCard/commit/7656a57d30c6d80b8a25a8bb14bcd3b08b3648c2), [`c78c982f9f4911f1ca2973380f19d80db775e012`](https://github.com/learningeconomy/LearnCard/commit/c78c982f9f4911f1ca2973380f19d80db775e012), [`590adf48867d6c6fd504e66a11c9827d5102122d`](https://github.com/learningeconomy/LearnCard/commit/590adf48867d6c6fd504e66a11c9827d5102122d)]:
|
|
18
|
+
- @learncard/types@5.23.0
|
|
19
|
+
- @learncard/service-config@0.1.1
|
|
20
|
+
- @learncard/didkit-plugin@1.10.3
|
|
21
|
+
- @learncard/core@9.4.38
|
|
22
|
+
- @learncard/helpers@1.6.2
|
|
23
|
+
- @learncard/did-web-plugin@1.1.38
|
|
24
|
+
- @learncard/didkey-plugin@1.1.38
|
|
25
|
+
- @learncard/didkit-plugin-node@0.3.3
|
|
26
|
+
- @learncard/encryption-plugin@1.1.38
|
|
27
|
+
- @learncard/learn-card-plugin@1.2.38
|
|
28
|
+
- @learncard/vc-plugin@1.6.4
|
|
29
|
+
- @learncard/vc-templates-plugin@1.1.38
|
|
30
|
+
- @learncard/crypto-plugin@1.1.38
|
|
31
|
+
- @learncard/expiration-plugin@1.2.38
|
|
32
|
+
|
|
3
33
|
## 2.5.35
|
|
4
34
|
|
|
5
35
|
### Patch Changes
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { APIGatewayProxyEventV2, Context } from 'aws-lambda';
|
|
2
|
+
import { beforeEach, expect, it, vi } from 'vitest';
|
|
3
|
+
|
|
4
|
+
const mocks = vi.hoisted(() => ({ bootstrap: vi.fn(), getApp: vi.fn(), handler: vi.fn() }));
|
|
5
|
+
|
|
6
|
+
const HANDLERS = ['trpcHandler', 'openApiHandler', 'shareContentHandler', 'swaggerUiHandler'];
|
|
7
|
+
|
|
8
|
+
vi.mock('@learncard/service-config', () => ({ bootstrapLambda: mocks.bootstrap }));
|
|
9
|
+
vi.mock('./src/config/stageConfig', () => ({ base: {}, stages: { dev: {}, production: {} } }));
|
|
10
|
+
vi.mock('./lambdaApp', () => Object.fromEntries(HANDLERS.map(name => [name, mocks.handler])));
|
|
11
|
+
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
vi.resetModules();
|
|
14
|
+
vi.clearAllMocks();
|
|
15
|
+
mocks.bootstrap.mockReturnValue(mocks.getApp);
|
|
16
|
+
mocks.handler.mockResolvedValue({ statusCode: 200 });
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('bootstraps the API once with checked-in stage config', async () => {
|
|
20
|
+
vi.stubEnv('AWS_LAMBDA_FUNCTION_NAME', 'learn-cloud-service-dev-trpc');
|
|
21
|
+
vi.stubEnv('LAMBDA_STAGE', 'dev');
|
|
22
|
+
await import('./lambda');
|
|
23
|
+
expect(mocks.bootstrap).toHaveBeenCalledTimes(1);
|
|
24
|
+
expect(mocks.bootstrap).toHaveBeenCalledWith({
|
|
25
|
+
base: {},
|
|
26
|
+
stages: { dev: {}, production: {} },
|
|
27
|
+
stage: 'dev',
|
|
28
|
+
importApp: expect.any(Function),
|
|
29
|
+
});
|
|
30
|
+
vi.unstubAllEnvs();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('uses CONFIG_STAGE outside Lambda rather than LAMBDA_STAGE', async () => {
|
|
34
|
+
vi.stubEnv('AWS_LAMBDA_FUNCTION_NAME', '');
|
|
35
|
+
vi.stubEnv('LAMBDA_STAGE', 'production');
|
|
36
|
+
vi.stubEnv('CONFIG_STAGE', 'dev');
|
|
37
|
+
await import('./lambda');
|
|
38
|
+
expect(mocks.bootstrap).toHaveBeenCalledWith(expect.objectContaining({ stage: 'dev' }));
|
|
39
|
+
vi.unstubAllEnvs();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('forces no deployed stage when serverless-offline sets a function name with an empty LAMBDA_STAGE', async () => {
|
|
43
|
+
vi.stubEnv('AWS_LAMBDA_FUNCTION_NAME', 'learn-cloud-service-dev-trpc');
|
|
44
|
+
vi.stubEnv('LAMBDA_STAGE', '');
|
|
45
|
+
vi.stubEnv('CONFIG_STAGE', '');
|
|
46
|
+
await import('./lambda');
|
|
47
|
+
expect(mocks.bootstrap).toHaveBeenCalledWith(expect.objectContaining({ stage: '' }));
|
|
48
|
+
vi.unstubAllEnvs();
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('forwards every handler through its bootstrap accessor', async () => {
|
|
52
|
+
mocks.getApp.mockResolvedValue(Object.fromEntries(HANDLERS.map(name => [name, mocks.handler])));
|
|
53
|
+
const lambda = await import('./lambda');
|
|
54
|
+
const event = {} as APIGatewayProxyEventV2;
|
|
55
|
+
const context = {} as Context;
|
|
56
|
+
const callback = vi.fn();
|
|
57
|
+
const handlers = [
|
|
58
|
+
lambda.trpcHandler,
|
|
59
|
+
lambda.openApiHandler,
|
|
60
|
+
lambda.shareContentHandler,
|
|
61
|
+
lambda.swaggerUiHandler,
|
|
62
|
+
];
|
|
63
|
+
for (const handler of handlers) await handler(event, context, callback);
|
|
64
|
+
expect(mocks.bootstrap).toHaveBeenCalledTimes(1);
|
|
65
|
+
expect(mocks.getApp).toHaveBeenCalledTimes(handlers.length);
|
|
66
|
+
expect(mocks.handler).toHaveBeenCalledTimes(handlers.length);
|
|
67
|
+
expect(mocks.handler).toHaveBeenCalledWith(event, context, callback);
|
|
68
|
+
});
|
package/bundle.mjs
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { writeFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
1
3
|
import { build } from 'esbuild';
|
|
2
4
|
import plugins from './esbuildPlugins.cjs';
|
|
3
5
|
|
|
@@ -9,6 +11,7 @@ const finalBuildObj = {
|
|
|
9
11
|
entryPoints: ['src/index.ts'],
|
|
10
12
|
platform: 'node',
|
|
11
13
|
bundle: true,
|
|
14
|
+
metafile: true,
|
|
12
15
|
format: 'cjs',
|
|
13
16
|
outdir: 'dist',
|
|
14
17
|
target: 'node18',
|
|
@@ -22,6 +25,11 @@ if (process.env.NODE_ENV !== 'production') {
|
|
|
22
25
|
finalBuildObj.minify = false;
|
|
23
26
|
}
|
|
24
27
|
|
|
25
|
-
await build(finalBuildObj).then(
|
|
28
|
+
await build(finalBuildObj).then(result => {
|
|
29
|
+
// Publish preparation verifies private helpers are not external runtime imports.
|
|
30
|
+
writeFileSync(
|
|
31
|
+
join(finalBuildObj.outdir, 'publish-metafile.json'),
|
|
32
|
+
JSON.stringify(result.metafile)
|
|
33
|
+
);
|
|
26
34
|
console.log(`🎁 Done building main bundle! (${Date.now() - startTime}ms)`);
|
|
27
35
|
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"SENTRY_ENV": "learn-cloud-staging",
|
|
3
|
+
"SERVER_URL": "https://staging.cloud.learncard.com",
|
|
4
|
+
"SHARE_CONTENT_AUDIENCE": "did:web:staging.cloud.learncard.com",
|
|
5
|
+
"SHARE_CONTENT_NAMESPACE_BINDINGS": "{\"did:web:staging.network.learncard.com\":[\"learncard\"]}",
|
|
6
|
+
"SHARE_CONTENT_SERVICE_DIDS": "did:web:staging.network.learncard.com",
|
|
7
|
+
"SHARE_CONTENT_VERIFICATION_METHODS": "did:web:staging.network.learncard.com#owner"
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"SENTRY_ENV": "learn-cloud-example",
|
|
3
|
+
"SERVER_URL": "https://cloud.example.com",
|
|
4
|
+
"SHARE_CONTENT_AUDIENCE": "did:web:cloud.example.com",
|
|
5
|
+
"SHARE_CONTENT_NAMESPACE_BINDINGS": "{\"did:web:network.example.com\":[\"learncard\"]}",
|
|
6
|
+
"SHARE_CONTENT_SERVICE_DIDS": "did:web:network.example.com",
|
|
7
|
+
"SHARE_CONTENT_VERIFICATION_METHODS": "did:web:network.example.com#owner"
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"SENTRY_ENV": "learn-cloud-production",
|
|
3
|
+
"SERVER_URL": "https://cloud.learncard.com",
|
|
4
|
+
"SHARE_CONTENT_AUDIENCE": "did:web:cloud.learncard.com",
|
|
5
|
+
"SHARE_CONTENT_NAMESPACE_BINDINGS": "{\"did:web:network.learncard.com\":[\"learncard\"]}",
|
|
6
|
+
"SHARE_CONTENT_SERVICE_DIDS": "did:web:network.learncard.com",
|
|
7
|
+
"SHARE_CONTENT_VERIFICATION_METHODS": "did:web:network.learncard.com#owner"
|
|
8
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { APIGatewayProxyEventV2, Context } from 'aws-lambda';
|
|
2
|
+
import { beforeEach, expect, it, vi } from 'vitest';
|
|
3
|
+
|
|
4
|
+
const mocks = vi.hoisted(() => ({ bootstrap: vi.fn(), getApp: vi.fn(), handler: vi.fn() }));
|
|
5
|
+
|
|
6
|
+
vi.mock('@learncard/service-config', () => ({ bootstrapLambda: mocks.bootstrap }));
|
|
7
|
+
vi.mock('./src/config/stageConfig', () => ({ base: {}, stages: { dev: {}, production: {} } }));
|
|
8
|
+
vi.mock('./didWebLambdaApp', () => ({ didWebHandler: mocks.handler }));
|
|
9
|
+
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
vi.resetModules();
|
|
12
|
+
vi.clearAllMocks();
|
|
13
|
+
mocks.bootstrap.mockReturnValue(mocks.getApp);
|
|
14
|
+
mocks.getApp.mockResolvedValue({ didWebHandler: mocks.handler });
|
|
15
|
+
mocks.handler.mockResolvedValue({ statusCode: 200 });
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('bootstraps the didWeb app with checked-in stage config and the deploy stage', async () => {
|
|
19
|
+
vi.stubEnv('AWS_LAMBDA_FUNCTION_NAME', 'learn-cloud-service-production-didWeb');
|
|
20
|
+
vi.stubEnv('LAMBDA_STAGE', 'production');
|
|
21
|
+
await import('./didWebLambda');
|
|
22
|
+
expect(mocks.bootstrap).toHaveBeenCalledTimes(1);
|
|
23
|
+
expect(mocks.bootstrap).toHaveBeenCalledWith({
|
|
24
|
+
base: {},
|
|
25
|
+
stages: { dev: {}, production: {} },
|
|
26
|
+
stage: 'production',
|
|
27
|
+
importApp: expect.any(Function),
|
|
28
|
+
});
|
|
29
|
+
vi.unstubAllEnvs();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('resolves the app once per cold start and forwards every argument', async () => {
|
|
33
|
+
const { didWebHandler } = await import('./didWebLambda');
|
|
34
|
+
const event = {} as APIGatewayProxyEventV2;
|
|
35
|
+
const context = {} as Context;
|
|
36
|
+
const callback = vi.fn();
|
|
37
|
+
await didWebHandler(event, context, callback);
|
|
38
|
+
await didWebHandler(event, context, callback);
|
|
39
|
+
expect(mocks.getApp).toHaveBeenCalledTimes(2);
|
|
40
|
+
expect(mocks.handler).toHaveBeenLastCalledWith(event, context, callback);
|
|
41
|
+
});
|
package/didWebLambda.ts
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
import * as Sentry from '@sentry/serverless';
|
|
1
|
+
import { bootstrapLambda } from '@learncard/service-config';
|
|
3
2
|
|
|
4
|
-
import
|
|
5
|
-
import { environment } from './src/config/environment';
|
|
6
|
-
import { toServerlessApplication } from './src/helpers/serverlessApplication';
|
|
3
|
+
import { base, stages } from './src/config/stageConfig';
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
new Sentry.Integrations.Mongo(),
|
|
18
|
-
],
|
|
5
|
+
type DidWebApp = typeof import('./didWebLambdaApp');
|
|
6
|
+
|
|
7
|
+
const getApplication = bootstrapLambda<DidWebApp>({
|
|
8
|
+
base,
|
|
9
|
+
stages,
|
|
10
|
+
stage: process.env.AWS_LAMBDA_FUNCTION_NAME
|
|
11
|
+
? process.env.LAMBDA_STAGE
|
|
12
|
+
: process.env.CONFIG_STAGE,
|
|
13
|
+
importApp: () => import('./didWebLambdaApp'),
|
|
19
14
|
});
|
|
20
15
|
|
|
21
|
-
export const didWebHandler =
|
|
22
|
-
|
|
23
|
-
);
|
|
16
|
+
export const didWebHandler = async (...args: Parameters<DidWebApp['didWebHandler']>) =>
|
|
17
|
+
(await getApplication()).didWebHandler(...args);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import serverlessHttp from 'serverless-http';
|
|
2
|
+
import * as Sentry from '@sentry/serverless';
|
|
3
|
+
|
|
4
|
+
import didWebApp from './src/dids';
|
|
5
|
+
import { environment } from './src/config/environment';
|
|
6
|
+
import { toServerlessApplication } from './src/helpers/serverlessApplication';
|
|
7
|
+
|
|
8
|
+
Sentry.AWSLambda.init({
|
|
9
|
+
dsn: environment.SENTRY_DSN,
|
|
10
|
+
environment: environment.SENTRY_ENV,
|
|
11
|
+
enabled: Boolean(environment.SENTRY_DSN),
|
|
12
|
+
tracesSampleRate: 1.0,
|
|
13
|
+
integrations: [
|
|
14
|
+
new Sentry.Integrations.Console(),
|
|
15
|
+
new Sentry.Integrations.Http(),
|
|
16
|
+
new Sentry.Integrations.ContextLines(),
|
|
17
|
+
new Sentry.Integrations.Mongo(),
|
|
18
|
+
],
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
export const didWebHandler = Sentry.AWSLambda.wrapHandler(
|
|
22
|
+
serverlessHttp(toServerlessApplication(didWebApp))
|
|
23
|
+
);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applyDockerStageConfig.d.ts","sourceRoot":"","sources":["../../src/config/applyDockerStageConfig.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serverlessFunctionEnv.test.d.ts","sourceRoot":"","sources":["../../src/config/serverlessFunctionEnv.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import 'dotenv/config';
|
|
2
|
+
export declare const base: Record<string, string>;
|
|
3
|
+
export declare const stages: {
|
|
4
|
+
dev: any;
|
|
5
|
+
production: any;
|
|
6
|
+
'scouts.dev': any;
|
|
7
|
+
'scouts.production': any;
|
|
8
|
+
};
|
|
9
|
+
export declare const applyLearnCloudStageConfig: (stage: string | undefined) => void;
|
|
10
|
+
//# sourceMappingURL=stageConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stageConfig.d.ts","sourceRoot":"","sources":["../../src/config/stageConfig.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AASvB,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAc,CAAC;AAEvD,eAAO,MAAM,MAAM;;;;;CAM+B,CAAC;AAInD,eAAO,MAAM,0BAA0B,GAAI,OAAO,MAAM,GAAG,SAAS,KAAG,IAEtE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stageConfig.test.d.ts","sourceRoot":"","sources":["../../src/config/stageConfig.test.ts"],"names":[],"mappings":""}
|
package/dist/didkit_wasm_bg.wasm
CHANGED
|
Binary file
|
package/dist/docker-entry.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import './config/applyDockerStageConfig';
|
|
2
2
|
//# sourceMappingURL=docker-entry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker-entry.d.ts","sourceRoot":"","sources":["../src/docker-entry.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"docker-entry.d.ts","sourceRoot":"","sources":["../src/docker-entry.ts"],"names":[],"mappings":"AAAA,OAAO,iCAAiC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
2
|
name: package/dist/index.js
|
|
3
|
-
size:
|
|
4
|
-
sha256:
|
|
3
|
+
size: 53503108 bytes
|
|
4
|
+
sha256: cebd208721ceb4d62ef64d1457a4a4735653aa48a7b6aeca358afcdfc267b355
|