qstd 0.3.85 → 0.3.87

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.
@@ -1089,6 +1089,126 @@ function remove(path, body, opts) {
1089
1089
  );
1090
1090
  }
1091
1091
 
1092
+ // src/shared/lexorank/index.ts
1093
+ var lexorank_exports = {};
1094
+ __export(lexorank_exports, {
1095
+ checkBalance: () => checkBalance,
1096
+ createOrderStr: () => createOrderStr,
1097
+ createRebalancedOrderList: () => createRebalancedOrderList,
1098
+ rebalance: () => rebalance,
1099
+ sortByOrder: () => sortByOrder
1100
+ });
1101
+
1102
+ // src/shared/lexorank/literals.ts
1103
+ var LOWER_BOUND = 96;
1104
+ var UPPER_BOUND = 123;
1105
+ var CHAR_A = 97;
1106
+ var CHAR_Z = 122;
1107
+ var ALPHABET_SIZE = 26;
1108
+ var DISTRIBUTION_TABLE = [
1109
+ 0,
1110
+ 4096,
1111
+ 65792,
1112
+ 528416,
1113
+ 1081872,
1114
+ 2167048,
1115
+ 2376776,
1116
+ 4756004,
1117
+ 4794660,
1118
+ 5411476,
1119
+ 9775442,
1120
+ 11097386,
1121
+ 11184810,
1122
+ 22369621
1123
+ ];
1124
+
1125
+ // src/shared/lexorank/fns.ts
1126
+ var stripTrailingAs = (str) => {
1127
+ let last = str.length - 1;
1128
+ while (str.charAt(last) === "a") --last;
1129
+ return str.slice(0, last + 1);
1130
+ };
1131
+ var partialAlphabet = (num2) => {
1132
+ let bits = num2 < 13 ? DISTRIBUTION_TABLE[num2] ?? 0 : 33554431 - (DISTRIBUTION_TABLE[25 - num2] ?? 0);
1133
+ const chars = [];
1134
+ for (let i = 1; i < ALPHABET_SIZE; i++, bits >>= 1) {
1135
+ if (bits & 1) chars.push(String.fromCharCode(CHAR_A + i));
1136
+ }
1137
+ return chars;
1138
+ };
1139
+
1140
+ // src/shared/lexorank/domain.ts
1141
+ var createOrderStr = (prev = "", next = "") => {
1142
+ let p;
1143
+ let n;
1144
+ let pos;
1145
+ let str;
1146
+ for (pos = 0; p === n; pos++) {
1147
+ p = pos < prev.length ? prev.charCodeAt(pos) : LOWER_BOUND;
1148
+ n = pos < next.length ? next.charCodeAt(pos) : UPPER_BOUND;
1149
+ }
1150
+ str = prev.slice(0, pos - 1);
1151
+ if (p === LOWER_BOUND) {
1152
+ while (n === CHAR_A) {
1153
+ n = pos < next.length ? next.charCodeAt(pos++) : UPPER_BOUND;
1154
+ str += "a";
1155
+ }
1156
+ if (n === CHAR_A + 1) {
1157
+ str += "a";
1158
+ n = UPPER_BOUND;
1159
+ }
1160
+ } else if (p !== void 0 && n !== void 0 && p + 1 === n) {
1161
+ str += String.fromCharCode(p);
1162
+ n = UPPER_BOUND;
1163
+ while ((p = pos < prev.length ? prev.charCodeAt(pos++) : LOWER_BOUND) === CHAR_Z) {
1164
+ str += "z";
1165
+ }
1166
+ }
1167
+ return str + String.fromCharCode(
1168
+ Math.ceil(((p ?? LOWER_BOUND) + (n ?? UPPER_BOUND)) / 2)
1169
+ );
1170
+ };
1171
+ var createRebalancedOrderList = (num2) => {
1172
+ const chars = Math.floor(Math.log(num2) / Math.log(ALPHABET_SIZE)) + 1;
1173
+ const prev = Math.pow(ALPHABET_SIZE, chars - 1);
1174
+ const ratio = chars > 1 ? (num2 + 1 - prev) / prev : num2;
1175
+ const part = Math.floor(ratio);
1176
+ const alpha = [partialAlphabet(part), partialAlphabet(part + 1)];
1177
+ const leapStep = ratio % 1;
1178
+ let leapTotal = 0.5;
1179
+ let first = true;
1180
+ const strings = [];
1181
+ const generate = (full, str) => {
1182
+ if (full) {
1183
+ for (let i = 0; i < ALPHABET_SIZE; i++) {
1184
+ generate(full - 1, str + String.fromCharCode(CHAR_A + i));
1185
+ }
1186
+ } else {
1187
+ if (!first) strings.push(stripTrailingAs(str));
1188
+ else first = false;
1189
+ const leap = Math.floor(leapTotal += leapStep);
1190
+ leapTotal %= 1;
1191
+ for (let i = 0; i < part + leap; i++) {
1192
+ strings.push(str + (alpha[leap]?.[i] ?? ""));
1193
+ }
1194
+ }
1195
+ };
1196
+ generate(chars - 1, "");
1197
+ return strings;
1198
+ };
1199
+ var checkBalance = (xs) => {
1200
+ let largestOrderStr = 0;
1201
+ xs.forEach(
1202
+ (x) => largestOrderStr = Math.max(largestOrderStr, x.order.length)
1203
+ );
1204
+ return largestOrderStr > xs.length / 2;
1205
+ };
1206
+ var rebalance = (xs) => {
1207
+ const rebalancedOrderList = createRebalancedOrderList(xs.length);
1208
+ return xs.map((x, i) => ({ ...x, order: rebalancedOrderList[i] ?? x.order }));
1209
+ };
1210
+ var sortByOrder = (xs) => xs.toSorted((a, b) => (a.order ?? "").localeCompare(b.order ?? ""));
1211
+
1092
1212
  // src/client/haptics.ts
