@venturekit/runtime 0.0.0-dev.20260311071358 → 0.0.0-dev.20260312005731
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/adapter.d.ts +35 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +202 -0
- package/dist/adapter.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/ws.d.ts.map +1 -1
- package/dist/ws.js +35 -15
- package/dist/ws.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VentureKit Runtime Adapter
|
|
3
|
+
*
|
|
4
|
+
* Converts standard Node.js HTTP requests to APIGatewayProxyEventV2 format
|
|
5
|
+
* and APIGatewayProxyResultV2 back to standard HTTP responses.
|
|
6
|
+
*
|
|
7
|
+
* This enables the same handler() functions to work in both:
|
|
8
|
+
* - Local dev (Node.js HTTP server via `vk dev`)
|
|
9
|
+
* - Production (AWS Lambda via API Gateway)
|
|
10
|
+
*/
|
|
11
|
+
import type { IncomingMessage, ServerResponse } from 'http';
|
|
12
|
+
import type { APIGatewayProxyEventV2, APIGatewayProxyResultV2, Context } from 'aws-lambda';
|
|
13
|
+
/**
|
|
14
|
+
* Convert a Node.js IncomingMessage to an APIGatewayProxyEventV2.
|
|
15
|
+
*
|
|
16
|
+
* This allows existing VentureKit handler() functions to work locally
|
|
17
|
+
* without modification.
|
|
18
|
+
*/
|
|
19
|
+
export declare function httpToLambdaEvent(req: IncomingMessage, pathParams?: Record<string, string>): Promise<APIGatewayProxyEventV2>;
|
|
20
|
+
/**
|
|
21
|
+
* Create a minimal Lambda Context for local dev.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createLocalContext(): Context;
|
|
24
|
+
/**
|
|
25
|
+
* Write an APIGatewayProxyResultV2 to a Node.js ServerResponse.
|
|
26
|
+
*/
|
|
27
|
+
export declare function lambdaResultToHttp(result: APIGatewayProxyResultV2, res: ServerResponse): void;
|
|
28
|
+
/**
|
|
29
|
+
* Wrap a Lambda handler function so it can serve standard HTTP requests.
|
|
30
|
+
*
|
|
31
|
+
* @param handlerFn - A VentureKit handler (event, context) => result
|
|
32
|
+
* @returns A function that takes (req, res, pathParams?) and serves HTTP
|
|
33
|
+
*/
|
|
34
|
+
export declare function adaptHandler(handlerFn: (event: APIGatewayProxyEventV2, context: Context) => Promise<APIGatewayProxyResultV2>): (req: IncomingMessage, res: ServerResponse, pathParams?: Record<string, string>) => Promise<void>;
|
|
35
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAe3F;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,eAAe,EACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,OAAO,CAAC,sBAAsB,CAAC,CAoDjC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAgB5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,uBAAuB,EAC/B,GAAG,EAAE,cAAc,GAClB,IAAI,CAoCN;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,CAAC,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,uBAAuB,CAAC,GAC/F,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAkBnG"}
|
package/dist/adapter.js
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* VentureKit Runtime Adapter
|
|
4
|
+
*
|
|
5
|
+
* Converts standard Node.js HTTP requests to APIGatewayProxyEventV2 format
|
|
6
|
+
* and APIGatewayProxyResultV2 back to standard HTTP responses.
|
|
7
|
+
*
|
|
8
|
+
* This enables the same handler() functions to work in both:
|
|
9
|
+
* - Local dev (Node.js HTTP server via `vk dev`)
|
|
10
|
+
* - Production (AWS Lambda via API Gateway)
|
|
11
|
+
*/
|
|
12
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
+
}
|
|
18
|
+
Object.defineProperty(o, k2, desc);
|
|
19
|
+
}) : (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
o[k2] = m[k];
|
|
22
|
+
}));
|
|
23
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
+
}) : function(o, v) {
|
|
26
|
+
o["default"] = v;
|
|
27
|
+
});
|
|
28
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
29
|
+
var ownKeys = function(o) {
|
|
30
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
31
|
+
var ar = [];
|
|
32
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
33
|
+
return ar;
|
|
34
|
+
};
|
|
35
|
+
return ownKeys(o);
|
|
36
|
+
};
|
|
37
|
+
return function (mod) {
|
|
38
|
+
if (mod && mod.__esModule) return mod;
|
|
39
|
+
var result = {};
|
|
40
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
41
|
+
__setModuleDefault(result, mod);
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.httpToLambdaEvent = httpToLambdaEvent;
|
|
47
|
+
exports.createLocalContext = createLocalContext;
|
|
48
|
+
exports.lambdaResultToHttp = lambdaResultToHttp;
|
|
49
|
+
exports.adaptHandler = adaptHandler;
|
|
50
|
+
const crypto = __importStar(require("crypto"));
|
|
51
|
+
/**
|
|
52
|
+
* Read the full body from an IncomingMessage as a string.
|
|
53
|
+
*/
|
|
54
|
+
function readBody(req) {
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
56
|
+
const chunks = [];
|
|
57
|
+
req.on('data', (chunk) => chunks.push(chunk));
|
|
58
|
+
req.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
|
|
59
|
+
req.on('error', reject);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Convert a Node.js IncomingMessage to an APIGatewayProxyEventV2.
|
|
64
|
+
*
|
|
65
|
+
* This allows existing VentureKit handler() functions to work locally
|
|
66
|
+
* without modification.
|
|
67
|
+
*/
|
|
68
|
+
async function httpToLambdaEvent(req, pathParams) {
|
|
69
|
+
const url = new URL(req.url || '/', `http://${req.headers.host || 'localhost'}`);
|
|
70
|
+
const body = await readBody(req);
|
|
71
|
+
const method = (req.method || 'GET').toUpperCase();
|
|
72
|
+
const requestId = crypto.randomUUID();
|
|
73
|
+
// Convert Node.js headers to flat string map
|
|
74
|
+
const headers = {};
|
|
75
|
+
for (const [key, value] of Object.entries(req.headers)) {
|
|
76
|
+
if (typeof value === 'string') {
|
|
77
|
+
headers[key] = value;
|
|
78
|
+
}
|
|
79
|
+
else if (Array.isArray(value)) {
|
|
80
|
+
headers[key] = value.join(', ');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Convert URLSearchParams to Record
|
|
84
|
+
const queryStringParameters = {};
|
|
85
|
+
url.searchParams.forEach((value, key) => {
|
|
86
|
+
queryStringParameters[key] = value;
|
|
87
|
+
});
|
|
88
|
+
return {
|
|
89
|
+
version: '2.0',
|
|
90
|
+
routeKey: `${method} ${url.pathname}`,
|
|
91
|
+
rawPath: url.pathname,
|
|
92
|
+
rawQueryString: url.search.slice(1), // remove leading '?'
|
|
93
|
+
headers,
|
|
94
|
+
queryStringParameters: Object.keys(queryStringParameters).length > 0 ? queryStringParameters : undefined,
|
|
95
|
+
pathParameters: pathParams || undefined,
|
|
96
|
+
body: body || undefined,
|
|
97
|
+
isBase64Encoded: false,
|
|
98
|
+
requestContext: {
|
|
99
|
+
accountId: 'local',
|
|
100
|
+
apiId: 'local',
|
|
101
|
+
domainName: 'localhost',
|
|
102
|
+
domainPrefix: 'localhost',
|
|
103
|
+
http: {
|
|
104
|
+
method,
|
|
105
|
+
path: url.pathname,
|
|
106
|
+
protocol: 'HTTP/1.1',
|
|
107
|
+
sourceIp: (req.socket?.remoteAddress || '127.0.0.1').replace('::ffff:', ''),
|
|
108
|
+
userAgent: headers['user-agent'] || 'local-dev',
|
|
109
|
+
},
|
|
110
|
+
requestId,
|
|
111
|
+
routeKey: `${method} ${url.pathname}`,
|
|
112
|
+
stage: 'local',
|
|
113
|
+
time: new Date().toISOString(),
|
|
114
|
+
timeEpoch: Date.now(),
|
|
115
|
+
},
|
|
116
|
+
stageVariables: undefined,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Create a minimal Lambda Context for local dev.
|
|
121
|
+
*/
|
|
122
|
+
function createLocalContext() {
|
|
123
|
+
const requestId = crypto.randomUUID();
|
|
124
|
+
return {
|
|
125
|
+
callbackWaitsForEmptyEventLoop: true,
|
|
126
|
+
functionName: 'local-dev',
|
|
127
|
+
functionVersion: '$LATEST',
|
|
128
|
+
invokedFunctionArn: 'arn:aws:lambda:local:000000000000:function:local-dev',
|
|
129
|
+
memoryLimitInMB: '256',
|
|
130
|
+
awsRequestId: requestId,
|
|
131
|
+
logGroupName: '/aws/lambda/local-dev',
|
|
132
|
+
logStreamName: `local/${requestId}`,
|
|
133
|
+
getRemainingTimeInMillis: () => 30000,
|
|
134
|
+
done: () => { },
|
|
135
|
+
fail: () => { },
|
|
136
|
+
succeed: () => { },
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Write an APIGatewayProxyResultV2 to a Node.js ServerResponse.
|
|
141
|
+
*/
|
|
142
|
+
function lambdaResultToHttp(result, res) {
|
|
143
|
+
// Handle string result (API Gateway allows plain string responses)
|
|
144
|
+
if (typeof result === 'string') {
|
|
145
|
+
res.writeHead(200, { 'Content-Type': 'text/plain' });
|
|
146
|
+
res.end(result);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const statusCode = result.statusCode || 200;
|
|
150
|
+
const headers = {};
|
|
151
|
+
// Merge headers
|
|
152
|
+
if (result.headers) {
|
|
153
|
+
for (const [key, value] of Object.entries(result.headers)) {
|
|
154
|
+
if (value !== undefined) {
|
|
155
|
+
headers[key] = String(value);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Set Content-Type if not set
|
|
160
|
+
if (!headers['content-type'] && !headers['Content-Type']) {
|
|
161
|
+
headers['Content-Type'] = 'application/json';
|
|
162
|
+
}
|
|
163
|
+
res.writeHead(statusCode, headers);
|
|
164
|
+
if (result.body) {
|
|
165
|
+
if (result.isBase64Encoded) {
|
|
166
|
+
res.end(Buffer.from(result.body, 'base64'));
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
res.end(result.body);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
res.end();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Wrap a Lambda handler function so it can serve standard HTTP requests.
|
|
178
|
+
*
|
|
179
|
+
* @param handlerFn - A VentureKit handler (event, context) => result
|
|
180
|
+
* @returns A function that takes (req, res, pathParams?) and serves HTTP
|
|
181
|
+
*/
|
|
182
|
+
function adaptHandler(handlerFn) {
|
|
183
|
+
return async (req, res, pathParams) => {
|
|
184
|
+
try {
|
|
185
|
+
const event = await httpToLambdaEvent(req, pathParams);
|
|
186
|
+
const context = createLocalContext();
|
|
187
|
+
const result = await handlerFn(event, context);
|
|
188
|
+
lambdaResultToHttp(result, res);
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
console.error('[VK Dev] Handler error:', err);
|
|
192
|
+
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
193
|
+
res.end(JSON.stringify({
|
|
194
|
+
error: {
|
|
195
|
+
code: 'INTERNAL_ERROR',
|
|
196
|
+
message: err instanceof Error ? err.message : 'Internal server error',
|
|
197
|
+
},
|
|
198
|
+
}));
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,4 +16,5 @@ export { compose, loggingMiddleware, corsMiddleware, timeoutMiddleware, errorBou
|
|
|
16
16
|
export type { MiddlewareFn, Middleware } from './middleware.js';
|
|
17
17
|
export { connectionStore } from './ws.js';
|
|
18
18
|
export type { ConnectionRecord, ConnectionMetadata } from './ws.js';
|
|
19
|
+
export { httpToLambdaEvent, createLocalContext, lambdaResultToHttp, adaptHandler, } from './adapter.js';
|
|
19
20
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGzE,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG/E,OAAO,EACL,OAAO,EACP,OAAO,EACP,SAAS,EACT,KAAK,EACL,aAAa,EACb,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGpE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,MAAM,GACP,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGpE,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGzE,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG/E,OAAO,EACL,OAAO,EACP,OAAO,EACP,SAAS,EACT,KAAK,EACL,aAAa,EACb,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGpE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,MAAM,GACP,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGpE,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGpE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GACb,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Runtime utilities for VentureKit Lambda functions.
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.connectionStore = exports.errorBoundaryMiddleware = exports.timeoutMiddleware = exports.corsMiddleware = exports.loggingMiddleware = exports.compose = exports.logger = exports.createLogger = exports.Logger = exports.isVentureError = exports.ServiceUnavailableError = exports.InternalError = exports.RateLimitError = exports.ValidationError = exports.ConflictError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.VentureError = exports.redirect = exports.errorResponse = exports.error = exports.noContent = exports.created = exports.success = exports.extractLocale = exports.extractUserContext = exports.buildContext = exports.handler = void 0;
|
|
8
|
+
exports.adaptHandler = exports.lambdaResultToHttp = exports.createLocalContext = exports.httpToLambdaEvent = exports.connectionStore = exports.errorBoundaryMiddleware = exports.timeoutMiddleware = exports.corsMiddleware = exports.loggingMiddleware = exports.compose = exports.logger = exports.createLogger = exports.Logger = exports.isVentureError = exports.ServiceUnavailableError = exports.InternalError = exports.RateLimitError = exports.ValidationError = exports.ConflictError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.VentureError = exports.redirect = exports.errorResponse = exports.error = exports.noContent = exports.created = exports.success = exports.extractLocale = exports.extractUserContext = exports.buildContext = exports.handler = void 0;
|
|
9
9
|
// Handler
|
|
10
10
|
var handler_js_1 = require("./handler.js");
|
|
11
11
|
Object.defineProperty(exports, "handler", { enumerable: true, get: function () { return handler_js_1.handler; } });
|
|
@@ -50,4 +50,10 @@ Object.defineProperty(exports, "errorBoundaryMiddleware", { enumerable: true, ge
|
|
|
50
50
|
// WebSocket connection store
|
|
51
51
|
var ws_js_1 = require("./ws.js");
|
|
52
52
|
Object.defineProperty(exports, "connectionStore", { enumerable: true, get: function () { return ws_js_1.connectionStore; } });
|
|
53
|
+
// Local dev adapter (HTTP ↔ Lambda event conversion)
|
|
54
|
+
var adapter_js_1 = require("./adapter.js");
|
|
55
|
+
Object.defineProperty(exports, "httpToLambdaEvent", { enumerable: true, get: function () { return adapter_js_1.httpToLambdaEvent; } });
|
|
56
|
+
Object.defineProperty(exports, "createLocalContext", { enumerable: true, get: function () { return adapter_js_1.createLocalContext; } });
|
|
57
|
+
Object.defineProperty(exports, "lambdaResultToHttp", { enumerable: true, get: function () { return adapter_js_1.lambdaResultToHttp; } });
|
|
58
|
+
Object.defineProperty(exports, "adaptHandler", { enumerable: true, get: function () { return adapter_js_1.adaptHandler; } });
|
|
53
59
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,UAAU;AACV,2CAAuC;AAA9B,qGAAA,OAAO,OAAA;AAGhB,UAAU;AACV,2CAIsB;AAHpB,0GAAA,YAAY,OAAA;AACZ,gHAAA,kBAAkB,OAAA;AAClB,2GAAA,aAAa,OAAA;AAIf,qBAAqB;AACrB,6CAOuB;AANrB,sGAAA,OAAO,OAAA;AACP,sGAAA,OAAO,OAAA;AACP,wGAAA,SAAS,OAAA;AACT,oGAAA,KAAK,OAAA;AACL,4GAAA,aAAa,OAAA;AACb,uGAAA,QAAQ,OAAA;AAIV,SAAS;AACT,yCAYqB;AAXnB,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AACf,8GAAA,iBAAiB,OAAA;AACjB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,oHAAA,uBAAuB,OAAA;AACvB,2GAAA,cAAc,OAAA;AAGhB,SAAS;AACT,yCAIqB;AAHnB,mGAAA,MAAM,OAAA;AACN,yGAAA,YAAY,OAAA;AACZ,mGAAA,MAAM,OAAA;AAIR,aAAa;AACb,iDAMyB;AALvB,wGAAA,OAAO,OAAA;AACP,kHAAA,iBAAiB,OAAA;AACjB,+GAAA,cAAc,OAAA;AACd,kHAAA,iBAAiB,OAAA;AACjB,wHAAA,uBAAuB,OAAA;AAIzB,6BAA6B;AAC7B,iCAA0C;AAAjC,wGAAA,eAAe,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,UAAU;AACV,2CAAuC;AAA9B,qGAAA,OAAO,OAAA;AAGhB,UAAU;AACV,2CAIsB;AAHpB,0GAAA,YAAY,OAAA;AACZ,gHAAA,kBAAkB,OAAA;AAClB,2GAAA,aAAa,OAAA;AAIf,qBAAqB;AACrB,6CAOuB;AANrB,sGAAA,OAAO,OAAA;AACP,sGAAA,OAAO,OAAA;AACP,wGAAA,SAAS,OAAA;AACT,oGAAA,KAAK,OAAA;AACL,4GAAA,aAAa,OAAA;AACb,uGAAA,QAAQ,OAAA;AAIV,SAAS;AACT,yCAYqB;AAXnB,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AACf,8GAAA,iBAAiB,OAAA;AACjB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,oHAAA,uBAAuB,OAAA;AACvB,2GAAA,cAAc,OAAA;AAGhB,SAAS;AACT,yCAIqB;AAHnB,mGAAA,MAAM,OAAA;AACN,yGAAA,YAAY,OAAA;AACZ,mGAAA,MAAM,OAAA;AAIR,aAAa;AACb,iDAMyB;AALvB,wGAAA,OAAO,OAAA;AACP,kHAAA,iBAAiB,OAAA;AACjB,+GAAA,cAAc,OAAA;AACd,kHAAA,iBAAiB,OAAA;AACjB,wHAAA,uBAAuB,OAAA;AAIzB,6BAA6B;AAC7B,iCAA0C;AAAjC,wGAAA,eAAe,OAAA;AAGxB,qDAAqD;AACrD,2CAKsB;AAJpB,+GAAA,iBAAiB,OAAA;AACjB,gHAAA,kBAAkB,OAAA;AAClB,gHAAA,kBAAkB,OAAA;AAClB,0GAAA,YAAY,OAAA"}
|
package/dist/ws.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAKH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AA4DD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,eAAe;IAC1B;;;;OAIG;uBACsB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/C;;;;;;OAMG;+BAC8B,MAAM,YAAY,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDrF;;OAEG;yBACwB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASjD;;OAEG;sBACqB,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAUjE;;;OAGG;cACa,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAW3C;;;;OAIG;sBACqB,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAY5D;;;OAGG;0BACyB,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAYhE;;;;OAIG;iCAEW,MAAM,SACX,MAAM,gBACC,MAAM,QACd,OAAO,GACZ,OAAO,CAAC,OAAO,CAAC;IAqBnB;;;OAGG;2BAEW,MAAM,SACX,MAAM,UACL,MAAM,QACR,OAAO,GACZ,OAAO,CAAC,MAAM,CAAC;IAKlB;;;OAGG;6BAEW,MAAM,SACX,MAAM,YACH,MAAM,QACV,OAAO,GACZ,OAAO,CAAC,MAAM,CAAC;IAKlB;;;OAGG;0BACyB,MAAM,SAAS,MAAM,QAAQ,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAInF,CAAC"}
|
package/dist/ws.js
CHANGED
|
@@ -39,9 +39,6 @@
|
|
|
39
39
|
*/
|
|
40
40
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
41
|
exports.connectionStore = void 0;
|
|
42
|
-
const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
|
|
43
|
-
const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
|
|
44
|
-
const client_apigatewaymanagementapi_1 = require("@aws-sdk/client-apigatewaymanagementapi");
|
|
45
42
|
const DEFAULT_TTL_SECONDS = 7200; // 2 hours
|
|
46
43
|
const AUTH_GRACE_PERIOD_SECONDS = 30; // unauthenticated connections expire quickly
|
|
47
44
|
function getTableName() {
|
|
@@ -52,12 +49,20 @@ function getTableName() {
|
|
|
52
49
|
return table;
|
|
53
50
|
}
|
|
54
51
|
let _ddb = null;
|
|
55
|
-
function ddb() {
|
|
52
|
+
async function ddb() {
|
|
56
53
|
if (!_ddb) {
|
|
57
|
-
|
|
54
|
+
const { DynamoDBClient } = await import('@aws-sdk/client-dynamodb');
|
|
55
|
+
const { DynamoDBDocumentClient } = await import('@aws-sdk/lib-dynamodb');
|
|
56
|
+
_ddb = DynamoDBDocumentClient.from(new DynamoDBClient({}));
|
|
58
57
|
}
|
|
59
58
|
return _ddb;
|
|
60
59
|
}
|
|
60
|
+
async function getDocCommands() {
|
|
61
|
+
return await import('@aws-sdk/lib-dynamodb');
|
|
62
|
+
}
|
|
63
|
+
async function getApigwClient() {
|
|
64
|
+
return await import('@aws-sdk/client-apigatewaymanagementapi');
|
|
65
|
+
}
|
|
61
66
|
function encode(data) {
|
|
62
67
|
return new TextEncoder().encode(JSON.stringify(data));
|
|
63
68
|
}
|
|
@@ -107,7 +112,9 @@ exports.connectionStore = {
|
|
|
107
112
|
*/
|
|
108
113
|
async save(connectionId) {
|
|
109
114
|
const now = Date.now();
|
|
110
|
-
await ddb()
|
|
115
|
+
const client = await ddb();
|
|
116
|
+
const { PutCommand } = await getDocCommands();
|
|
117
|
+
await client.send(new PutCommand({
|
|
111
118
|
TableName: getTableName(),
|
|
112
119
|
Item: {
|
|
113
120
|
connectionId,
|
|
@@ -159,7 +166,9 @@ exports.connectionStore = {
|
|
|
159
166
|
for (let i = 0; i < extraIdx; i++) {
|
|
160
167
|
names[`#extra${i}`] = Object.keys(extra)[i];
|
|
161
168
|
}
|
|
162
|
-
await ddb()
|
|
169
|
+
const client = await ddb();
|
|
170
|
+
const { UpdateCommand } = await getDocCommands();
|
|
171
|
+
await client.send(new UpdateCommand({
|
|
163
172
|
TableName: getTableName(),
|
|
164
173
|
Key: { connectionId },
|
|
165
174
|
UpdateExpression: `SET ${updateParts.join(', ')}`,
|
|
@@ -171,7 +180,9 @@ exports.connectionStore = {
|
|
|
171
180
|
* Remove a connection on $disconnect.
|
|
172
181
|
*/
|
|
173
182
|
async remove(connectionId) {
|
|
174
|
-
await ddb()
|
|
183
|
+
const client = await ddb();
|
|
184
|
+
const { DeleteCommand } = await getDocCommands();
|
|
185
|
+
await client.send(new DeleteCommand({
|
|
175
186
|
TableName: getTableName(),
|
|
176
187
|
Key: { connectionId },
|
|
177
188
|
}));
|
|
@@ -180,7 +191,9 @@ exports.connectionStore = {
|
|
|
180
191
|
* Get a single connection record.
|
|
181
192
|
*/
|
|
182
193
|
async get(connectionId) {
|
|
183
|
-
const
|
|
194
|
+
const client = await ddb();
|
|
195
|
+
const { GetCommand } = await getDocCommands();
|
|
196
|
+
const result = await client.send(new GetCommand({
|
|
184
197
|
TableName: getTableName(),
|
|
185
198
|
Key: { connectionId },
|
|
186
199
|
}));
|
|
@@ -191,7 +204,9 @@ exports.connectionStore = {
|
|
|
191
204
|
* For large-scale apps, prefer getByUser() or getByTenant().
|
|
192
205
|
*/
|
|
193
206
|
async getAll() {
|
|
194
|
-
const
|
|
207
|
+
const client = await ddb();
|
|
208
|
+
const { ScanCommand } = await getDocCommands();
|
|
209
|
+
const result = await client.send(new ScanCommand({
|
|
195
210
|
TableName: getTableName(),
|
|
196
211
|
FilterExpression: 'authenticated = :auth',
|
|
197
212
|
ExpressionAttributeValues: { ':auth': true },
|
|
@@ -204,7 +219,9 @@ exports.connectionStore = {
|
|
|
204
219
|
* Requires GSI: userId-index (partition key: userId).
|
|
205
220
|
*/
|
|
206
221
|
async getByUser(userId) {
|
|
207
|
-
const
|
|
222
|
+
const client = await ddb();
|
|
223
|
+
const { QueryCommand } = await getDocCommands();
|
|
224
|
+
const result = await client.send(new QueryCommand({
|
|
208
225
|
TableName: getTableName(),
|
|
209
226
|
IndexName: 'userId-index',
|
|
210
227
|
KeyConditionExpression: 'userId = :uid',
|
|
@@ -217,7 +234,9 @@ exports.connectionStore = {
|
|
|
217
234
|
* Requires GSI: tenantId-index (partition key: tenantId).
|
|
218
235
|
*/
|
|
219
236
|
async getByTenant(tenantId) {
|
|
220
|
-
const
|
|
237
|
+
const client = await ddb();
|
|
238
|
+
const { QueryCommand } = await getDocCommands();
|
|
239
|
+
const result = await client.send(new QueryCommand({
|
|
221
240
|
TableName: getTableName(),
|
|
222
241
|
IndexName: 'tenantId-index',
|
|
223
242
|
KeyConditionExpression: 'tenantId = :tid',
|
|
@@ -231,18 +250,19 @@ exports.connectionStore = {
|
|
|
231
250
|
* Returns true if sent, false if the connection was stale and removed.
|
|
232
251
|
*/
|
|
233
252
|
async postToConnection(domainName, stage, connectionId, data) {
|
|
234
|
-
const
|
|
253
|
+
const { ApiGatewayManagementApiClient, PostToConnectionCommand, GoneException } = await getApigwClient();
|
|
254
|
+
const apigw = new ApiGatewayManagementApiClient({
|
|
235
255
|
endpoint: `https://${domainName}/${stage}`,
|
|
236
256
|
});
|
|
237
257
|
try {
|
|
238
|
-
await apigw.send(new
|
|
258
|
+
await apigw.send(new PostToConnectionCommand({
|
|
239
259
|
ConnectionId: connectionId,
|
|
240
260
|
Data: encode(data),
|
|
241
261
|
}));
|
|
242
262
|
return true;
|
|
243
263
|
}
|
|
244
264
|
catch (err) {
|
|
245
|
-
if (err instanceof
|
|
265
|
+
if (err instanceof GoneException) {
|
|
246
266
|
await this.remove(connectionId);
|
|
247
267
|
return false;
|
|
248
268
|
}
|
package/dist/ws.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;;;
|
|
1
|
+
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@venturekit/runtime",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
3
|
+
"version": "0.0.0-dev.20260312005731",
|
|
4
4
|
"description": "VentureKit runtime utilities - handlers, context, middleware, logging",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -24,11 +24,11 @@
|
|
|
24
24
|
],
|
|
25
25
|
"license": "Apache-2.0",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@venturekit/core": "0.0.0-dev.
|
|
27
|
+
"@venturekit/core": "0.0.0-dev.20260312005731",
|
|
28
28
|
"pino": "^9.0.0"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
|
-
"@venturekit/data": "0.0.0-dev.
|
|
31
|
+
"@venturekit/data": "0.0.0-dev.20260312005731",
|
|
32
32
|
"@aws-sdk/client-dynamodb": "^3.500.0",
|
|
33
33
|
"@aws-sdk/lib-dynamodb": "^3.500.0",
|
|
34
34
|
"@aws-sdk/client-apigatewaymanagementapi": "^3.500.0"
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@venturekit/data": "0.0.0-dev.
|
|
51
|
+
"@venturekit/data": "0.0.0-dev.20260312005731",
|
|
52
52
|
"@types/aws-lambda": "^8.10.131",
|
|
53
53
|
"@types/node": "^20.10.0",
|
|
54
54
|
"typescript": "^5.3.0"
|