@rpcbase/server 0.600.0 → 0.601.0
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/{email-Co1GNjlT.js → email-CK8NNDQY.js} +48 -24
- package/dist/email-CK8NNDQY.js.map +1 -0
- package/dist/email.d.ts +9 -0
- package/dist/email.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +148 -4
- package/dist/index.js.map +1 -1
- package/dist/initServer.d.ts.map +1 -1
- package/dist/notifications.js +1 -1
- package/dist/serviceWorker.d.ts +7 -0
- package/dist/serviceWorker.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/email-Co1GNjlT.js.map +0 -1
package/dist/email.d.ts
CHANGED
|
@@ -19,10 +19,19 @@ export type SendEmailResult = {
|
|
|
19
19
|
skippedReason: "missing_transport";
|
|
20
20
|
error?: undefined;
|
|
21
21
|
};
|
|
22
|
+
export type EmailTransport = {
|
|
23
|
+
send(params: SendEmailParams): Promise<SendEmailResult>;
|
|
24
|
+
};
|
|
25
|
+
export type ResendEmailTransportOptions = {
|
|
26
|
+
apiKey: string;
|
|
27
|
+
defaultFrom?: string;
|
|
28
|
+
};
|
|
22
29
|
export type EmailDeliveryErrorCode = "missing_transport" | "provider_rejected" | "provider_unconfirmed" | "transport_error";
|
|
23
30
|
export declare class EmailDeliveryError extends Error {
|
|
24
31
|
readonly code: EmailDeliveryErrorCode;
|
|
25
32
|
constructor(code: EmailDeliveryErrorCode, message: string, cause?: unknown);
|
|
26
33
|
}
|
|
34
|
+
export declare const configureEmailTransport: (transport?: EmailTransport | null) => void;
|
|
35
|
+
export declare const createResendEmailTransport: ({ apiKey, defaultFrom, }: ResendEmailTransportOptions) => EmailTransport;
|
|
27
36
|
export declare const sendEmail: (params: SendEmailParams, options?: SendEmailOptions) => Promise<SendEmailResult>;
|
|
28
37
|
//# sourceMappingURL=email.d.ts.map
|
package/dist/email.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../src/email.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC7B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACrC,CAAA;AAED,MAAM,MAAM,eAAe,GACvB;IACA,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,GACC;IACA,EAAE,EAAE,SAAS,CAAC;IACd,OAAO,EAAE,IAAI,CAAC;IACd,aAAa,EAAE,mBAAmB,CAAC;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAA;AAEH,MAAM,MAAM,sBAAsB,GAC9B,mBAAmB,GACnB,mBAAmB,GACnB,sBAAsB,GACtB,iBAAiB,CAAA;AAErB,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;gBAEzB,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAM3E;
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../src/email.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC7B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACrC,CAAA;AAED,MAAM,MAAM,eAAe,GACvB;IACA,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,GACC;IACA,EAAE,EAAE,SAAS,CAAC;IACd,OAAO,EAAE,IAAI,CAAC;IACd,aAAa,EAAE,mBAAmB,CAAC;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAA;AAEH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACzD,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAC9B,mBAAmB,GACnB,mBAAmB,GACnB,sBAAsB,GACtB,iBAAiB,CAAA;AAErB,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;gBAEzB,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAM3E;AAsBD,eAAO,MAAM,uBAAuB,GAAI,YAAY,cAAc,GAAG,IAAI,KAAG,IAG3E,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,0BAGxC,2BAA2B,KAAG,cAqDhC,CAAA;AAED,eAAO,MAAM,SAAS,GACpB,QAAQ,eAAe,EACvB,UAAS,gBAAqB,KAC7B,OAAO,CAAC,eAAe,CAuBzB,CAAA"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,cAAc,SAAS,CAAA;AACvB,cAAc,iBAAiB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as
|
|
1
|
+
import { a as __commonJSMin, i as sendEmail, n as configureEmailTransport, o as __toESM, r as createResendEmailTransport, t as EmailDeliveryError } from "./email-CK8NNDQY.js";
|
|
2
2
|
import { c as runRtsQuery, d as getDerivedKey, i as normalizeRtsQueryOptions, n as buildRtsAbilityFromRequest, o as resolveRtsRequestTenantId, r as isRtsRequestAuthorized, s as runRtsCount, t as RTS_QUERY_WINDOW_MAX_COUNT, u as syncAuthenticatedSessionMiddleware } from "./queryWindow-DP8zD0lb.js";
|
|
3
3
|
import session from "express-session";
|
|
4
4
|
import { RedisStore } from "connect-redis";
|
|
@@ -4152,6 +4152,149 @@ var developmentSessionMiddleware = (sessionMiddleware) => {
|
|
|
4152
4152
|
};
|
|
4153
4153
|
};
|
|
4154
4154
|
//#endregion
|
|
4155
|
+
//#region src/serviceWorker.ts
|
|
4156
|
+
var RPCBASE_SERVICE_WORKER_PATH = "/rpcbase-service-worker.js";
|
|
4157
|
+
var RPCBASE_SERVICE_WORKER_MESSAGE_SOURCE = "@rpcbase/service-worker";
|
|
4158
|
+
var rpcbaseServiceWorkerSource = `
|
|
4159
|
+
const MESSAGE_SOURCE = ${JSON.stringify(RPCBASE_SERVICE_WORKER_MESSAGE_SOURCE)}
|
|
4160
|
+
|
|
4161
|
+
const getSameOriginWindowClients = async () => {
|
|
4162
|
+
const windowClients = await self.clients.matchAll({ type: "window", includeUncontrolled: true })
|
|
4163
|
+
return windowClients.filter((client) => {
|
|
4164
|
+
try {
|
|
4165
|
+
return new URL(client.url).origin === self.location.origin
|
|
4166
|
+
} catch {
|
|
4167
|
+
return false
|
|
4168
|
+
}
|
|
4169
|
+
})
|
|
4170
|
+
}
|
|
4171
|
+
|
|
4172
|
+
const normalizeMessage = (value) => {
|
|
4173
|
+
if (!value || typeof value !== "object") return null
|
|
4174
|
+
if (value.source !== MESSAGE_SOURCE || typeof value.type !== "string" || !value.type.trim()) return null
|
|
4175
|
+
return {
|
|
4176
|
+
source: MESSAGE_SOURCE,
|
|
4177
|
+
type: value.type.trim(),
|
|
4178
|
+
...(value.payload === undefined ? {} : { payload: value.payload }),
|
|
4179
|
+
}
|
|
4180
|
+
}
|
|
4181
|
+
|
|
4182
|
+
const broadcastMessage = async (message, excludedClientId) => {
|
|
4183
|
+
const windowClients = await getSameOriginWindowClients()
|
|
4184
|
+
for (const client of windowClients) {
|
|
4185
|
+
if (client.id === excludedClientId) continue
|
|
4186
|
+
client.postMessage(message)
|
|
4187
|
+
}
|
|
4188
|
+
}
|
|
4189
|
+
|
|
4190
|
+
const showNotificationFromMessage = async (message) => {
|
|
4191
|
+
if (message.type !== "notifications.show") return false
|
|
4192
|
+
const payload = message.payload
|
|
4193
|
+
if (!payload || typeof payload !== "object") return false
|
|
4194
|
+
const title = typeof payload.title === "string" ? payload.title.trim() : ""
|
|
4195
|
+
if (!title) return false
|
|
4196
|
+
const options = payload.options && typeof payload.options === "object" ? payload.options : undefined
|
|
4197
|
+
await self.registration.showNotification(title, options)
|
|
4198
|
+
return true
|
|
4199
|
+
}
|
|
4200
|
+
|
|
4201
|
+
const getTargetUrl = (link, linkMode, client) => {
|
|
4202
|
+
try {
|
|
4203
|
+
if (linkMode === "merge_current_search" && client) {
|
|
4204
|
+
const currentUrl = new URL(client.url)
|
|
4205
|
+
const actionUrl = new URL(link, currentUrl)
|
|
4206
|
+
actionUrl.searchParams.forEach((value, key) => currentUrl.searchParams.set(key, value))
|
|
4207
|
+
if (actionUrl.hash) currentUrl.hash = actionUrl.hash
|
|
4208
|
+
return currentUrl.origin === self.location.origin ? currentUrl.href : null
|
|
4209
|
+
}
|
|
4210
|
+
|
|
4211
|
+
const targetUrl = new URL(link, self.location.origin)
|
|
4212
|
+
return targetUrl.origin === self.location.origin ? targetUrl.href : null
|
|
4213
|
+
} catch {
|
|
4214
|
+
return null
|
|
4215
|
+
}
|
|
4216
|
+
}
|
|
4217
|
+
|
|
4218
|
+
self.addEventListener("install", (event) => event.waitUntil(self.skipWaiting()))
|
|
4219
|
+
|
|
4220
|
+
self.addEventListener("activate", (event) => {
|
|
4221
|
+
event.waitUntil((async () => {
|
|
4222
|
+
await self.clients.claim()
|
|
4223
|
+
await broadcastMessage({ source: MESSAGE_SOURCE, type: "worker.ready" })
|
|
4224
|
+
})())
|
|
4225
|
+
})
|
|
4226
|
+
|
|
4227
|
+
self.addEventListener("message", (event) => {
|
|
4228
|
+
const message = normalizeMessage(event.data)
|
|
4229
|
+
if (!message) return
|
|
4230
|
+
|
|
4231
|
+
event.waitUntil((async () => {
|
|
4232
|
+
if (await showNotificationFromMessage(message)) return
|
|
4233
|
+
const sourceClientId = event.source && typeof event.source.id === "string"
|
|
4234
|
+
? event.source.id
|
|
4235
|
+
: undefined
|
|
4236
|
+
await broadcastMessage(message, sourceClientId)
|
|
4237
|
+
})())
|
|
4238
|
+
})
|
|
4239
|
+
|
|
4240
|
+
self.addEventListener("push", (event) => {
|
|
4241
|
+
let message = null
|
|
4242
|
+
try {
|
|
4243
|
+
message = normalizeMessage(event.data ? event.data.json() : null)
|
|
4244
|
+
} catch {
|
|
4245
|
+
return
|
|
4246
|
+
}
|
|
4247
|
+
if (!message || message.type !== "notifications.show") return
|
|
4248
|
+
event.waitUntil(showNotificationFromMessage(message))
|
|
4249
|
+
})
|
|
4250
|
+
|
|
4251
|
+
self.addEventListener("notificationclick", (event) => {
|
|
4252
|
+
event.notification.close()
|
|
4253
|
+
event.waitUntil((async () => {
|
|
4254
|
+
const data = event.notification.data && typeof event.notification.data === "object"
|
|
4255
|
+
? event.notification.data
|
|
4256
|
+
: {}
|
|
4257
|
+
const link = typeof data.link === "string" ? data.link.trim() : ""
|
|
4258
|
+
const linkMode = data.linkMode === "merge_current_search" ? "merge_current_search" : "navigate"
|
|
4259
|
+
const windowClients = await getSameOriginWindowClients()
|
|
4260
|
+
const client = windowClients.find((candidate) => candidate.focused) ?? windowClients[0]
|
|
4261
|
+
|
|
4262
|
+
if (!link) {
|
|
4263
|
+
if (client) await client.focus()
|
|
4264
|
+
return
|
|
4265
|
+
}
|
|
4266
|
+
|
|
4267
|
+
const targetUrl = getTargetUrl(link, linkMode, client)
|
|
4268
|
+
if (!targetUrl) return
|
|
4269
|
+
|
|
4270
|
+
if (client) {
|
|
4271
|
+
try {
|
|
4272
|
+
const navigatedClient = await client.navigate(targetUrl)
|
|
4273
|
+
await (navigatedClient ?? client).focus()
|
|
4274
|
+
return
|
|
4275
|
+
} catch {
|
|
4276
|
+
await self.clients.openWindow(targetUrl)
|
|
4277
|
+
return
|
|
4278
|
+
}
|
|
4279
|
+
}
|
|
4280
|
+
|
|
4281
|
+
await self.clients.openWindow(targetUrl)
|
|
4282
|
+
})())
|
|
4283
|
+
})
|
|
4284
|
+
`.trimStart();
|
|
4285
|
+
var rpcbaseServiceWorkerRequestHandler = (_req, res) => {
|
|
4286
|
+
res.set({
|
|
4287
|
+
"Cache-Control": "no-cache",
|
|
4288
|
+
"Content-Type": "application/javascript; charset=utf-8",
|
|
4289
|
+
"Service-Worker-Allowed": "/",
|
|
4290
|
+
"X-Content-Type-Options": "nosniff"
|
|
4291
|
+
});
|
|
4292
|
+
res.send(rpcbaseServiceWorkerSource);
|
|
4293
|
+
};
|
|
4294
|
+
var registerRpcbaseServiceWorkerRoute = (app) => {
|
|
4295
|
+
app.get(RPCBASE_SERVICE_WORKER_PATH, rpcbaseServiceWorkerRequestHandler);
|
|
4296
|
+
};
|
|
4297
|
+
//#endregion
|
|
4155
4298
|
//#region src/initServer.ts
|
|
4156
4299
|
process.env = {
|
|
4157
4300
|
...env,
|
|
@@ -4228,6 +4371,7 @@ var initServer = async (app, serverEnv) => {
|
|
|
4228
4371
|
}
|
|
4229
4372
|
next();
|
|
4230
4373
|
});
|
|
4374
|
+
registerRpcbaseServiceWorkerRoute(app);
|
|
4231
4375
|
metricsIngestProxyMiddleware(app);
|
|
4232
4376
|
const posthog = getPosthogClient(serverEnv);
|
|
4233
4377
|
if (posthog) {
|
|
@@ -4615,8 +4759,6 @@ async function applyRouteLoaders(req, res, dataRoutes) {
|
|
|
4615
4759
|
statusCode: 200
|
|
4616
4760
|
};
|
|
4617
4761
|
const runLoaderWithTimeout = async (route, params) => {
|
|
4618
|
-
await resolveLazyRoute(route);
|
|
4619
|
-
if (!route.loader) return null;
|
|
4620
4762
|
let timeoutId;
|
|
4621
4763
|
const timeoutPromise = new Promise((_, reject) => {
|
|
4622
4764
|
timeoutId = setTimeout(() => {
|
|
@@ -4636,6 +4778,8 @@ async function applyRouteLoaders(req, res, dataRoutes) {
|
|
|
4636
4778
|
});
|
|
4637
4779
|
const loaderPromise = (async () => {
|
|
4638
4780
|
try {
|
|
4781
|
+
await resolveLazyRoute(route);
|
|
4782
|
+
if (!route.loader) return null;
|
|
4639
4783
|
const data = await route.loader({
|
|
4640
4784
|
params,
|
|
4641
4785
|
ctx: {
|
|
@@ -5374,6 +5518,6 @@ var ssrMiddleware = ({ viteInstance, dataRoutes, errorExtraComponent, getHtmlOut
|
|
|
5374
5518
|
}
|
|
5375
5519
|
};
|
|
5376
5520
|
//#endregion
|
|
5377
|
-
export { EmailDeliveryError, bindShutdownSignals, getDerivedKey, hashPassword, hashPasswordForStorage, initServer, onShutdown, sendEmail, ssrMiddleware, verifyPasswordFromStorage };
|
|
5521
|
+
export { EmailDeliveryError, RPCBASE_SERVICE_WORKER_MESSAGE_SOURCE, RPCBASE_SERVICE_WORKER_PATH, bindShutdownSignals, configureEmailTransport, createResendEmailTransport, getDerivedKey, hashPassword, hashPasswordForStorage, initServer, onShutdown, registerRpcbaseServiceWorkerRoute, rpcbaseServiceWorkerRequestHandler, rpcbaseServiceWorkerSource, sendEmail, ssrMiddleware, verifyPasswordFromStorage };
|
|
5378
5522
|
|
|
5379
5523
|
//# sourceMappingURL=index.js.map
|