@geekmidas/constructs 10.0.0-alpha.86 → 10.0.0-alpha.88
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/adaptors/testing.cjs +35 -3
- package/dist/adaptors/testing.cjs.map +1 -1
- package/dist/adaptors/testing.d.cts +40 -14
- package/dist/adaptors/testing.d.cts.map +1 -1
- package/dist/adaptors/testing.d.mts +40 -14
- package/dist/adaptors/testing.d.mts.map +1 -1
- package/dist/adaptors/testing.mjs +34 -4
- package/dist/adaptors/testing.mjs.map +1 -1
- package/dist/{external-api-BEgXYeJD.d.mts → external-api-MJ8id87V.d.mts} +15 -3
- package/dist/external-api-MJ8id87V.d.mts.map +1 -0
- package/dist/{external-api-BaIgJ6Ey.d.cts → external-api-O107yzZJ.d.cts} +15 -3
- package/dist/external-api-O107yzZJ.d.cts.map +1 -0
- package/dist/external-api.cjs.map +1 -1
- package/dist/external-api.d.cts +2 -2
- package/dist/external-api.d.mts +2 -2
- package/dist/external-api.mjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/stages-BSCF19o2.d.cts +56 -0
- package/dist/stages-BSCF19o2.d.cts.map +1 -0
- package/dist/stages-BSCF19o2.d.mts +56 -0
- package/dist/stages-BSCF19o2.d.mts.map +1 -0
- package/package.json +31 -31
- package/dist/external-api-BEgXYeJD.d.mts.map +0 -1
- package/dist/external-api-BaIgJ6Ey.d.cts.map +0 -1
|
@@ -5,7 +5,8 @@ import { c as EndpointSchemas, i as Endpoint } from "../Endpoint-C4PZn_mD.cjs";
|
|
|
5
5
|
import { t as Queue } from "../Queue-HPyi0e1i.cjs";
|
|
6
6
|
import { t as Subscriber } from "../Subscriber-Bpp02cGr.cjs";
|
|
7
7
|
import { t as KyselyDatabase } from "../kysely-D0bpzgPs.cjs";
|
|
8
|
-
import {
|
|
8
|
+
import { o as TestStage } from "../stages-BSCF19o2.cjs";
|
|
9
|
+
import { i as Fake } from "../external-api-O107yzZJ.cjs";
|
|
9
10
|
import { Logger } from "@geekmidas/logger";
|
|
10
11
|
import { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema } from "@geekmidas/schema";
|
|
11
12
|
import { Service, ServiceDiscovery, ServiceRecord } from "@geekmidas/services";
|
|
@@ -194,17 +195,6 @@ type TestSubscriberRequest<TEventPublisher extends EventPublisher<any> | undefin
|
|
|
194
195
|
};
|
|
195
196
|
//#endregion
|
|
196
197
|
//#region src/testing/manifest.d.ts
|
|
197
|
-
/**
|
|
198
|
-
* The test manifest: what `gkm test` knows about an app, written down for the
|
|
199
|
-
* suite it starts.
|
|
200
|
-
*
|
|
201
|
-
* `gkm test` discovers the constructs, reconciles the test stage and resolves
|
|
202
|
-
* its environment — then, until this existed, threw all of it away and left a
|
|
203
|
-
* test to declare it again by hand. The manifest keeps it: which construct and
|
|
204
|
-
* endpoint is exported where, and the environment the test stage resolved,
|
|
205
|
-
* under the keys the constructs themselves derive. A feature test is built from
|
|
206
|
-
* it, so nothing a test says can drift from what the app declares.
|
|
207
|
-
*/
|
|
208
198
|
/** Where an export lives: what an import statement has to say. */
|
|
209
199
|
interface TestManifestSource {
|
|
210
200
|
/** Absolute path to the module. */
|
|
@@ -214,7 +204,7 @@ interface TestManifestSource {
|
|
|
214
204
|
}
|
|
215
205
|
interface TestManifest {
|
|
216
206
|
/** The stage the environment was resolved for — `test`. */
|
|
217
|
-
stage:
|
|
207
|
+
stage: TestStage;
|
|
218
208
|
/** Every construct the app declares, by id. */
|
|
219
209
|
constructs: Record<string, {
|
|
220
210
|
kind: string;
|
|
@@ -469,5 +459,41 @@ export declare class UnknownService extends Error {
|
|
|
469
459
|
constructor(serviceName: string, available: readonly string[]);
|
|
470
460
|
}
|
|
471
461
|
//#endregion
|
|
472
|
-
|
|
462
|
+
//#region src/testing/peer.d.ts
|
|
463
|
+
/**
|
|
464
|
+
* The TCP peer a test's in-process requests arrive from.
|
|
465
|
+
*
|
|
466
|
+
* A feature test hands a request straight to a surface's Hono app — no
|
|
467
|
+
* socket, no server — so the app's bindings have no peer to read. Deployed,
|
|
468
|
+
* every request has one, and what a surface trusts follows from it: the auth
|
|
469
|
+
* server honours `x-gkm-client-ip` only from an internal caller, a loopback
|
|
470
|
+
* or private peer with no `Origin` and no forwarding header. With no peer at
|
|
471
|
+
* all the header was dropped, and every test's session check became the same
|
|
472
|
+
* client to Better Auth's rate limiter.
|
|
473
|
+
*
|
|
474
|
+
* So an in-process dispatch says where it came from, the way
|
|
475
|
+
* `@hono/node-server` does: its bindings carry `incoming.socket.remoteAddress`.
|
|
476
|
+
* The address is loopback because that is the truth — the request came from
|
|
477
|
+
* this process. A browser's own address still travels in its
|
|
478
|
+
* `x-forwarded-for`, which makes it outside traffic exactly as it would be
|
|
479
|
+
* behind the stack's proxy.
|
|
480
|
+
*
|
|
481
|
+
* Only a test's dispatch passes these. A runtime with no socket of its own
|
|
482
|
+
* (Lambda, Bun) still has no peer, and a request with no peer is still not an
|
|
483
|
+
* internal caller's.
|
|
484
|
+
*/
|
|
485
|
+
/** The address an in-process request presents as its peer. */
|
|
486
|
+
export declare const IN_PROCESS_PEER_ADDRESS = "127.0.0.1";
|
|
487
|
+
/** The part of `@hono/node-server`'s bindings a surface reads its peer from. */
|
|
488
|
+
interface InProcessBindings {
|
|
489
|
+
incoming: {
|
|
490
|
+
socket: {
|
|
491
|
+
remoteAddress: string;
|
|
492
|
+
};
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
/** Bindings for `app.fetch(request, bindings)` from inside this process. */
|
|
496
|
+
export declare function inProcessBindings(): InProcessBindings;
|
|
497
|
+
//#endregion
|
|
498
|
+
export { type ClientOf, type CreateMswHandlersOptions, type CreateMswHandlersResult, type DatabaseOf, type DatabaseSchemas, type FactoryBuilders, type FeatureContext, type FeatureIt, type FeatureTestOptions, type InProcessBindings, type MagicLinkAuthClient, type RegisterContextOptions, type ServiceClients, TEST_CONTEXT_HEADER, type TestDatabases, type TestFactories, type TestManifest, type TestManifestSource, type TestServices };
|
|
473
499
|
//# sourceMappingURL=testing.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.cts","names":["TestBrowser"],"sources":["../../src/endpoints/MswEndpointAdaptor.ts","../../src/endpoints/TestEndpointAdaptor.ts","../../src/functions/TestFunctionAdaptor.ts","../../src/queue/TestQueueAdaptor.ts","../../src/subscribers/TestSubscriberAdaptor.ts","../../src/testing/manifest.ts","../../src/testing/featureTest.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"testing.d.cts","names":["TestBrowser"],"sources":["../../src/endpoints/MswEndpointAdaptor.ts","../../src/endpoints/TestEndpointAdaptor.ts","../../src/functions/TestFunctionAdaptor.ts","../../src/queue/TestQueueAdaptor.ts","../../src/subscribers/TestSubscriberAdaptor.ts","../../src/testing/manifest.ts","../../src/testing/featureTest.ts","../../src/testing/peer.ts"],"mappings":"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"}
|
|
@@ -5,7 +5,8 @@ import { c as EndpointSchemas, i as Endpoint } from "../Endpoint-ViSuXwMB.mjs";
|
|
|
5
5
|
import { t as Queue } from "../Queue-DlsHRzUp.mjs";
|
|
6
6
|
import { t as Subscriber } from "../Subscriber-CtN9R48-.mjs";
|
|
7
7
|
import { t as KyselyDatabase } from "../kysely-DUqC3Ie0.mjs";
|
|
8
|
-
import {
|
|
8
|
+
import { o as TestStage } from "../stages-BSCF19o2.mjs";
|
|
9
|
+
import { i as Fake } from "../external-api-MJ8id87V.mjs";
|
|
9
10
|
import { EventPublisher, ExtractPublisherMessage } from "@geekmidas/events";
|
|
10
11
|
import { Kysely } from "kysely";
|
|
11
12
|
import { Service, ServiceDiscovery, ServiceRecord } from "@geekmidas/services";
|
|
@@ -194,17 +195,6 @@ type TestSubscriberRequest<TEventPublisher extends EventPublisher<any> | undefin
|
|
|
194
195
|
};
|
|
195
196
|
//#endregion
|
|
196
197
|
//#region src/testing/manifest.d.ts
|
|
197
|
-
/**
|
|
198
|
-
* The test manifest: what `gkm test` knows about an app, written down for the
|
|
199
|
-
* suite it starts.
|
|
200
|
-
*
|
|
201
|
-
* `gkm test` discovers the constructs, reconciles the test stage and resolves
|
|
202
|
-
* its environment — then, until this existed, threw all of it away and left a
|
|
203
|
-
* test to declare it again by hand. The manifest keeps it: which construct and
|
|
204
|
-
* endpoint is exported where, and the environment the test stage resolved,
|
|
205
|
-
* under the keys the constructs themselves derive. A feature test is built from
|
|
206
|
-
* it, so nothing a test says can drift from what the app declares.
|
|
207
|
-
*/
|
|
208
198
|
/** Where an export lives: what an import statement has to say. */
|
|
209
199
|
interface TestManifestSource {
|
|
210
200
|
/** Absolute path to the module. */
|
|
@@ -214,7 +204,7 @@ interface TestManifestSource {
|
|
|
214
204
|
}
|
|
215
205
|
interface TestManifest {
|
|
216
206
|
/** The stage the environment was resolved for — `test`. */
|
|
217
|
-
stage:
|
|
207
|
+
stage: TestStage;
|
|
218
208
|
/** Every construct the app declares, by id. */
|
|
219
209
|
constructs: Record<string, {
|
|
220
210
|
kind: string;
|
|
@@ -469,5 +459,41 @@ export declare class UnknownService extends Error {
|
|
|
469
459
|
constructor(serviceName: string, available: readonly string[]);
|
|
470
460
|
}
|
|
471
461
|
//#endregion
|
|
472
|
-
|
|
462
|
+
//#region src/testing/peer.d.ts
|
|
463
|
+
/**
|
|
464
|
+
* The TCP peer a test's in-process requests arrive from.
|
|
465
|
+
*
|
|
466
|
+
* A feature test hands a request straight to a surface's Hono app — no
|
|
467
|
+
* socket, no server — so the app's bindings have no peer to read. Deployed,
|
|
468
|
+
* every request has one, and what a surface trusts follows from it: the auth
|
|
469
|
+
* server honours `x-gkm-client-ip` only from an internal caller, a loopback
|
|
470
|
+
* or private peer with no `Origin` and no forwarding header. With no peer at
|
|
471
|
+
* all the header was dropped, and every test's session check became the same
|
|
472
|
+
* client to Better Auth's rate limiter.
|
|
473
|
+
*
|
|
474
|
+
* So an in-process dispatch says where it came from, the way
|
|
475
|
+
* `@hono/node-server` does: its bindings carry `incoming.socket.remoteAddress`.
|
|
476
|
+
* The address is loopback because that is the truth — the request came from
|
|
477
|
+
* this process. A browser's own address still travels in its
|
|
478
|
+
* `x-forwarded-for`, which makes it outside traffic exactly as it would be
|
|
479
|
+
* behind the stack's proxy.
|
|
480
|
+
*
|
|
481
|
+
* Only a test's dispatch passes these. A runtime with no socket of its own
|
|
482
|
+
* (Lambda, Bun) still has no peer, and a request with no peer is still not an
|
|
483
|
+
* internal caller's.
|
|
484
|
+
*/
|
|
485
|
+
/** The address an in-process request presents as its peer. */
|
|
486
|
+
export declare const IN_PROCESS_PEER_ADDRESS = "127.0.0.1";
|
|
487
|
+
/** The part of `@hono/node-server`'s bindings a surface reads its peer from. */
|
|
488
|
+
interface InProcessBindings {
|
|
489
|
+
incoming: {
|
|
490
|
+
socket: {
|
|
491
|
+
remoteAddress: string;
|
|
492
|
+
};
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
/** Bindings for `app.fetch(request, bindings)` from inside this process. */
|
|
496
|
+
export declare function inProcessBindings(): InProcessBindings;
|
|
497
|
+
//#endregion
|
|
498
|
+
export { type ClientOf, type CreateMswHandlersOptions, type CreateMswHandlersResult, type DatabaseOf, type DatabaseSchemas, type FactoryBuilders, type FeatureContext, type FeatureIt, type FeatureTestOptions, type InProcessBindings, type MagicLinkAuthClient, type RegisterContextOptions, type ServiceClients, TEST_CONTEXT_HEADER, type TestDatabases, type TestFactories, type TestManifest, type TestManifestSource, type TestServices };
|
|
473
499
|
//# sourceMappingURL=testing.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.mts","names":["TestBrowser"],"sources":["../../src/endpoints/MswEndpointAdaptor.ts","../../src/endpoints/TestEndpointAdaptor.ts","../../src/functions/TestFunctionAdaptor.ts","../../src/queue/TestQueueAdaptor.ts","../../src/subscribers/TestSubscriberAdaptor.ts","../../src/testing/manifest.ts","../../src/testing/featureTest.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"testing.d.mts","names":["TestBrowser"],"sources":["../../src/endpoints/MswEndpointAdaptor.ts","../../src/endpoints/TestEndpointAdaptor.ts","../../src/functions/TestFunctionAdaptor.ts","../../src/queue/TestQueueAdaptor.ts","../../src/subscribers/TestSubscriberAdaptor.ts","../../src/testing/manifest.ts","../../src/testing/featureTest.ts","../../src/testing/peer.ts"],"mappings":"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"}
|
|
@@ -27,6 +27,36 @@ import { afterAll, beforeAll, test } from "vitest";
|
|
|
27
27
|
import { existsSync, readFileSync } from "node:fs";
|
|
28
28
|
import tls from "node:tls";
|
|
29
29
|
import { fileURLToPath } from "node:url";
|
|
30
|
+
//#region src/testing/peer.ts
|
|
31
|
+
/**
|
|
32
|
+
* The TCP peer a test's in-process requests arrive from.
|
|
33
|
+
*
|
|
34
|
+
* A feature test hands a request straight to a surface's Hono app — no
|
|
35
|
+
* socket, no server — so the app's bindings have no peer to read. Deployed,
|
|
36
|
+
* every request has one, and what a surface trusts follows from it: the auth
|
|
37
|
+
* server honours `x-gkm-client-ip` only from an internal caller, a loopback
|
|
38
|
+
* or private peer with no `Origin` and no forwarding header. With no peer at
|
|
39
|
+
* all the header was dropped, and every test's session check became the same
|
|
40
|
+
* client to Better Auth's rate limiter.
|
|
41
|
+
*
|
|
42
|
+
* So an in-process dispatch says where it came from, the way
|
|
43
|
+
* `@hono/node-server` does: its bindings carry `incoming.socket.remoteAddress`.
|
|
44
|
+
* The address is loopback because that is the truth — the request came from
|
|
45
|
+
* this process. A browser's own address still travels in its
|
|
46
|
+
* `x-forwarded-for`, which makes it outside traffic exactly as it would be
|
|
47
|
+
* behind the stack's proxy.
|
|
48
|
+
*
|
|
49
|
+
* Only a test's dispatch passes these. A runtime with no socket of its own
|
|
50
|
+
* (Lambda, Bun) still has no peer, and a request with no peer is still not an
|
|
51
|
+
* internal caller's.
|
|
52
|
+
*/
|
|
53
|
+
/** The address an in-process request presents as its peer. */
|
|
54
|
+
const IN_PROCESS_PEER_ADDRESS = "127.0.0.1";
|
|
55
|
+
/** Bindings for `app.fetch(request, bindings)` from inside this process. */
|
|
56
|
+
function inProcessBindings() {
|
|
57
|
+
return { incoming: { socket: { remoteAddress: IN_PROCESS_PEER_ADDRESS } } };
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
30
60
|
//#region src/endpoints/MswEndpointAdaptor.ts
|
|
31
61
|
const MSW_HTTP_METHODS = [
|
|
32
62
|
"get",
|
|
@@ -105,7 +135,7 @@ function createMswHandlers(endpoints, options) {
|
|
|
105
135
|
});
|
|
106
136
|
const app = new Hono();
|
|
107
137
|
HonoEndpoint.addRoute(endpoint, ctx.serviceDiscovery, app);
|
|
108
|
-
const response = await app.request(request);
|
|
138
|
+
const response = await app.request(request, void 0, inProcessBindings());
|
|
109
139
|
return new Response(response.body, {
|
|
110
140
|
status: response.status,
|
|
111
141
|
statusText: response.statusText,
|
|
@@ -836,7 +866,7 @@ function surfaceHandlers(endpoints, env) {
|
|
|
836
866
|
});
|
|
837
867
|
state.surfaces.set(surface, app);
|
|
838
868
|
}
|
|
839
|
-
return (await app).fetch(request);
|
|
869
|
+
return (await app).fetch(request, inProcessBindings());
|
|
840
870
|
}));
|
|
841
871
|
});
|
|
842
872
|
}
|
|
@@ -876,7 +906,7 @@ function authHandler(auth, env, envParser) {
|
|
|
876
906
|
}).then(({ app }) => app);
|
|
877
907
|
state.auth.set(auth, app);
|
|
878
908
|
}
|
|
879
|
-
return (await app).fetch(request);
|
|
909
|
+
return (await app).fetch(request, inProcessBindings());
|
|
880
910
|
}));
|
|
881
911
|
}
|
|
882
912
|
/** Handle a request as the server side of the test it was made for. */
|
|
@@ -1029,6 +1059,6 @@ var UnknownService = class extends Error {
|
|
|
1029
1059
|
}
|
|
1030
1060
|
};
|
|
1031
1061
|
//#endregion
|
|
1032
|
-
export { DeliveryDidNotSettle, DeliveryFailed, MessageRejected, NoInbox, NoTestManifest, SignInFailed, TEST_CONTEXT_HEADER, TEST_MANIFEST_ENV, TestEndpointAdaptor, TestFunctionAdaptor, TestQueueAdaptor, TestSubscriberAdaptor, UnknownDatabase, UnknownFactory, UnknownService, UnknownTestContext, createMswHandlers, featureTest, loadTestManifest, signInWithMagicLink };
|
|
1062
|
+
export { DeliveryDidNotSettle, DeliveryFailed, IN_PROCESS_PEER_ADDRESS, MessageRejected, NoInbox, NoTestManifest, SignInFailed, TEST_CONTEXT_HEADER, TEST_MANIFEST_ENV, TestEndpointAdaptor, TestFunctionAdaptor, TestQueueAdaptor, TestSubscriberAdaptor, UnknownDatabase, UnknownFactory, UnknownService, UnknownTestContext, createMswHandlers, featureTest, inProcessBindings, loadTestManifest, signInWithMagicLink };
|
|
1033
1063
|
|
|
1034
1064
|
//# sourceMappingURL=testing.mjs.map
|