@geekmidas/constructs 10.0.0-alpha.0 → 10.0.0-alpha.2
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/{Construct-HmWM6YYu.mjs → Construct-BD5neF7w.mjs} +15 -2
- package/dist/Construct-BD5neF7w.mjs.map +1 -0
- package/dist/{Construct-WhCXIOPV.d.cts → Construct-C0ijr2qp.d.cts} +14 -1
- package/dist/Construct-C0ijr2qp.d.cts.map +1 -0
- package/dist/{Construct-B-xc0SE9.d.mts → Construct-Ct8nalEi.d.mts} +14 -1
- package/dist/Construct-Ct8nalEi.d.mts.map +1 -0
- package/dist/{Construct-roId57cU.cjs → Construct-CyS3RpTL.cjs} +14 -1
- package/dist/Construct-CyS3RpTL.cjs.map +1 -0
- package/dist/Cron-ByxdOfpE.d.mts +31 -0
- package/dist/Cron-ByxdOfpE.d.mts.map +1 -0
- package/dist/Cron-Wqh464aO.d.cts +31 -0
- package/dist/Cron-Wqh464aO.d.cts.map +1 -0
- package/dist/CronBuilder-BL0AP6fs.d.mts +44 -0
- package/dist/CronBuilder-BL0AP6fs.d.mts.map +1 -0
- package/dist/CronBuilder-BmABazzH.mjs +84 -0
- package/dist/CronBuilder-BmABazzH.mjs.map +1 -0
- package/dist/CronBuilder-BqpEzMPQ.d.cts +44 -0
- package/dist/CronBuilder-BqpEzMPQ.d.cts.map +1 -0
- package/dist/CronBuilder-CkXPJiGO.cjs +96 -0
- package/dist/CronBuilder-CkXPJiGO.cjs.map +1 -0
- package/dist/{Endpoint-ROcXU-eH.d.mts → Endpoint-2Wg7T7Cq.d.mts} +2 -2
- package/dist/{Endpoint-ROcXU-eH.d.mts.map → Endpoint-2Wg7T7Cq.d.mts.map} +1 -1
- package/dist/{Endpoint-BBkV6l0k.cjs → Endpoint-BiaaMEn_.cjs} +3 -3
- package/dist/{Endpoint-BBkV6l0k.cjs.map → Endpoint-BiaaMEn_.cjs.map} +1 -1
- package/dist/{Endpoint-BnxZqIX-.d.cts → Endpoint-CH9Fn1AD.d.cts} +2 -2
- package/dist/{Endpoint-BnxZqIX-.d.cts.map → Endpoint-CH9Fn1AD.d.cts.map} +1 -1
- package/dist/{Endpoint-BGwpNEX4.mjs → Endpoint-VIOpSo0S.mjs} +3 -3
- package/dist/{Endpoint-BGwpNEX4.mjs.map → Endpoint-VIOpSo0S.mjs.map} +1 -1
- package/dist/{EndpointFactory-DYoGLaIT.cjs → EndpointFactory-ChxLZllA.cjs} +7 -5
- package/dist/EndpointFactory-ChxLZllA.cjs.map +1 -0
- package/dist/{EndpointFactory-Di0X9AWp.mjs → EndpointFactory-DTTCkGEL.mjs} +7 -5
- package/dist/EndpointFactory-DTTCkGEL.mjs.map +1 -0
- package/dist/{HonoEndpointAdaptor-wMsCyMgt.cjs → HonoEndpointAdaptor-D233Jvpk.cjs} +5 -6
- package/dist/{HonoEndpointAdaptor-wMsCyMgt.cjs.map → HonoEndpointAdaptor-D233Jvpk.cjs.map} +1 -1
- package/dist/{HonoEndpointAdaptor-DFKIIG2o.mjs → HonoEndpointAdaptor-NKQQQbBY.mjs} +4 -5
- package/dist/{HonoEndpointAdaptor-DFKIIG2o.mjs.map → HonoEndpointAdaptor-NKQQQbBY.mjs.map} +1 -1
- package/dist/{Queue-D6WeziRD.d.cts → Queue-D7ZuwBhy.d.cts} +2 -2
- package/dist/{Queue-D6WeziRD.d.cts.map → Queue-D7ZuwBhy.d.cts.map} +1 -1
- package/dist/{Queue-DpUeqdC8.d.mts → Queue-gVGfi2Yk.d.mts} +2 -2
- package/dist/{Queue-DpUeqdC8.d.mts.map → Queue-gVGfi2Yk.d.mts.map} +1 -1
- package/dist/{Subscriber-4rBJgDKI.d.mts → Subscriber-2mEi0ImH.d.cts} +3 -3
- package/dist/{Subscriber-4rBJgDKI.d.mts.map → Subscriber-2mEi0ImH.d.cts.map} +1 -1
- package/dist/{Subscriber-DVQowdyj.d.cts → Subscriber-xTJ9ayPN.d.mts} +3 -3
- package/dist/{Subscriber-DVQowdyj.d.cts.map → Subscriber-xTJ9ayPN.d.mts.map} +1 -1
- package/dist/SubscriberBuilder-4OPehf2R.cjs +120 -0
- package/dist/SubscriberBuilder-4OPehf2R.cjs.map +1 -0
- package/dist/SubscriberBuilder-BjkbeT9l.mjs +108 -0
- package/dist/SubscriberBuilder-BjkbeT9l.mjs.map +1 -0
- package/dist/SubscriberBuilder-Dptmo-1A.d.mts +62 -0
- package/dist/SubscriberBuilder-Dptmo-1A.d.mts.map +1 -0
- package/dist/SubscriberBuilder-waNhzjSM.d.cts +62 -0
- package/dist/SubscriberBuilder-waNhzjSM.d.cts.map +1 -0
- package/dist/{Topic-Ohx9dvWr.d.cts → Topic-19QeHBIR.d.cts} +2 -2
- package/dist/{Topic-Ohx9dvWr.d.cts.map → Topic-19QeHBIR.d.cts.map} +1 -1
- package/dist/{Topic-cmy2jOUy.d.mts → Topic-DuFeqkBh.d.mts} +2 -2
- package/dist/{Topic-cmy2jOUy.d.mts.map → Topic-DuFeqkBh.d.mts.map} +1 -1
- package/dist/adaptors/aws.cjs +243 -10
- package/dist/adaptors/aws.cjs.map +1 -1
- package/dist/adaptors/aws.d.cts +99 -10
- package/dist/adaptors/aws.d.cts.map +1 -1
- package/dist/adaptors/aws.d.mts +99 -10
- package/dist/adaptors/aws.d.mts.map +1 -1
- package/dist/adaptors/aws.mjs +240 -7
- package/dist/adaptors/aws.mjs.map +1 -1
- package/dist/adaptors/hono.cjs +6 -7
- package/dist/adaptors/hono.d.cts +6 -6
- package/dist/adaptors/hono.d.mts +6 -6
- package/dist/adaptors/hono.mjs +6 -7
- package/dist/adaptors/testing.cjs +9 -10
- package/dist/adaptors/testing.cjs.map +1 -1
- package/dist/adaptors/testing.d.cts +6 -6
- package/dist/adaptors/testing.d.mts +6 -6
- package/dist/adaptors/testing.mjs +6 -7
- package/dist/adaptors/testing.mjs.map +1 -1
- package/dist/auth.d.cts +1 -1
- package/dist/auth.d.mts +1 -1
- package/dist/{cache-CdQ7OLpR.d.cts → cache-BrRz3fEB.d.mts} +3 -3
- package/dist/{cache-CdQ7OLpR.d.cts.map → cache-BrRz3fEB.d.mts.map} +1 -1
- package/dist/{cache-DYoJFcfd.d.mts → cache-BtZY_tHe.d.cts} +3 -3
- package/dist/{cache-DYoJFcfd.d.mts.map → cache-BtZY_tHe.d.cts.map} +1 -1
- package/dist/cache.d.cts +2 -2
- package/dist/cache.d.mts +2 -2
- package/dist/{construct-interface-BqwRNYA2.d.mts → construct-interface-D9d4Gm4p.d.cts} +2 -2
- package/dist/{construct-interface-BqwRNYA2.d.mts.map → construct-interface-D9d4Gm4p.d.cts.map} +1 -1
- package/dist/{construct-interface-D2nNkHUN.d.cts → construct-interface-g5GM5pwR.d.mts} +2 -2
- package/dist/{construct-interface-D2nNkHUN.d.cts.map → construct-interface-g5GM5pwR.d.mts.map} +1 -1
- package/dist/construct-interface.d.cts +1 -1
- package/dist/construct-interface.d.mts +1 -1
- package/dist/credential.d.cts +1 -1
- package/dist/credential.d.mts +1 -1
- package/dist/crons/index.cjs +8 -87
- package/dist/crons/index.cjs.map +1 -1
- package/dist/crons/index.d.cts +10 -46
- package/dist/crons/index.d.cts.map +1 -1
- package/dist/crons/index.d.mts +10 -46
- package/dist/crons/index.d.mts.map +1 -1
- package/dist/crons/index.mjs +6 -83
- package/dist/crons/index.mjs.map +1 -1
- package/dist/database/kysely.d.cts +2 -2
- package/dist/database/kysely.d.mts +2 -2
- package/dist/email.d.cts +1 -1
- package/dist/email.d.mts +1 -1
- package/dist/endpoints/index.cjs +6 -7
- package/dist/endpoints/index.d.cts +5 -5
- package/dist/endpoints/index.d.mts +5 -5
- package/dist/endpoints/index.mjs +5 -6
- package/dist/file-server.d.cts +1 -1
- package/dist/file-server.d.mts +1 -1
- package/dist/functions/index.cjs +2 -2
- package/dist/functions/index.d.cts +3 -3
- package/dist/functions/index.d.mts +3 -3
- package/dist/functions/index.mjs +2 -2
- package/dist/{functions-DukjG8ov.cjs → functions-Bd3TPxid.cjs} +10 -2
- package/dist/{functions-DukjG8ov.cjs.map → functions-Bd3TPxid.cjs.map} +1 -1
- package/dist/{functions-CvT_q7Y4.mjs → functions-Cxbo-pEd.mjs} +10 -2
- package/dist/{functions-CvT_q7Y4.mjs.map → functions-Cxbo-pEd.mjs.map} +1 -1
- package/dist/{index-Bt-F7u8L.d.mts → index-BxHDdy6a.d.mts} +5 -5
- package/dist/{index-7OcOWe75.d.cts.map → index-BxHDdy6a.d.mts.map} +1 -1
- package/dist/{index-Dadljnh_.d.cts → index-CubPzHd9.d.mts} +16 -9
- package/dist/index-CubPzHd9.d.mts.map +1 -0
- package/dist/{index-CPeqtKgq.d.mts → index-JSf9xNIJ.d.cts} +22 -14
- package/dist/index-JSf9xNIJ.d.cts.map +1 -0
- package/dist/{index-7OcOWe75.d.cts → index-V2nksZIJ.d.cts} +5 -5
- package/dist/{index-Bt-F7u8L.d.mts.map → index-V2nksZIJ.d.cts.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{lazyAccessors-DM6HcXQk.mjs → lazyAccessors-BoJN3SMd.mjs} +41 -2
- package/dist/lazyAccessors-BoJN3SMd.mjs.map +1 -0
- package/dist/{lazyAccessors-DrJj8NpA.cjs → lazyAccessors-e3j2oE2m.cjs} +52 -1
- package/dist/lazyAccessors-e3j2oE2m.cjs.map +1 -0
- package/dist/object-storage.d.cts +1 -1
- package/dist/object-storage.d.mts +1 -1
- package/dist/{processAudits-Bc8rz6Ev.cjs → processAudits-CGqttuXm.cjs} +1 -1
- package/dist/{processAudits-Bc8rz6Ev.cjs.map → processAudits-CGqttuXm.cjs.map} +1 -1
- package/dist/{processAudits-D89tICM4.mjs → processAudits-Dmts9H_b.mjs} +1 -1
- package/dist/{processAudits-D89tICM4.mjs.map → processAudits-Dmts9H_b.mjs.map} +1 -1
- package/dist/queue/index.cjs +1 -1
- package/dist/queue/index.d.cts +5 -5
- package/dist/queue/index.d.mts +5 -5
- package/dist/queue/index.mjs +1 -1
- package/dist/rest-api.cjs +4 -4
- package/dist/rest-api.d.cts +5 -5
- package/dist/rest-api.d.mts +11 -11
- package/dist/rest-api.d.mts.map +1 -1
- package/dist/rest-api.mjs +4 -4
- package/dist/site.d.cts +1 -1
- package/dist/site.d.mts +1 -1
- package/dist/subscribers/index.cjs +7 -103
- package/dist/subscribers/index.cjs.map +1 -1
- package/dist/subscribers/index.d.cts +7 -56
- package/dist/subscribers/index.d.cts.map +1 -1
- package/dist/subscribers/index.d.mts +7 -56
- package/dist/subscribers/index.d.mts.map +1 -1
- package/dist/subscribers/index.mjs +4 -99
- package/dist/subscribers/index.mjs.map +1 -1
- package/dist/topic/index.cjs +1 -1
- package/dist/topic/index.d.cts +2 -2
- package/dist/topic/index.d.mts +2 -2
- package/dist/topic/index.mjs +1 -1
- package/dist/worker.cjs +91 -0
- package/dist/worker.cjs.map +1 -0
- package/dist/worker.d.cts +95 -0
- package/dist/worker.d.cts.map +1 -0
- package/dist/worker.d.mts +95 -0
- package/dist/worker.d.mts.map +1 -0
- package/dist/worker.mjs +90 -0
- package/dist/worker.mjs.map +1 -0
- package/package.json +44 -52
- package/dist/AWSScheduledFunction-BvFvBsBN.d.cts +0 -122
- package/dist/AWSScheduledFunction-BvFvBsBN.d.cts.map +0 -1
- package/dist/AWSScheduledFunction-CVccZO-L.d.mts +0 -122
- package/dist/AWSScheduledFunction-CVccZO-L.d.mts.map +0 -1
- package/dist/AWSScheduledFunction-Db1lttJH.mjs +0 -243
- package/dist/AWSScheduledFunction-Db1lttJH.mjs.map +0 -1
- package/dist/AWSScheduledFunction-qu4ieRZR.cjs +0 -255
- package/dist/AWSScheduledFunction-qu4ieRZR.cjs.map +0 -1
- package/dist/Construct-B-xc0SE9.d.mts.map +0 -1
- package/dist/Construct-HmWM6YYu.mjs.map +0 -1
- package/dist/Construct-WhCXIOPV.d.cts.map +0 -1
- package/dist/Construct-roId57cU.cjs.map +0 -1
- package/dist/EndpointFactory-DYoGLaIT.cjs.map +0 -1
- package/dist/EndpointFactory-Di0X9AWp.mjs.map +0 -1
- package/dist/index-CPeqtKgq.d.mts.map +0 -1
- package/dist/index-Dadljnh_.d.cts.map +0 -1
- package/dist/lazyAccessors-DM6HcXQk.mjs.map +0 -1
- package/dist/lazyAccessors-DrJj8NpA.cjs.map +0 -1
- package/dist/publisher-CGEo8UKD.mjs +0 -41
- package/dist/publisher-CGEo8UKD.mjs.map +0 -1
- package/dist/publisher-CqGsXB2X.cjs +0 -53
- package/dist/publisher-CqGsXB2X.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.mts","names":[],"sources":["../src/worker.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;AA2IkC,UAtFjB,YAAA,CAsFiB;EAAA;;;;;;;EA2BX,GArFX,CAAA,EApBL,OAoBK;EAAU;;;;;;;;WAXZ;;;;;;;cAOG;;cAGA,iDACD,WAAW;;;;eAET;;mBAGI;;sBAGG;kBAGf,cAAc,iBACO;0BAEe;;;;;;;;eAoBhC,YApB0C,mBAAA,CAoB1C,wBAAA,EAAA,qBAAA,CAAA,4BAAA;;;;;;;qBAUM,sBAAA;;mBAKF,gBALE,mBAAA,CAKF,wBAAA,iBAAA,iEAAA,kBAAA,CAAA;;;;;;iBASE,qBAAkB,YAAA,mBAAA,CAAA,wBAAA,EAAA,qBAAA,CAAA,4BAAA;;;;;;;6BAUN,eAAe,OAAO;;;;;;aAiBtC"}
|
package/dist/worker.mjs
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import "./Construct-BD5neF7w.mjs";
|
|
2
|
+
import { edgeTo } from "./construct-interface-Z4CpS8tK.mjs";
|
|
3
|
+
import { FunctionBuilder } from "./functions-Cxbo-pEd.mjs";
|
|
4
|
+
import "./clone-DblgEZZa.mjs";
|
|
5
|
+
import { envParserFor } from "./surfaceEnv-C3Ktahea.mjs";
|
|
6
|
+
import { CronBuilder } from "./CronBuilder-BmABazzH.mjs";
|
|
7
|
+
import { SubscriberBuilder } from "./SubscriberBuilder-BjkbeT9l.mjs";
|
|
8
|
+
import { canonicalId } from "@geekmidas/manifest";
|
|
9
|
+
import { DEFAULT_LOGGER } from "@geekmidas/logger/console";
|
|
10
|
+
|
|
11
|
+
//#region src/worker.ts
|
|
12
|
+
var Worker = class Worker {
|
|
13
|
+
id;
|
|
14
|
+
/** Always defined — the worker's own, or the console logger. */
|
|
15
|
+
logger;
|
|
16
|
+
/** Always defined, and normally the default. */
|
|
17
|
+
envParser;
|
|
18
|
+
constructor(id, config = {}, dependencies = []) {
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.dependencies = dependencies;
|
|
21
|
+
const canonical = canonicalId(id);
|
|
22
|
+
this.id = canonical;
|
|
23
|
+
this.logger = config.logger ?? DEFAULT_LOGGER;
|
|
24
|
+
this.envParser = envParserFor(config.envParser ? {
|
|
25
|
+
id: canonical,
|
|
26
|
+
envParser: config.envParser
|
|
27
|
+
} : void 0);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* This worker's cron factory, carrying its logger.
|
|
31
|
+
*
|
|
32
|
+
* `export const c = crons.logger(logger)` written once and hung off the
|
|
33
|
+
* thing that runs it, so a cron file opens with the schedule rather than
|
|
34
|
+
* with an import of a logger it has to know the path to.
|
|
35
|
+
*/
|
|
36
|
+
get crons() {
|
|
37
|
+
return this.own(new CronBuilder().logger(this.logger));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* This worker's subscriber factory, carrying its logger.
|
|
41
|
+
*
|
|
42
|
+
* Chain `.publisher(…)` before `.subscribe([…])`: the event names are typed
|
|
43
|
+
* from the publisher's message union, so there is nothing to spell twice.
|
|
44
|
+
*/
|
|
45
|
+
get subscribers() {
|
|
46
|
+
return this.own(new SubscriberBuilder().logger(this.logger));
|
|
47
|
+
}
|
|
48
|
+
/** This worker's function factory, carrying its logger. */
|
|
49
|
+
get functions() {
|
|
50
|
+
return this.own(new FunctionBuilder().logger(this.logger));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Sugar for the common case, the way `api.get()` is for `api.endpoints`.
|
|
54
|
+
*
|
|
55
|
+
* @example `worker.cron('rate(1 day)').handle(async ({ logger }) => { … })`
|
|
56
|
+
*/
|
|
57
|
+
cron(schedule) {
|
|
58
|
+
return this.crons.schedule(schedule);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resources and surfaces this worker calls.
|
|
62
|
+
*
|
|
63
|
+
* Not `.dependsOn()`: this records the edge that derives the worker's
|
|
64
|
+
* environment and its access, the same distinction `RestApi.calls()` draws.
|
|
65
|
+
*/
|
|
66
|
+
calls(constructs) {
|
|
67
|
+
return new Worker(this.id, this.config, [...this.dependencies, ...constructs.map(edgeTo)]);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Stamps this worker's id onto a builder, so everything built from it says
|
|
71
|
+
* which process runs it.
|
|
72
|
+
*/
|
|
73
|
+
own(builder) {
|
|
74
|
+
builder._owner = this.id;
|
|
75
|
+
return builder;
|
|
76
|
+
}
|
|
77
|
+
declare() {
|
|
78
|
+
return [{
|
|
79
|
+
kind: "worker",
|
|
80
|
+
id: this.id,
|
|
81
|
+
...this.config.app ? { app: this.config.app } : {},
|
|
82
|
+
...this.dependencies.length ? { dependencies: this.dependencies } : {},
|
|
83
|
+
provides: []
|
|
84
|
+
}];
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
//#endregion
|
|
89
|
+
export { Worker };
|
|
90
|
+
//# sourceMappingURL=worker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.mjs","names":["id: ConstructName<TName>","config: WorkerConfig","dependencies: readonly Dependency[]","schedule: ScheduleExpression","constructs: readonly Declarable[]","builder: T"],"sources":["../src/worker.ts"],"sourcesContent":["/**\n * A process with no port.\n *\n * `RestApi` is the process that answers HTTP. This is the one that does not —\n * the thing that runs a schedule, drains a queue, consumes a topic. Until it\n * existed, those had nowhere to say they belonged: a cron declared a schedule\n * and nothing else, and which container ran it was decided by the directory the\n * file sat in. A glob owned it.\n *\n * The cost of that shows up in the scaffolds. `gkm init --template worker` —\n * a project that is background jobs and nothing else — declared\n * `new RestApi('Api', { defaultAuthorizer: 'none', logger })`: an HTTP surface\n * with no HTTP on it, written because it was the only construct that made an\n * app exist and the only way to get a logger into the generated runtime.\n *\n * It takes no authorizer, and that is the tell that these are two constructs\n * rather than one with a flag: a `RestApi` needs one because an HTTP surface\n * can ship open by omission, and nothing reaches a worker from outside.\n *\n * @example\n * ```ts\n * // constructs/worker.ts\n * import { Worker } from '@geekmidas/constructs/worker';\n * import { logger } from './logger.js';\n *\n * export const worker = new Worker('Worker', { logger }).calls([database]);\n *\n * // crons/cleanup.ts\n * import { worker } from '@acme/constructs/worker.js';\n *\n * export const cleanup = worker\n * .cron('rate(1 day)')\n * .handle(async ({ logger }) => { … });\n * ```\n */\n\nimport type { EnvironmentParser } from '@geekmidas/envkit';\nimport type { Logger } from '@geekmidas/logger';\nimport { DEFAULT_LOGGER } from '@geekmidas/logger/console';\nimport {\n\ttype AppSpec,\n\ttype ConstructName,\n\tcanonicalId,\n\ttype Declaration,\n\ttype Dependency,\n} from '@geekmidas/manifest';\nimport { type Declarable, edgeTo } from './construct-interface';\nimport type { ScheduleExpression } from './crons/Cron';\nimport { CronBuilder } from './crons/CronBuilder';\nimport { envParserFor } from './endpoints/surfaceEnv';\nimport { FunctionBuilder } from './functions/FunctionBuilder';\nimport { SubscriberBuilder } from './subscribers/SubscriberBuilder';\n\nexport interface WorkerConfig {\n\t/**\n\t * Where its source lives and how it is run.\n\t *\n\t * Normally omitted, like every other app's: `Worker` means `apps/worker`\n\t * where that directory exists and the project root otherwise. Write one only\n\t * for a layout that genuinely differs.\n\t */\n\tapp?: AppSpec;\n\t/**\n\t * The logger everything built from this worker runs with.\n\t *\n\t * The actual logger, not a path to one — the same reason `RestApi` takes\n\t * one. Every cron and subscriber in a scaffolded project used to open with\n\t * `import { logger } from '…/constructs/logger.js'`, which is the line this\n\t * removes.\n\t */\n\tlogger?: Logger;\n\t/**\n\t * The environment parser everything built from this worker runs with.\n\t *\n\t * Defaults to `process.env` merged with the credentials `gkm dev` injected,\n\t * which is what an application's own `config/env.ts` always was.\n\t */\n\tenvParser?: EnvironmentParser<{}>;\n}\n\nexport class Worker<TName extends string = string>\n\timplements Declarable<TName>\n{\n\treadonly id: TName;\n\n\t/** Always defined — the worker's own, or the console logger. */\n\treadonly logger: Logger;\n\n\t/** Always defined, and normally the default. */\n\treadonly envParser: EnvironmentParser<{}>;\n\n\tconstructor(\n\t\tid: ConstructName<TName>,\n\t\tprivate readonly config: WorkerConfig = {},\n\t\t/** Internal: how `.calls()` carries edges into the copy it returns. */\n\t\tprivate readonly dependencies: readonly Dependency[] = [],\n\t) {\n\t\tconst canonical = canonicalId(id as string);\n\n\t\tthis.id = canonical as TName;\n\t\tthis.logger = config.logger ?? DEFAULT_LOGGER;\n\t\tthis.envParser = envParserFor(\n\t\t\tconfig.envParser\n\t\t\t\t? { id: canonical, envParser: config.envParser }\n\t\t\t\t: undefined,\n\t\t);\n\t}\n\n\t/**\n\t * This worker's cron factory, carrying its logger.\n\t *\n\t * `export const c = crons.logger(logger)` written once and hung off the\n\t * thing that runs it, so a cron file opens with the schedule rather than\n\t * with an import of a logger it has to know the path to.\n\t */\n\tget crons() {\n\t\treturn this.own(new CronBuilder().logger(this.logger));\n\t}\n\n\t/**\n\t * This worker's subscriber factory, carrying its logger.\n\t *\n\t * Chain `.publisher(…)` before `.subscribe([…])`: the event names are typed\n\t * from the publisher's message union, so there is nothing to spell twice.\n\t */\n\tget subscribers() {\n\t\treturn this.own(new SubscriberBuilder().logger(this.logger));\n\t}\n\n\t/** This worker's function factory, carrying its logger. */\n\tget functions() {\n\t\treturn this.own(new FunctionBuilder().logger(this.logger));\n\t}\n\n\t/**\n\t * Sugar for the common case, the way `api.get()` is for `api.endpoints`.\n\t *\n\t * @example `worker.cron('rate(1 day)').handle(async ({ logger }) => { … })`\n\t */\n\tcron(schedule: ScheduleExpression) {\n\t\treturn this.crons.schedule(schedule);\n\t}\n\n\t/**\n\t * Resources and surfaces this worker calls.\n\t *\n\t * Not `.dependsOn()`: this records the edge that derives the worker's\n\t * environment and its access, the same distinction `RestApi.calls()` draws.\n\t */\n\tcalls(constructs: readonly Declarable[]): Worker<TName> {\n\t\treturn new Worker<TName>(this.id as ConstructName<TName>, this.config, [\n\t\t\t...this.dependencies,\n\t\t\t...constructs.map(edgeTo),\n\t\t]);\n\t}\n\n\t/**\n\t * Stamps this worker's id onto a builder, so everything built from it says\n\t * which process runs it.\n\t */\n\tprivate own<T extends { _owner?: string }>(builder: T): T {\n\t\tbuilder._owner = this.id;\n\n\t\treturn builder;\n\t}\n\n\tdeclare(): Declaration[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\tkind: 'worker',\n\t\t\t\tid: this.id,\n\t\t\t\t...(this.config.app ? { app: this.config.app } : {}),\n\t\t\t\t...(this.dependencies.length\n\t\t\t\t\t? { dependencies: this.dependencies }\n\t\t\t\t\t: {}),\n\t\t\t\t// Nothing calls a worker, so it publishes no address.\n\t\t\t\tprovides: [],\n\t\t\t},\n\t\t];\n\t}\n}\n"],"mappings":";;;;;;;;;;;AAgFA,IAAa,SAAb,MAAa,OAEb;CACC,AAAS;;CAGT,AAAS;;CAGT,AAAS;CAET,YACCA,IACiBC,SAAuB,CAAE,GAEzBC,eAAsC,CAAE,GACxD;EAHgB;EAEA;EAEjB,MAAM,YAAY,YAAY,GAAa;AAE3C,OAAK,KAAK;AACV,OAAK,SAAS,OAAO,UAAU;AAC/B,OAAK,YAAY,aAChB,OAAO,YACJ;GAAE,IAAI;GAAW,WAAW,OAAO;EAAW,WAEjD;CACD;;;;;;;;CASD,IAAI,QAAQ;AACX,SAAO,KAAK,IAAI,IAAI,cAAc,OAAO,KAAK,OAAO,CAAC;CACtD;;;;;;;CAQD,IAAI,cAAc;AACjB,SAAO,KAAK,IAAI,IAAI,oBAAoB,OAAO,KAAK,OAAO,CAAC;CAC5D;;CAGD,IAAI,YAAY;AACf,SAAO,KAAK,IAAI,IAAI,kBAAkB,OAAO,KAAK,OAAO,CAAC;CAC1D;;;;;;CAOD,KAAKC,UAA8B;AAClC,SAAO,KAAK,MAAM,SAAS,SAAS;CACpC;;;;;;;CAQD,MAAMC,YAAkD;AACvD,SAAO,IAAI,OAAc,KAAK,IAA4B,KAAK,QAAQ,CACtE,GAAG,KAAK,cACR,GAAG,WAAW,IAAI,OAAO,AACzB;CACD;;;;;CAMD,AAAQ,IAAmCC,SAAe;AACzD,UAAQ,SAAS,KAAK;AAEtB,SAAO;CACP;CAED,UAAyB;AACxB,SAAO,CACN;GACC,MAAM;GACN,IAAI,KAAK;GACT,GAAI,KAAK,OAAO,MAAM,EAAE,KAAK,KAAK,OAAO,IAAK,IAAG,CAAE;GACnD,GAAI,KAAK,aAAa,SACnB,EAAE,cAAc,KAAK,aAAc,IACnC,CAAE;GAEL,UAAU,CAAE;EACZ,CACD;CACD;AACD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geekmidas/constructs",
|
|
3
|
-
"version": "10.0.0-alpha.
|
|
3
|
+
"version": "10.0.0-alpha.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -204,6 +204,16 @@
|
|
|
204
204
|
"default": "./dist/site.cjs"
|
|
205
205
|
}
|
|
206
206
|
},
|
|
207
|
+
"./worker": {
|
|
208
|
+
"import": {
|
|
209
|
+
"types": "./dist/worker.d.mts",
|
|
210
|
+
"default": "./dist/worker.mjs"
|
|
211
|
+
},
|
|
212
|
+
"require": {
|
|
213
|
+
"types": "./dist/worker.d.cts",
|
|
214
|
+
"default": "./dist/worker.cjs"
|
|
215
|
+
}
|
|
216
|
+
},
|
|
207
217
|
"./database/kysely": {
|
|
208
218
|
"import": {
|
|
209
219
|
"types": "./dist/database/kysely.d.mts",
|
|
@@ -234,7 +244,14 @@
|
|
|
234
244
|
"lodash.set": "~4.3.2",
|
|
235
245
|
"lodash.uniqby": "~4.7.0",
|
|
236
246
|
"openapi-types": "~12.1.3",
|
|
237
|
-
"qs": "~6.15.0"
|
|
247
|
+
"qs": "~6.15.0",
|
|
248
|
+
"@geekmidas/envkit": "^10.0.0-alpha.2",
|
|
249
|
+
"@geekmidas/errors": "^10.0.0-alpha.2",
|
|
250
|
+
"@geekmidas/events": "^10.0.0-alpha.2",
|
|
251
|
+
"@geekmidas/logger": "^10.0.0-alpha.2",
|
|
252
|
+
"@geekmidas/manifest": "^10.0.0-alpha.2",
|
|
253
|
+
"@geekmidas/schema": "^10.0.0-alpha.2",
|
|
254
|
+
"@geekmidas/services": "^10.0.0-alpha.2"
|
|
238
255
|
},
|
|
239
256
|
"devDependencies": {
|
|
240
257
|
"@types/lodash.compact": "~3.0.9",
|
|
@@ -249,20 +266,20 @@
|
|
|
249
266
|
"msw": "~2.10.3",
|
|
250
267
|
"pg": "~8.16.3",
|
|
251
268
|
"zod": "~4.1.13",
|
|
252
|
-
"@geekmidas/audit": "^10.0.0-alpha.
|
|
253
|
-
"@geekmidas/auth": "10.0.0-alpha.
|
|
254
|
-
"@geekmidas/cache": "^10.0.0-alpha.
|
|
255
|
-
"@geekmidas/db": "^10.0.0-alpha.
|
|
256
|
-
"@geekmidas/emailkit": "^10.0.0-alpha.
|
|
257
|
-
"@geekmidas/envkit": "^10.0.0-alpha.
|
|
258
|
-
"@geekmidas/errors": "^10.0.0-alpha.
|
|
259
|
-
"@geekmidas/events": "^10.0.0-alpha.
|
|
260
|
-
"@geekmidas/logger": "^10.0.0-alpha.
|
|
261
|
-
"@geekmidas/rate-limit": "^10.0.0-alpha.
|
|
262
|
-
"@geekmidas/schema": "^10.0.0-alpha.
|
|
263
|
-
"@geekmidas/services": "^10.0.0-alpha.
|
|
264
|
-
"@geekmidas/telescope": "10.0.0-alpha.
|
|
265
|
-
"@geekmidas/testkit": "^10.0.0-alpha.
|
|
269
|
+
"@geekmidas/audit": "^10.0.0-alpha.2",
|
|
270
|
+
"@geekmidas/auth": "10.0.0-alpha.2",
|
|
271
|
+
"@geekmidas/cache": "^10.0.0-alpha.2",
|
|
272
|
+
"@geekmidas/db": "^10.0.0-alpha.2",
|
|
273
|
+
"@geekmidas/emailkit": "^10.0.0-alpha.2",
|
|
274
|
+
"@geekmidas/envkit": "^10.0.0-alpha.2",
|
|
275
|
+
"@geekmidas/errors": "^10.0.0-alpha.2",
|
|
276
|
+
"@geekmidas/events": "^10.0.0-alpha.2",
|
|
277
|
+
"@geekmidas/logger": "^10.0.0-alpha.2",
|
|
278
|
+
"@geekmidas/rate-limit": "^10.0.0-alpha.2",
|
|
279
|
+
"@geekmidas/schema": "^10.0.0-alpha.2",
|
|
280
|
+
"@geekmidas/services": "^10.0.0-alpha.2",
|
|
281
|
+
"@geekmidas/telescope": "10.0.0-alpha.2",
|
|
282
|
+
"@geekmidas/testkit": "^10.0.0-alpha.2"
|
|
266
283
|
},
|
|
267
284
|
"peerDependencies": {
|
|
268
285
|
"@middy/core": ">=6.3.1",
|
|
@@ -272,21 +289,14 @@
|
|
|
272
289
|
"kysely": ">=0.28.2 <0.30.0",
|
|
273
290
|
"msw": ">=2.0.0",
|
|
274
291
|
"pg": "~8.16.3",
|
|
275
|
-
"@geekmidas/audit": "^10.0.0-alpha.
|
|
276
|
-
"@geekmidas/auth": "10.0.0-alpha.
|
|
277
|
-
"@geekmidas/cache": "^10.0.0-alpha.
|
|
278
|
-
"@geekmidas/db": "^10.0.0-alpha.
|
|
279
|
-
"@geekmidas/emailkit": "^10.0.0-alpha.
|
|
280
|
-
"@geekmidas/
|
|
281
|
-
"@geekmidas/
|
|
282
|
-
"@geekmidas/
|
|
283
|
-
"@geekmidas/logger": "^10.0.0-alpha.0",
|
|
284
|
-
"@geekmidas/manifest": "^10.0.0-alpha.0",
|
|
285
|
-
"@geekmidas/rate-limit": "^10.0.0-alpha.0",
|
|
286
|
-
"@geekmidas/schema": "^10.0.0-alpha.0",
|
|
287
|
-
"@geekmidas/services": "^10.0.0-alpha.0",
|
|
288
|
-
"@geekmidas/storage": "^10.0.0-alpha.0",
|
|
289
|
-
"@geekmidas/telescope": "10.0.0-alpha.0"
|
|
292
|
+
"@geekmidas/audit": "^10.0.0-alpha.2",
|
|
293
|
+
"@geekmidas/auth": "10.0.0-alpha.2",
|
|
294
|
+
"@geekmidas/cache": "^10.0.0-alpha.2",
|
|
295
|
+
"@geekmidas/db": "^10.0.0-alpha.2",
|
|
296
|
+
"@geekmidas/emailkit": "^10.0.0-alpha.2",
|
|
297
|
+
"@geekmidas/rate-limit": "^10.0.0-alpha.2",
|
|
298
|
+
"@geekmidas/storage": "^10.0.0-alpha.2",
|
|
299
|
+
"@geekmidas/telescope": "10.0.0-alpha.2"
|
|
290
300
|
},
|
|
291
301
|
"peerDependenciesMeta": {
|
|
292
302
|
"@geekmidas/audit": {
|
|
@@ -298,27 +308,9 @@
|
|
|
298
308
|
"@geekmidas/db": {
|
|
299
309
|
"optional": true
|
|
300
310
|
},
|
|
301
|
-
"@geekmidas/envkit": {
|
|
302
|
-
"optional": true
|
|
303
|
-
},
|
|
304
|
-
"@geekmidas/errors": {
|
|
305
|
-
"optional": true
|
|
306
|
-
},
|
|
307
|
-
"@geekmidas/events": {
|
|
308
|
-
"optional": true
|
|
309
|
-
},
|
|
310
|
-
"@geekmidas/logger": {
|
|
311
|
-
"optional": true
|
|
312
|
-
},
|
|
313
311
|
"@geekmidas/rate-limit": {
|
|
314
312
|
"optional": true
|
|
315
313
|
},
|
|
316
|
-
"@geekmidas/schema": {
|
|
317
|
-
"optional": true
|
|
318
|
-
},
|
|
319
|
-
"@geekmidas/services": {
|
|
320
|
-
"optional": true
|
|
321
|
-
},
|
|
322
314
|
"@middy/core": {
|
|
323
315
|
"optional": true
|
|
324
316
|
},
|
|
@@ -331,9 +323,6 @@
|
|
|
331
323
|
"msw": {
|
|
332
324
|
"optional": true
|
|
333
325
|
},
|
|
334
|
-
"@geekmidas/manifest": {
|
|
335
|
-
"optional": true
|
|
336
|
-
},
|
|
337
326
|
"@geekmidas/storage": {
|
|
338
327
|
"optional": true
|
|
339
328
|
},
|
|
@@ -348,6 +337,9 @@
|
|
|
348
337
|
},
|
|
349
338
|
"better-auth": {
|
|
350
339
|
"optional": true
|
|
340
|
+
},
|
|
341
|
+
"@geekmidas/telescope": {
|
|
342
|
+
"optional": true
|
|
351
343
|
}
|
|
352
344
|
},
|
|
353
345
|
"scripts": {
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { Function, FunctionHandler } from "./index-Dadljnh_.cjs";
|
|
2
|
-
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
3
|
-
import { EventPublisher } from "@geekmidas/events";
|
|
4
|
-
import { Logger } from "@geekmidas/logger";
|
|
5
|
-
import { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema } from "@geekmidas/schema";
|
|
6
|
-
import { Service, ServiceDiscovery, ServiceRecord } from "@geekmidas/services";
|
|
7
|
-
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
8
|
-
import { AuditStorage, AuditableAction, Auditor } from "@geekmidas/audit";
|
|
9
|
-
import { Handler } from "aws-lambda";
|
|
10
|
-
|
|
11
|
-
//#region src/functions/FunctionExecutionWrapper.d.ts
|
|
12
|
-
declare abstract class FunctionExecutionWrapper<TInput extends ComposableStandardSchema | undefined = undefined, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>> {
|
|
13
|
-
protected envParser: EnvironmentParser<{}>;
|
|
14
|
-
protected readonly fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, FunctionHandler<TInput, TServices, TLogger, TOutSchema, TDatabase, TAuditStorage, TAuditAction>>;
|
|
15
|
-
constructor(envParser: EnvironmentParser<{}>, fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, FunctionHandler<TInput, TServices, TLogger, TOutSchema, TDatabase, TAuditStorage, TAuditAction>>);
|
|
16
|
-
protected _logger?: TLogger;
|
|
17
|
-
get logger(): TLogger;
|
|
18
|
-
get serviceDiscovery(): ServiceDiscovery<ServiceRecord<TServices>>;
|
|
19
|
-
getServices(): Promise<ServiceRecord<TServices>>;
|
|
20
|
-
getDatabase(): Promise<TDatabase | undefined>;
|
|
21
|
-
/**
|
|
22
|
-
* Get the audit storage service if configured.
|
|
23
|
-
* Returns undefined if no auditor storage is configured.
|
|
24
|
-
*/
|
|
25
|
-
getAuditStorage(): Promise<TAuditStorage | undefined>;
|
|
26
|
-
/**
|
|
27
|
-
* Create an auditor instance for the function.
|
|
28
|
-
* Returns undefined if no auditor storage is configured.
|
|
29
|
-
*/
|
|
30
|
-
createAuditor(): Promise<Auditor<TAuditAction> | undefined>;
|
|
31
|
-
/**
|
|
32
|
-
* Execute handler with audit transaction support.
|
|
33
|
-
* If the audit storage has a database (via getDatabase()), wraps execution
|
|
34
|
-
* in a transaction so audits are atomic with handler's database operations.
|
|
35
|
-
*
|
|
36
|
-
* @param handler - The handler function to execute (receives auditor and db)
|
|
37
|
-
* @returns The handler result
|
|
38
|
-
*/
|
|
39
|
-
executeWithAudit<T>(handler: (ctx: {
|
|
40
|
-
auditor?: Auditor<TAuditAction>;
|
|
41
|
-
db?: TDatabase;
|
|
42
|
-
}) => Promise<T>): Promise<T>;
|
|
43
|
-
getFunctionInput<TEvent>(event: TEvent): Promise<InferComposableStandardSchema<TInput>>;
|
|
44
|
-
publishEvents(response: InferStandardSchema<TOutSchema>): Promise<void>;
|
|
45
|
-
parseComposableStandardSchema<T extends ComposableStandardSchema>(data: unknown, schema: T): Promise<InferComposableStandardSchema<T>>;
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=FunctionExecutionWrapper.d.ts.map
|
|
48
|
-
//#endregion
|
|
49
|
-
//#region src/functions/AWSLambdaFunction.d.ts
|
|
50
|
-
type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<TEvent, TResult>;
|
|
51
|
-
declare class AWSLambdaFunction<TInput extends ComposableStandardSchema | undefined = undefined, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>> extends FunctionExecutionWrapper<TInput, TOutSchema, TServices, TLogger, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction> {
|
|
52
|
-
readonly fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, FunctionHandler<TInput, TServices, TLogger, TOutSchema, TDatabase, TAuditStorage, TAuditAction>>;
|
|
53
|
-
constructor(envParser: EnvironmentParser<{}>, fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, FunctionHandler<TInput, TServices, TLogger, TOutSchema, TDatabase, TAuditStorage, TAuditAction>>);
|
|
54
|
-
private error;
|
|
55
|
-
private baseInput;
|
|
56
|
-
private input;
|
|
57
|
-
private loggerMiddleware;
|
|
58
|
-
private services;
|
|
59
|
-
private database;
|
|
60
|
-
private auditor;
|
|
61
|
-
private events;
|
|
62
|
-
private _handler;
|
|
63
|
-
get handler(): AWSLambdaHandler;
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=AWSLambdaFunction.d.ts.map
|
|
66
|
-
//#endregion
|
|
67
|
-
//#region src/crons/Cron.d.ts
|
|
68
|
-
declare class Cron<TInput extends ComposableStandardSchema | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, OutSchema extends StandardSchemaV1 | undefined = undefined, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string> extends Function<TInput, TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, undefined, string, TDatabase, TDatabaseServiceName, AuditableAction<string, unknown>, FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>> {
|
|
69
|
-
protected _schedule?: ScheduleExpression | undefined;
|
|
70
|
-
static isCron(obj: any): obj is Cron<any, any, any, any>;
|
|
71
|
-
constructor(fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>, timeout?: number, _schedule?: ScheduleExpression | undefined, input?: TInput, outputSchema?: OutSchema, services?: TServices, logger?: TLogger, publisherService?: Service<TEventPublisherServiceName, TEventPublisher>, events?: any[], memorySize?: number, databaseService?: Service<TDatabaseServiceName, TDatabase>,
|
|
72
|
-
/**
|
|
73
|
-
* The construct ids `.dependsOn()` named — last, so no existing positional
|
|
74
|
-
* argument moves.
|
|
75
|
-
*/
|
|
76
|
-
constructs?: string[]);
|
|
77
|
-
get schedule(): ScheduleExpression | undefined;
|
|
78
|
-
}
|
|
79
|
-
type RateExpression = `rate(${string})`;
|
|
80
|
-
type CronMinute = '*' | number | `${number}` | `${number}-${number}` | `${number}/${number}` | `*/${number}` | `${number},${number}` | string;
|
|
81
|
-
type CronHour = '*' | number | `${number}` | `${number}-${number}` | `${number}/${number}` | `*/${number}` | `${number},${number}` | string;
|
|
82
|
-
type CronDay = '*' | number | `${number}` | `${number}-${number}` | `${number}/${number}` | `*/${number}` | `${number},${number}` | string;
|
|
83
|
-
type CronMonth = '*' | number | `${number}` | `${number}-${number}` | `${number}/${number}` | `*/${number}` | 'JAN' | 'FEB' | 'MAR' | 'APR' | 'MAY' | 'JUN' | 'JUL' | 'AUG' | 'SEP' | 'OCT' | 'NOV' | 'DEC' | string;
|
|
84
|
-
type CronWeekday = '*' | number | `${number}` | `${number}-${number}` | `${number}/${number}` | `*/${number}` | 'SUN' | 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | `${string}-${string}` | string;
|
|
85
|
-
type CronExpression = `cron(${CronMinute} ${CronHour} ${CronDay} ${CronMonth} ${CronWeekday})`;
|
|
86
|
-
type ScheduleExpression = RateExpression | CronExpression;
|
|
87
|
-
//#endregion
|
|
88
|
-
//#region src/crons/AWSScheduledFunction.d.ts
|
|
89
|
-
/**
|
|
90
|
-
* AWS Lambda adaptor for {@link Cron} constructs.
|
|
91
|
-
*
|
|
92
|
-
* A `Cron` is a {@link import('../functions').Function} that is invoked on a
|
|
93
|
-
* schedule (an EventBridge rule) rather than by an API request. Because of
|
|
94
|
-
* that, the runtime execution pipeline is identical to a regular Lambda
|
|
95
|
-
* function: input parsing, service/database/auditor wiring, event publishing,
|
|
96
|
-
* error handling, and the `runWithRequestContext` wrapper that powers
|
|
97
|
-
* request-scoped logging via `serviceContext.getLogger()`.
|
|
98
|
-
*
|
|
99
|
-
* This adaptor therefore reuses {@link AWSLambdaFunction} wholesale and only
|
|
100
|
-
* narrows the constructor to accept a `Cron`. The schedule expression itself
|
|
101
|
-
* (`cron.schedule`) is **deploy-time** infrastructure consumed by the CLI to
|
|
102
|
-
* provision the EventBridge rule — it is not needed at runtime.
|
|
103
|
-
*
|
|
104
|
-
* @example
|
|
105
|
-
* ```typescript
|
|
106
|
-
* import { AWSScheduledFunction } from '@geekmidas/constructs/crons';
|
|
107
|
-
* import { cancelPastBookings } from '../../../src/crons/cancelPastBookings.js';
|
|
108
|
-
* import { envParser } from '../../../src/env';
|
|
109
|
-
*
|
|
110
|
-
* const adapter = new AWSScheduledFunction(envParser, cancelPastBookings);
|
|
111
|
-
*
|
|
112
|
-
* export const handler = adapter.handler;
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
|
-
declare class AWSScheduledFunction<TInput extends ComposableStandardSchema | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TOutSchema extends StandardSchemaV1 | undefined = undefined, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string> extends AWSLambdaFunction<TInput, TOutSchema, TServices, TLogger, TEventPublisher, TEventPublisherServiceName, undefined, string, TDatabase, TDatabaseServiceName> {
|
|
116
|
-
constructor(envParser: EnvironmentParser<{}>, cron: Cron<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TDatabase, TDatabaseServiceName>);
|
|
117
|
-
}
|
|
118
|
-
//# sourceMappingURL=AWSScheduledFunction.d.ts.map
|
|
119
|
-
|
|
120
|
-
//#endregion
|
|
121
|
-
export { AWSLambdaFunction, AWSScheduledFunction, Cron, CronExpression, RateExpression, ScheduleExpression };
|
|
122
|
-
//# sourceMappingURL=AWSScheduledFunction-BvFvBsBN.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AWSScheduledFunction-BvFvBsBN.d.cts","names":[],"sources":["../src/functions/FunctionExecutionWrapper.ts","../src/functions/AWSLambdaFunction.ts","../src/crons/Cron.ts","../src/crons/AWSScheduledFunction.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { Function, FunctionHandler } from "./index-CPeqtKgq.mjs";
|
|
2
|
-
import { EnvironmentParser } from "@geekmidas/envkit";
|
|
3
|
-
import { Service, ServiceDiscovery, ServiceRecord } from "@geekmidas/services";
|
|
4
|
-
import { AuditStorage, AuditableAction, Auditor } from "@geekmidas/audit";
|
|
5
|
-
import { EventPublisher } from "@geekmidas/events";
|
|
6
|
-
import { Logger } from "@geekmidas/logger";
|
|
7
|
-
import { ComposableStandardSchema, InferComposableStandardSchema, InferStandardSchema } from "@geekmidas/schema";
|
|
8
|
-
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
9
|
-
import { Handler } from "aws-lambda";
|
|
10
|
-
|
|
11
|
-
//#region src/functions/FunctionExecutionWrapper.d.ts
|
|
12
|
-
declare abstract class FunctionExecutionWrapper<TInput extends ComposableStandardSchema | undefined = undefined, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>> {
|
|
13
|
-
protected envParser: EnvironmentParser<{}>;
|
|
14
|
-
protected readonly fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, FunctionHandler<TInput, TServices, TLogger, TOutSchema, TDatabase, TAuditStorage, TAuditAction>>;
|
|
15
|
-
constructor(envParser: EnvironmentParser<{}>, fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, FunctionHandler<TInput, TServices, TLogger, TOutSchema, TDatabase, TAuditStorage, TAuditAction>>);
|
|
16
|
-
protected _logger?: TLogger;
|
|
17
|
-
get logger(): TLogger;
|
|
18
|
-
get serviceDiscovery(): ServiceDiscovery<ServiceRecord<TServices>>;
|
|
19
|
-
getServices(): Promise<ServiceRecord<TServices>>;
|
|
20
|
-
getDatabase(): Promise<TDatabase | undefined>;
|
|
21
|
-
/**
|
|
22
|
-
* Get the audit storage service if configured.
|
|
23
|
-
* Returns undefined if no auditor storage is configured.
|
|
24
|
-
*/
|
|
25
|
-
getAuditStorage(): Promise<TAuditStorage | undefined>;
|
|
26
|
-
/**
|
|
27
|
-
* Create an auditor instance for the function.
|
|
28
|
-
* Returns undefined if no auditor storage is configured.
|
|
29
|
-
*/
|
|
30
|
-
createAuditor(): Promise<Auditor<TAuditAction> | undefined>;
|
|
31
|
-
/**
|
|
32
|
-
* Execute handler with audit transaction support.
|
|
33
|
-
* If the audit storage has a database (via getDatabase()), wraps execution
|
|
34
|
-
* in a transaction so audits are atomic with handler's database operations.
|
|
35
|
-
*
|
|
36
|
-
* @param handler - The handler function to execute (receives auditor and db)
|
|
37
|
-
* @returns The handler result
|
|
38
|
-
*/
|
|
39
|
-
executeWithAudit<T>(handler: (ctx: {
|
|
40
|
-
auditor?: Auditor<TAuditAction>;
|
|
41
|
-
db?: TDatabase;
|
|
42
|
-
}) => Promise<T>): Promise<T>;
|
|
43
|
-
getFunctionInput<TEvent>(event: TEvent): Promise<InferComposableStandardSchema<TInput>>;
|
|
44
|
-
publishEvents(response: InferStandardSchema<TOutSchema>): Promise<void>;
|
|
45
|
-
parseComposableStandardSchema<T extends ComposableStandardSchema>(data: unknown, schema: T): Promise<InferComposableStandardSchema<T>>;
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=FunctionExecutionWrapper.d.ts.map
|
|
48
|
-
//#endregion
|
|
49
|
-
//#region src/functions/AWSLambdaFunction.d.ts
|
|
50
|
-
type AWSLambdaHandler<TEvent = any, TResult = any> = Handler<TEvent, TResult>;
|
|
51
|
-
declare class AWSLambdaFunction<TInput extends ComposableStandardSchema | undefined = undefined, TOutSchema extends StandardSchemaV1 | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TAuditStorage extends AuditStorage | undefined = undefined, TAuditStorageServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string, TAuditAction extends AuditableAction<string, unknown> = AuditableAction<string, unknown>> extends FunctionExecutionWrapper<TInput, TOutSchema, TServices, TLogger, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction> {
|
|
52
|
-
readonly fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, FunctionHandler<TInput, TServices, TLogger, TOutSchema, TDatabase, TAuditStorage, TAuditAction>>;
|
|
53
|
-
constructor(envParser: EnvironmentParser<{}>, fn: Function<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TAuditStorage, TAuditStorageServiceName, TDatabase, TDatabaseServiceName, TAuditAction, FunctionHandler<TInput, TServices, TLogger, TOutSchema, TDatabase, TAuditStorage, TAuditAction>>);
|
|
54
|
-
private error;
|
|
55
|
-
private baseInput;
|
|
56
|
-
private input;
|
|
57
|
-
private loggerMiddleware;
|
|
58
|
-
private services;
|
|
59
|
-
private database;
|
|
60
|
-
private auditor;
|
|
61
|
-
private events;
|
|
62
|
-
private _handler;
|
|
63
|
-
get handler(): AWSLambdaHandler;
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=AWSLambdaFunction.d.ts.map
|
|
66
|
-
//#endregion
|
|
67
|
-
//#region src/crons/Cron.d.ts
|
|
68
|
-
declare class Cron<TInput extends ComposableStandardSchema | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, OutSchema extends StandardSchemaV1 | undefined = undefined, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string> extends Function<TInput, TServices, TLogger, OutSchema, TEventPublisher, TEventPublisherServiceName, undefined, string, TDatabase, TDatabaseServiceName, AuditableAction<string, unknown>, FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>> {
|
|
69
|
-
protected _schedule?: ScheduleExpression | undefined;
|
|
70
|
-
static isCron(obj: any): obj is Cron<any, any, any, any>;
|
|
71
|
-
constructor(fn: FunctionHandler<TInput, TServices, TLogger, OutSchema, TDatabase>, timeout?: number, _schedule?: ScheduleExpression | undefined, input?: TInput, outputSchema?: OutSchema, services?: TServices, logger?: TLogger, publisherService?: Service<TEventPublisherServiceName, TEventPublisher>, events?: any[], memorySize?: number, databaseService?: Service<TDatabaseServiceName, TDatabase>,
|
|
72
|
-
/**
|
|
73
|
-
* The construct ids `.dependsOn()` named — last, so no existing positional
|
|
74
|
-
* argument moves.
|
|
75
|
-
*/
|
|
76
|
-
constructs?: string[]);
|
|
77
|
-
get schedule(): ScheduleExpression | undefined;
|
|
78
|
-
}
|
|
79
|
-
type RateExpression = `rate(${string})`;
|
|
80
|
-
type CronMinute = '*' | number | `${number}` | `${number}-${number}` | `${number}/${number}` | `*/${number}` | `${number},${number}` | string;
|
|
81
|
-
type CronHour = '*' | number | `${number}` | `${number}-${number}` | `${number}/${number}` | `*/${number}` | `${number},${number}` | string;
|
|
82
|
-
type CronDay = '*' | number | `${number}` | `${number}-${number}` | `${number}/${number}` | `*/${number}` | `${number},${number}` | string;
|
|
83
|
-
type CronMonth = '*' | number | `${number}` | `${number}-${number}` | `${number}/${number}` | `*/${number}` | 'JAN' | 'FEB' | 'MAR' | 'APR' | 'MAY' | 'JUN' | 'JUL' | 'AUG' | 'SEP' | 'OCT' | 'NOV' | 'DEC' | string;
|
|
84
|
-
type CronWeekday = '*' | number | `${number}` | `${number}-${number}` | `${number}/${number}` | `*/${number}` | 'SUN' | 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | `${string}-${string}` | string;
|
|
85
|
-
type CronExpression = `cron(${CronMinute} ${CronHour} ${CronDay} ${CronMonth} ${CronWeekday})`;
|
|
86
|
-
type ScheduleExpression = RateExpression | CronExpression;
|
|
87
|
-
//#endregion
|
|
88
|
-
//#region src/crons/AWSScheduledFunction.d.ts
|
|
89
|
-
/**
|
|
90
|
-
* AWS Lambda adaptor for {@link Cron} constructs.
|
|
91
|
-
*
|
|
92
|
-
* A `Cron` is a {@link import('../functions').Function} that is invoked on a
|
|
93
|
-
* schedule (an EventBridge rule) rather than by an API request. Because of
|
|
94
|
-
* that, the runtime execution pipeline is identical to a regular Lambda
|
|
95
|
-
* function: input parsing, service/database/auditor wiring, event publishing,
|
|
96
|
-
* error handling, and the `runWithRequestContext` wrapper that powers
|
|
97
|
-
* request-scoped logging via `serviceContext.getLogger()`.
|
|
98
|
-
*
|
|
99
|
-
* This adaptor therefore reuses {@link AWSLambdaFunction} wholesale and only
|
|
100
|
-
* narrows the constructor to accept a `Cron`. The schedule expression itself
|
|
101
|
-
* (`cron.schedule`) is **deploy-time** infrastructure consumed by the CLI to
|
|
102
|
-
* provision the EventBridge rule — it is not needed at runtime.
|
|
103
|
-
*
|
|
104
|
-
* @example
|
|
105
|
-
* ```typescript
|
|
106
|
-
* import { AWSScheduledFunction } from '@geekmidas/constructs/crons';
|
|
107
|
-
* import { cancelPastBookings } from '../../../src/crons/cancelPastBookings.js';
|
|
108
|
-
* import { envParser } from '../../../src/env';
|
|
109
|
-
*
|
|
110
|
-
* const adapter = new AWSScheduledFunction(envParser, cancelPastBookings);
|
|
111
|
-
*
|
|
112
|
-
* export const handler = adapter.handler;
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
|
-
declare class AWSScheduledFunction<TInput extends ComposableStandardSchema | undefined = undefined, TServices extends Service[] = [], TLogger extends Logger = Logger, TOutSchema extends StandardSchemaV1 | undefined = undefined, TEventPublisher extends EventPublisher<any> | undefined = undefined, TEventPublisherServiceName extends string = string, TDatabase = undefined, TDatabaseServiceName extends string = string> extends AWSLambdaFunction<TInput, TOutSchema, TServices, TLogger, TEventPublisher, TEventPublisherServiceName, undefined, string, TDatabase, TDatabaseServiceName> {
|
|
116
|
-
constructor(envParser: EnvironmentParser<{}>, cron: Cron<TInput, TServices, TLogger, TOutSchema, TEventPublisher, TEventPublisherServiceName, TDatabase, TDatabaseServiceName>);
|
|
117
|
-
}
|
|
118
|
-
//# sourceMappingURL=AWSScheduledFunction.d.ts.map
|
|
119
|
-
|
|
120
|
-
//#endregion
|
|
121
|
-
export { AWSLambdaFunction, AWSScheduledFunction, Cron, CronExpression, RateExpression, ScheduleExpression };
|
|
122
|
-
//# sourceMappingURL=AWSScheduledFunction-CVccZO-L.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AWSScheduledFunction-CVccZO-L.d.mts","names":[],"sources":["../src/functions/FunctionExecutionWrapper.ts","../src/functions/AWSLambdaFunction.ts","../src/crons/Cron.ts","../src/crons/AWSScheduledFunction.ts"],"sourcesContent":[],"mappings":"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"}
|