1093
1213
  var haptics_exports = {};
1094
1214
  __export(haptics_exports, {
@@ -1196,6 +1316,7 @@ exports.Dom = dom_exports;
1196
1316
  exports.Flow = flow_exports;
1197
1317
  exports.Haptics = haptics_exports;
1198
1318
  exports.Int = int_exports;
1319
+ exports.LexoRank = lexorank_exports;
1199
1320
  exports.List = list_exports;
1200
1321
  exports.Log = log_exports;
1201
1322
  exports.Money = money_exports;
@@ -8,6 +8,7 @@ export * as Flow from "../shared/flow";
8
8
  export * as Random from "../shared/random";
9
9
  export * as Log from "../shared/log";
10
10
  export * as Api from "../shared/api";
11
+ export * as LexoRank from "../shared/lexorank";
11
12
  export * as Haptics from "./haptics";
12
13
  export { Theme } from "./theme";
13
14
  export * as Dom from "./dom";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAGrC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAC;AAG/C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC"}
@@ -1082,6 +1082,126 @@ function remove(path, body, opts) {
1082
1082
  );
1083
1083
  }
1084
1084
 
1085
+ // src/shared/lexorank/index.ts
1086
+ var lexorank_exports = {};
1087
+ __export(lexorank_exports, {
1088
+ checkBalance: () => checkBalance,
1089
+ createOrderStr: () => createOrderStr,
1090
+ createRebalancedOrderList: () => createRebalancedOrderList,
1091
+ rebalance: () => rebalance,
1092
+ sortByOrder: () => sortByOrder
1093
+ });
1094
+
1095
+ // src/shared/lexorank/literals.ts
1096
+ var LOWER_BOUND = 96;
1097
+ var UPPER_BOUND = 123;
1098
+ var CHAR_A = 97;
1099
+ var CHAR_Z = 122;
1100
+ var ALPHABET_SIZE = 26;
1101
+ var DISTRIBUTION_TABLE = [
1102
+ 0,
1103
+ 4096,
1104
+ 65792,
1105
+ 528416,
1106
+ 1081872,
1107
+ 2167048,
1108
+ 2376776,
1109
+ 4756004,
1110
+ 4794660,
1111
+ 5411476,
1112
+ 9775442,
1113
+ 11097386,
1114
+ 11184810,
1115
+ 22369621
1116
+ ];
1117
+
1118
+ // src/shared/lexorank/fns.ts
1119
+ var stripTrailingAs = (str) => {
1120
+ let last = str.length - 1;
1121
+ while (str.charAt(last) === "a") --last;
1122
+ return str.slice(0, last + 1);
1123
+ };
1124
+ var partialAlphabet = (num2) => {
1125
+ let bits = num2 < 13 ? DISTRIBUTION_TABLE[num2] ?? 0 : 33554431 - (DISTRIBUTION_TABLE[25 - num2] ?? 0);
1126
+ const chars = [];
1127
+ for (let i = 1; i < ALPHABET_SIZE; i++, bits >>= 1) {
1128
+ if (bits & 1) chars.push(String.fromCharCode(CHAR_A + i));
1129
+ }
1130
+ return chars;
1131
+ };
1132
+
1133
+ // src/shared/lexorank/domain.ts
1134
+ var createOrderStr = (prev = "", next = "") => {
1135
+ let p;
1136
+ let n;
1137
+ let pos;
1138
+ let str;
1139
+ for (pos = 0; p === n; pos++) {
1140
+ p = pos < prev.length ? prev.charCodeAt(pos) : LOWER_BOUND;
1141
+ n = pos < next.length ? next.charCodeAt(pos) : UPPER_BOUND;
1142
+ }
1143
+ str = prev.slice(0, pos - 1);
1144
+ if (p === LOWER_BOUND) {
1145
+ while (n === CHAR_A) {
1146
+ n = pos < next.length ? next.charCodeAt(pos++) : UPPER_BOUND;
1147
+ str += "a";
1148
+ }
1149
+ if (n === CHAR_A + 1) {
1150
+ str += "a";
1151
+ n = UPPER_BOUND;
1152
+ }
1153
+ } else if (p !== void 0 && n !== void 0 && p + 1 === n) {
1154
+ str += String.fromCharCode(p);
1155
+ n = UPPER_BOUND;
1156
+ while ((p = pos < prev.length ? prev.charCodeAt(pos++) : LOWER_BOUND) === CHAR_Z) {
1157
+ str += "z";
1158
+ }
1159
+ }
1160
+ return str + String.fromCharCode(
1161
+ Math.ceil(((p ?? LOWER_BOUND) + (n ?? UPPER_BOUND)) / 2)
1162
+ );
1163
+ };
1164
+ var createRebalancedOrderList = (num2) => {
1165
+ const chars = Math.floor(Math.log(num2) / Math.log(ALPHABET_SIZE)) + 1;
1166
+ const prev = Math.pow(ALPHABET_SIZE, chars - 1);
1167
+ const ratio = chars > 1 ? (num2 + 1 - prev) / prev : num2;
1168
+ const part = Math.floor(ratio);
1169
+ const alpha = [partialAlphabet(part), partialAlphabet(part + 1)];
1170
+ const leapStep = ratio % 1;
1171
+ let leapTotal = 0.5;
1172
+ let first = true;
1173
+ const strings = [];
1174
+ const generate = (full, str) => {
1175
+ if (full) {
1176
+ for (let i = 0; i < ALPHABET_SIZE; i++) {
1177
+ generate(full - 1, str + String.fromCharCode(CHAR_A + i));
1178
+ }
1179
+ } else {
1180
+ if (!first) strings.push(stripTrailingAs(str));
1181
+ else first = false;
1182
+ const leap = Math.floor(leapTotal += leapStep);
1183
+ leapTotal %= 1;
1184
+ for (let i = 0; i < part + leap; i++) {
1185
+ strings.push(str + (alpha[leap]?.[i] ?? ""));
1186
+ }
1187
+ }
1188
+ };
1189
+ generate(chars - 1, "");
1190
+ return strings;
1191
+ };
1192
+ var checkBalance = (xs) => {
1193
+ let largestOrderStr = 0;
1194
+ xs.forEach(
1195
+ (x) => largestOrderStr = Math.max(largestOrderStr, x.order.length)
1196
+ );
1197
+ return largestOrderStr > xs.length / 2;
1198
+ };
1199
+ var rebalance = (xs) => {
1200
+ const rebalancedOrderList = createRebalancedOrderList(xs.length);
1201
+ return xs.map((x, i) => ({ ...x, order: rebalancedOrderList[i] ?? x.order }));
1202
+ };
1203
+ var sortByOrder = (xs) => xs.toSorted((a, b) => (a.order ?? "").localeCompare(b.order ?? ""));
1204
+
1085
1205
  // src/client/haptics.ts
1086
1206
  var haptics_exports = {};
1087
1207
  __export(haptics_exports, {
@@ -1183,4 +1303,4 @@ var copy = async (text) => {
1183
1303
  }
1184
1304
  };
1185
1305
 
1186
- export { api_exports as Api, dict_exports as Dict, dom_exports as Dom, flow_exports as Flow, haptics_exports as Haptics, int_exports as Int, list_exports as List, log_exports as Log, money_exports as Money, random_exports as Random, str_exports as Str, Theme, time_exports as Time };
1306
+ export { api_exports as Api, dict_exports as Dict, dom_exports as Dom, flow_exports as Flow, haptics_exports as Haptics, int_exports as Int, lexorank_exports as LexoRank, list_exports as List, log_exports as Log, money_exports as Money, random_exports as Random, str_exports as Str, Theme, time_exports as Time };
@@ -0,0 +1,57 @@
1
+ import * as _t from "./types";
2
+ export declare const create: (props: _t.CreateProps) => _t.Client;
3
+ export declare const createFromRequestContext: (props: _t.RequestContextProps) => _t.Client;
4
+ /**
5
+ * Bind connection lookup and stale cleanup once, then reuse the returned
6
+ * publisher for one-to-one sends and fan-out.
7
+ *
8
+ * Create your API Gateway client and any storage clients once, then create a
9
+ * publisher once and pass that publisher to nested helpers. This keeps the call
10
+ * sites focused on targets and payloads instead of threading the same
11
+ * dependencies through every send.
12
+ *
13
+ * `onGone` is where app-specific cleanup belongs. For example, a DynamoDB-backed
14
+ * app can close over `ddb` there without making the publisher itself depend on
15
+ * DynamoDB types.
16
+ *
17
+ * @example
18
+ * const ddb = DDB.create({ tableName: "app-main" });
19
+ * const apigw = ApiGw.create({ endpoint: process.env.WS_ENDPOINT! });
20
+ *
21
+ * const publisher = ApiGw.createPublisher<Connection, Event>(apigw, {
22
+ * getConnectionId: (connection) => connection.id,
23
+ * onGone: (connection) => removeConnection(ddb, connection.id),
24
+ * });
25
+ *
26
+ * await publisher.send(connection, {
27
+ * data: { type: "subscribed" },
28
+ * });
29
+ *
30
+ * await publisher.broadcast({
31
+ * targets: connections,
32
+ * data: { type: "refresh" },
33
+ * });
34
+ *
35
+ * @example
36
+ * type UploadSessionPublisher = ApiGw.Publisher<
37
+ * UploadSessionConnection,
38
+ * StreamEvent
39
+ * >;
40
+ *
41
+ * const publishSnapshot = async (
42
+ * publisher: UploadSessionPublisher,
43
+ * connection: UploadSessionConnection
44
+ * ) => {
45
+ * const event =
46
+ * connection.scope === "active"
47
+ * ? await createActiveSessionsEvent(ddb)
48
+ * : await createSessionEvent(ddb, connection.sessionId!);
49
+ *
50
+ * await publisher.send(connection, { data: event });
51
+ * };
52
+ */
53
+ export declare const createPublisher: <T, TData = unknown>(apigw: _t.Client, props: _t.CreatePublisherProps<T>) => _t.Publisher<T, TData>;
54
+ export declare const send: (apigw: _t.Client, props: _t.SendProps) => Promise<boolean>;
55
+ export declare const deleteConnection: (apigw: _t.Client, props: _t.DeleteConnectionProps) => Promise<import("@aws-sdk/client-apigatewaymanagementapi").DeleteConnectionCommandOutput>;
56
+ export declare const broadcast: <T, TData = unknown>(apigw: _t.Client, props: _t.BroadcastProps<T, TData>) => Promise<_t.BroadcastResult<T>>;
57
+ //# sourceMappingURL=domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/apigw/domain.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,eAAO,MAAM,MAAM,GAAI,OAAO,EAAE,CAAC,WAAW,KAAG,EAAE,CAAC,MAKjD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,OAAO,EAAE,CAAC,mBAAmB,cAErE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,KAAK,GAAG,OAAO,EAChD,OAAO,EAAE,CAAC,MAAM,EAChB,OAAO,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAChC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAoBvB,CAAC;AAEF,eAAO,MAAM,IAAI,GAAU,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,SAAS,qBAiB/D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,OAAO,EAAE,CAAC,MAAM,EAChB,OAAO,EAAE,CAAC,qBAAqB,6FAOhC,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,CAAC,EAAE,KAAK,GAAG,OAAO,EAChD,OAAO,EAAE,CAAC,MAAM,EAChB,OAAO,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,mCAgEnC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import * as _t from "./types";
2
+ export declare const getManagementEndpoint: (props: _t.RequestContextProps) => string;
3
+ export declare const isGoneConnectionError: (error: unknown) => boolean;
4
+ export declare const encodeData: (data: unknown) => _t.EncodedPayload;
5
+ export declare const runWithConcurrency: <T>(items: readonly T[], concurrency: number, fn: (item: T) => Promise<void>) => Promise<void>;
6
+ //# sourceMappingURL=fns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/apigw/fns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAI9B,eAAO,MAAM,qBAAqB,GAAI,OAAO,EAAE,CAAC,mBAAmB,WAgBlE,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,OAAO,OAAO,YAQnD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,OAAO,KAAG,EAAE,CAAC,cAmB7C,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,CAAC,EACxC,OAAO,SAAS,CAAC,EAAE,EACnB,aAAa,MAAM,EACnB,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,kBAc/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./domain";
2
+ export * from "./types";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/apigw/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,113 @@
1
+ import type { ApiGatewayManagementApiClient, DeleteConnectionCommandOutput } from "@aws-sdk/client-apigatewaymanagementapi";
2
+ import type { APIGatewayProxyEvent } from "aws-lambda";
3
+ export type RawClient = Pick<ApiGatewayManagementApiClient, "send">;
4
+ export type Client = {
5
+ client: RawClient;
6
+ endpoint: string;
7
+ };
8
+ export type CreateProps = {
9
+ endpoint: string;
10
+ };
11
+ export type RequestContextProps = Pick<APIGatewayProxyEvent["requestContext"], "domainName" | "stage"> & {
12
+ protocol?: "http" | "https";
13
+ basePath?: string;
14
+ };
15
+ export type EncodedPayload = string | Uint8Array;
16
+ export type SendProps = {
17
+ onGone?: (connectionId: string) => Promise<void> | void;
18
+ connectionId: string;
19
+ data: unknown;
20
+ };
21
+ export type DeleteConnectionProps = {
22
+ connectionId: string;
23
+ };
24
+ export type DeleteConnectionResult = DeleteConnectionCommandOutput;
25
+ export type BroadcastStale<T> = {
26
+ connectionId: string;
27
+ target: T;
28
+ };
29
+ export type BroadcastFailure<T> = {
30
+ connectionId: string;
31
+ error: unknown;
32
+ target: T;
33
+ };
34
+ export type BroadcastResult<T> = {
35
+ failed: BroadcastFailure<T>[];
36
+ stale: BroadcastStale<T>[];
37
+ sent: number;
38
+ };
39
+ type Awaitable<T> = T | PromiseLike<T>;
40
+ type BroadcastSharedProps<T> = {
41
+ getConnectionId: (target: T) => string;
42
+ onGone?: (target: T) => Promise<void> | void;
43
+ targets: readonly T[];
44
+ concurrency?: number;
45
+ };
46
+ export type BroadcastConstantDataProps<T> = BroadcastSharedProps<T> & {
47
+ getCacheKey?: never;
48
+ getData?: never;
49
+ data: unknown;
50
+ };
51
+ export type BroadcastDynamicDataProps<T, TData = unknown> = BroadcastSharedProps<T> & {
52
+ getData: (target: T) => Awaitable<TData>;
53
+ getCacheKey?: (target: T) => string | number | null | undefined;
54
+ data?: never;
55
+ };
56
+ export type BroadcastProps<T, TData = unknown> = BroadcastConstantDataProps<T> | BroadcastDynamicDataProps<T, TData>;
57
+ /**
58
+ * Configuration for a bound websocket publisher.
59
+ *
60
+ * `qstd` intentionally asks only for connection lookup and stale-target cleanup.
61
+ * Any storage details, such as DynamoDB removal, live in the `onGone` closure so
62
+ * the publisher can stay generic across apps and persistence layers.
63
+ */
64
+ export type CreatePublisherProps<T> = {
65
+ /** Extract the API Gateway connection ID from your app's target shape. */
66
+ getConnectionId: (target: T) => string;
67
+ /** Optional stale-target cleanup hook, eg remove a dead connection from DDB. */
68
+ onGone?: (target: T) => Promise<void> | void;
69
+ };
70
+ export type PublisherSendProps<TData = unknown> = {
71
+ data: TData;
72
+ };
73
+ type PublisherBroadcastSharedProps<T> = {
74
+ targets: readonly T[];
75
+ concurrency?: number;
76
+ };
77
+ export type PublisherBroadcastConstantDataProps<T, TData = unknown> = PublisherBroadcastSharedProps<T> & {
78
+ getCacheKey?: never;
79
+ getData?: never;
80
+ data: TData;
81
+ };
82
+ export type PublisherBroadcastDynamicDataProps<T, TData = unknown> = PublisherBroadcastSharedProps<T> & {
83
+ getData: (target: T) => Awaitable<TData>;
84
+ getCacheKey?: (target: T) => string | number | null | undefined;
85
+ data?: never;
86
+ };
87
+ export type PublisherBroadcastProps<T, TData = unknown> = PublisherBroadcastConstantDataProps<T, TData> | PublisherBroadcastDynamicDataProps<T, TData>;
88
+ /**
89
+ * Bound websocket publisher created once per invocation and passed to helpers.
90
+ *
91
+ * The type only needs to describe the target shape and payload shape. Any DDB,
92
+ * SQL, or cache clients used for stale cleanup stay hidden inside the closure
93
+ * captured by `createPublisher()`.
94
+ *
95
+ * @example
96
+ * type Connection = { id: string; roomId: string };
97
+ * type Event = { type: "message"; roomId: string; text: string };
98
+ *
99
+ * const publisher = ApiGw.createPublisher<Connection, Event>(apigw, {
100
+ * getConnectionId: (connection) => connection.id,
101
+ * onGone: (connection) => removeConnection(ddb, connection.id),
102
+ * });
103
+ *
104
+ * await publisher.send(connection, {
105
+ * data: { type: "message", roomId: "abc", text: "hello" },
106
+ * });
107
+ */
108
+ export type Publisher<T, TData = unknown> = {
109
+ send: (target: T, props: PublisherSendProps<TData>) => Promise<boolean>;
110
+ broadcast: (props: PublisherBroadcastProps<T, TData>) => Promise<BroadcastResult<T>>;
111
+ };
112
+ export {};
113
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/apigw/types.ts"],"names":[],"mappings":"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"}
@@ -6,13 +6,13 @@ import * as _t from "./types";
6
6
  * @param fn
7
7
  * @returns
8
8
  */
9
- export declare const createRestHandler: (fn: (event: import("aws-lambda").APIGatewayProxyEventV2) => Promise<_t.ApigwResult> | _t.ApigwResult) => (event: import("aws-lambda").APIGatewayProxyEventV2) => Promise<_t.Response | _t.ApigwResult>;
9
+ export declare const createRestHandler: _t.RestHandlerFactory;
10
10
  /**
11
11
  * Same as rest handler but just receives a websocket event.
12
12
  * @param fn
13
13
  * @returns
14
14
  */
15
- export declare const createWebsocketHandler: (fn: (event: import("aws-lambda").APIGatewayProxyEvent) => Promise<_t.ApigwResult> | _t.ApigwResult) => (event: import("aws-lambda").APIGatewayProxyEvent) => Promise<_t.Response | _t.ApigwResult>;
15
+ export declare const createWebsocketHandler: _t.WebsocketHandlerFactory;
16
16
  /**
17
17
  * Creates a batch failures tracker for SQS handlers.
18
18
  * Provides a simple `add(id)` method instead of pushing objects.
@@ -62,5 +62,5 @@ export declare const withBatchFailures: () => {
62
62
  * });
63
63
  * ```
64
64
  */
65
- export declare const createSqsHandler: (fn: _t.SqsHandlerFn) => _t.SqsHandlerFn;
65
+ export declare const createSqsHandler: _t.SqsHandlerFactory;
66
66
  //# sourceMappingURL=domain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/lambda/domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,6GA0EkC,kDAAO,0CA1EE,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,2GAmE6B,gDAAO,0CAlEzB,CAAC;AAE/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,iBAAiB;IAG1B,0GAA0G;0BACpF,MAAM;IAG5B,0CAA0C;;CAG7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,gBAAgB,GAC1B,IAAI,EAAE,CAAC,YAAY,KAAG,EAAE,CAAC,YAazB,CAAC"}
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/lambda/domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,kBACO,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,uBACM,CAAC;AAE/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,iBAAiB;IAG1B,0GAA0G;0BACpF,MAAM;IAG5B,0CAA0C;;CAG7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,iBAc/B,CAAC"}
@@ -30,5 +30,5 @@ responseBody?: T, opts?: _t.ResponseOptions) => _t.Response;
30
30
  * handle things like HTTP errors and Arktype validation errors,
31
31
  * @returns
32
32
  */
33
- export declare const createHandlerFactory: <T extends _t.ApigwEvent | _t.WebsocketEvent>() => (fn: (event: T) => Promise<_t.ApigwResult> | _t.ApigwResult) => (event: T) => Promise<_t.Response | _t.ApigwResult>;
33
+ export declare const createHandlerFactory: <T extends _t.ApigwEvent | _t.WebsocketEvent>() => _t.HandlerFactory<T>;
34
34
  //# sourceMappingURL=fns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/lambda/fns.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,OAAO,EAAE,UAAU,EAAE,CAAC,eAAe,KAAG,MAK3E,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,OAAM,EAAE,CAAC,eAAoB;;;;;;CAU7D,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,GAAG,OAAO;AAClC,qCAAqC;AACrC,eAAe,CAAC,EAChB,OAAO,EAAE,CAAC,eAAe,KACxB,EAAE,CAAC,QAWL,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC9B,CAAC,SAAS,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,cAAc,QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,MACpD,OAAO,CAAC,0CAsBd,CAAC"}
1
+ {"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/lambda/fns.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,OAAO,EAAE,UAAU,EAAE,CAAC,eAAe,KAAG,MAK3E,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,OAAM,EAAE,CAAC,eAAoB;;;;;;CAU7D,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,GAAG,OAAO;AAClC,qCAAqC;AACrC,eAAe,CAAC,EAChB,OAAO,EAAE,CAAC,eAAe,KACxB,EAAE,CAAC,QAWL,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC9B,CAAC,SAAS,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,cAAc,OAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAwBnE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { HttpError } from "./literals";
2
2
  export { response } from "./fns";
3
3
  export * from "./domain";
4
+ export * from "./types";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/lambda/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/lambda/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -26,10 +26,21 @@ export type Response = {
26
26
  export type WebsocketEvent = APIGatewayProxyEvent;
27
27
  export type ApigwEvent = APIGatewayProxyEventV2;
28
28
  export type ApigwResult = APIGatewayProxyResultV2;
29
+ export type HandlerResult = Response | ApigwResult;
30
+ export type HandlerFn<T extends ApigwEvent | WebsocketEvent> = (event: T) => Promise<ApigwResult> | ApigwResult;
31
+ export type Handler<T extends ApigwEvent | WebsocketEvent> = (event: T) => Promise<HandlerResult>;
32
+ export type HandlerFactory<T extends ApigwEvent | WebsocketEvent> = (fn: HandlerFn<T>) => Handler<T>;
33
+ export type RestHandlerFn = HandlerFn<ApigwEvent>;
34
+ export type RestHandler = Handler<ApigwEvent>;
35
+ export type RestHandlerFactory = HandlerFactory<ApigwEvent>;
36
+ export type WebsocketHandlerFn = HandlerFn<WebsocketEvent>;
37
+ export type WebsocketHandler = Handler<WebsocketEvent>;
38
+ export type WebsocketHandlerFactory = HandlerFactory<WebsocketEvent>;
29
39
  export type SqsEvent = SQSEvent;
30
40
  export type SqsContext = Context;
31
41
  export type SQSHandler = AwsSqsHandler;
32
42
  export type SqsCallback = Callback<SQSBatchResponse | void>;
43
+ export type SqsHandlerFactory = (fn: SqsHandlerFn) => SqsHandlerFn;
33
44
  export type ResponseOptions = {
34
45
  /**
35
46
  * `200` - **Ok**: request succeeded and there is a response payload.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/lambda/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,UAAU,IAAI,aAAa,EAC3B,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,yDAAyD;AACzD,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEhD,+DAA+D;AAC/D,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;IACtD,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;CAC1C,CAAC,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,cAAc,EAAE,MAAM,CAAC;QACvB,6BAA6B,EAAE,MAAM,CAAC;QACtC,8BAA8B,EAAE,MAAM,CAAC;QACvC,8BAA8B,EAAE,MAAM,CAAC;QACvC,kCAAkC,EAAE,MAAM,GAAG,OAAO,CAAC;KACtD,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAElD,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAChC,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;AACjC,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACzE,iBAAiB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAE9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAE/B,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;SAGK;IACL,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,uGAAuG;IACvG,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/lambda/types.ts"],"names":[],"mappings":"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"}