@betterportal/tunnels 1.0.24 → 1.0.26

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.
Files changed (160) hide show
  1. package/lib/.bsb/clients/service-tunnels-client.d.ts +133 -0
  2. package/lib/.bsb/clients/service-tunnels-client.d.ts.map +1 -0
  3. package/lib/.bsb/clients/service-tunnels-client.js +102 -0
  4. package/lib/.bsb/clients/service-tunnels-client.js.map +1 -0
  5. package/lib/.bsb/clients/service-tunnels-proxy.d.ts +43 -0
  6. package/lib/.bsb/clients/service-tunnels-proxy.d.ts.map +1 -0
  7. package/lib/.bsb/clients/service-tunnels-proxy.js +47 -0
  8. package/lib/.bsb/clients/service-tunnels-proxy.js.map +1 -0
  9. package/lib/auth.d.ts +12 -0
  10. package/lib/auth.d.ts.map +1 -0
  11. package/lib/auth.js +59 -0
  12. package/lib/auth.js.map +1 -0
  13. package/lib/cli.d.ts +2 -0
  14. package/lib/cli.d.ts.map +1 -0
  15. package/lib/cli.js +406 -0
  16. package/lib/cli.js.map +1 -0
  17. package/lib/generated/prisma/client.d.ts +1 -0
  18. package/lib/generated/prisma/client.js +5 -0
  19. package/lib/generated/prisma/default.d.ts +1 -0
  20. package/lib/generated/prisma/default.js +5 -0
  21. package/lib/generated/prisma/edge.d.ts +1 -0
  22. package/lib/generated/prisma/edge.js +278 -0
  23. package/lib/generated/prisma/index-browser.js +304 -0
  24. package/lib/generated/prisma/index.d.ts +13885 -0
  25. package/lib/generated/prisma/index.js +278 -0
  26. package/lib/generated/prisma/package.json +144 -0
  27. package/lib/generated/prisma/query_compiler_fast_bg.js +2 -0
  28. package/lib/generated/prisma/query_compiler_fast_bg.wasm +0 -0
  29. package/lib/generated/prisma/query_compiler_fast_bg.wasm-base64.js +2 -0
  30. package/lib/generated/prisma/runtime/client.d.ts +3386 -0
  31. package/lib/generated/prisma/runtime/client.js +86 -0
  32. package/lib/generated/prisma/runtime/index-browser.d.ts +90 -0
  33. package/lib/generated/prisma/runtime/index-browser.js +6 -0
  34. package/lib/generated/prisma/runtime/wasm-compiler-edge.js +76 -0
  35. package/lib/generated/prisma/schema.prisma +142 -0
  36. package/lib/generated/prisma/wasm-edge-light-loader.mjs +5 -0
  37. package/lib/generated/prisma/wasm-worker-loader.mjs +5 -0
  38. package/lib/plugins/service-tunnels-admin/.bp-generated/registry.d.ts +3 -0
  39. package/lib/plugins/service-tunnels-admin/.bp-generated/registry.d.ts.map +1 -0
  40. package/lib/plugins/service-tunnels-admin/.bp-generated/registry.js +152 -0
  41. package/lib/plugins/service-tunnels-admin/.bp-generated/registry.js.map +1 -0
  42. package/lib/plugins/service-tunnels-admin/.bp-generated/route-runtime.d.ts +9 -0
  43. package/lib/plugins/service-tunnels-admin/.bp-generated/route-runtime.d.ts.map +1 -0
  44. package/lib/plugins/service-tunnels-admin/.bp-generated/route-runtime.js +6 -0
  45. package/lib/plugins/service-tunnels-admin/.bp-generated/route-runtime.js.map +1 -0
  46. package/lib/plugins/service-tunnels-admin/assets/brand/bettertunnels-horizontal-light.svg +18 -0
  47. package/lib/plugins/service-tunnels-admin/assets/brand/bettertunnels-square-dark-1024x1024.png +0 -0
  48. package/lib/plugins/service-tunnels-admin/assets/brand/favicon.svg +12 -0
  49. package/lib/plugins/service-tunnels-admin/betterportal-logo.png +0 -0
  50. package/lib/plugins/service-tunnels-admin/bp-routes/cli-auth/verify/GET.d.ts +20 -0
  51. package/lib/plugins/service-tunnels-admin/bp-routes/cli-auth/verify/GET.d.ts.map +1 -0
  52. package/lib/plugins/service-tunnels-admin/bp-routes/cli-auth/verify/GET.js +51 -0
  53. package/lib/plugins/service-tunnels-admin/bp-routes/cli-auth/verify/GET.js.map +1 -0
  54. package/lib/plugins/service-tunnels-admin/bp-routes/cli-auth/verify/_theme.bootstrap1/GET.d.ts +5 -0
  55. package/lib/plugins/service-tunnels-admin/bp-routes/cli-auth/verify/_theme.bootstrap1/GET.d.ts.map +1 -0
  56. package/lib/plugins/service-tunnels-admin/bp-routes/cli-auth/verify/_theme.bootstrap1/GET.js +6 -0
  57. package/lib/plugins/service-tunnels-admin/bp-routes/cli-auth/verify/_theme.bootstrap1/GET.js.map +1 -0
  58. package/lib/plugins/service-tunnels-admin/bp-routes/cli-auth/verify/index.d.ts +7 -0
  59. package/lib/plugins/service-tunnels-admin/bp-routes/cli-auth/verify/index.d.ts.map +1 -0
  60. package/lib/plugins/service-tunnels-admin/bp-routes/cli-auth/verify/index.js +12 -0
  61. package/lib/plugins/service-tunnels-admin/bp-routes/cli-auth/verify/index.js.map +1 -0
  62. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/GET.d.ts +40 -0
  63. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/GET.d.ts.map +1 -0
  64. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/GET.js +57 -0
  65. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/GET.js.map +1 -0
  66. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/_theme.bootstrap1/GET.d.ts +6 -0
  67. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/_theme.bootstrap1/GET.d.ts.map +1 -0
  68. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/_theme.bootstrap1/GET.js +30 -0
  69. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/_theme.bootstrap1/GET.js.map +1 -0
  70. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/_theme.bootstrap1/index.stream.d.ts +6 -0
  71. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/_theme.bootstrap1/index.stream.d.ts.map +1 -0
  72. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/_theme.bootstrap1/index.stream.js +9 -0
  73. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/_theme.bootstrap1/index.stream.js.map +1 -0
  74. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/index.d.ts +7 -0
  75. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/index.d.ts.map +1 -0
  76. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/index.js +14 -0
  77. package/lib/plugins/service-tunnels-admin/bp-routes/dashboard/index.js.map +1 -0
  78. package/lib/plugins/service-tunnels-admin/bp-routes/downloads/GET.d.ts +25 -0
  79. package/lib/plugins/service-tunnels-admin/bp-routes/downloads/GET.d.ts.map +1 -0
  80. package/lib/plugins/service-tunnels-admin/bp-routes/downloads/GET.js +34 -0
  81. package/lib/plugins/service-tunnels-admin/bp-routes/downloads/GET.js.map +1 -0
  82. package/lib/plugins/service-tunnels-admin/bp-routes/downloads/_theme.bootstrap1/GET.d.ts +5 -0
  83. package/lib/plugins/service-tunnels-admin/bp-routes/downloads/_theme.bootstrap1/GET.d.ts.map +1 -0
  84. package/lib/plugins/service-tunnels-admin/bp-routes/downloads/_theme.bootstrap1/GET.js +5 -0
  85. package/lib/plugins/service-tunnels-admin/bp-routes/downloads/_theme.bootstrap1/GET.js.map +1 -0
  86. package/lib/plugins/service-tunnels-admin/bp-routes/downloads/index.d.ts +7 -0
  87. package/lib/plugins/service-tunnels-admin/bp-routes/downloads/index.d.ts.map +1 -0
  88. package/lib/plugins/service-tunnels-admin/bp-routes/downloads/index.js +12 -0
  89. package/lib/plugins/service-tunnels-admin/bp-routes/downloads/index.js.map +1 -0
  90. package/lib/plugins/service-tunnels-admin/bp-routes/landing/GET.d.ts +35 -0
  91. package/lib/plugins/service-tunnels-admin/bp-routes/landing/GET.d.ts.map +1 -0
  92. package/lib/plugins/service-tunnels-admin/bp-routes/landing/GET.js +52 -0
  93. package/lib/plugins/service-tunnels-admin/bp-routes/landing/GET.js.map +1 -0
  94. package/lib/plugins/service-tunnels-admin/bp-routes/landing/_theme.bootstrap1/GET.d.ts +5 -0
  95. package/lib/plugins/service-tunnels-admin/bp-routes/landing/_theme.bootstrap1/GET.d.ts.map +1 -0
  96. package/lib/plugins/service-tunnels-admin/bp-routes/landing/_theme.bootstrap1/GET.js +5 -0
  97. package/lib/plugins/service-tunnels-admin/bp-routes/landing/_theme.bootstrap1/GET.js.map +1 -0
  98. package/lib/plugins/service-tunnels-admin/bp-routes/landing/index.d.ts +7 -0
  99. package/lib/plugins/service-tunnels-admin/bp-routes/landing/index.d.ts.map +1 -0
  100. package/lib/plugins/service-tunnels-admin/bp-routes/landing/index.js +12 -0
  101. package/lib/plugins/service-tunnels-admin/bp-routes/landing/index.js.map +1 -0
  102. package/lib/plugins/service-tunnels-admin/bp-routes/tunnels/GET.d.ts +39 -0
  103. package/lib/plugins/service-tunnels-admin/bp-routes/tunnels/GET.d.ts.map +1 -0
  104. package/lib/plugins/service-tunnels-admin/bp-routes/tunnels/GET.js +46 -0
  105. package/lib/plugins/service-tunnels-admin/bp-routes/tunnels/GET.js.map +1 -0
  106. package/lib/plugins/service-tunnels-admin/bp-routes/tunnels/_theme.bootstrap1/GET.d.ts +5 -0
  107. package/lib/plugins/service-tunnels-admin/bp-routes/tunnels/_theme.bootstrap1/GET.d.ts.map +1 -0
  108. package/lib/plugins/service-tunnels-admin/bp-routes/tunnels/_theme.bootstrap1/GET.js +5 -0
  109. package/lib/plugins/service-tunnels-admin/bp-routes/tunnels/_theme.bootstrap1/GET.js.map +1 -0
  110. package/lib/plugins/service-tunnels-admin/bp-routes/tunnels/index.d.ts +7 -0
  111. package/lib/plugins/service-tunnels-admin/bp-routes/tunnels/index.d.ts.map +1 -0
  112. package/lib/plugins/service-tunnels-admin/bp-routes/tunnels/index.js +14 -0
  113. package/lib/plugins/service-tunnels-admin/bp-routes/tunnels/index.js.map +1 -0
  114. package/lib/plugins/service-tunnels-admin/brand-assets.d.ts +7 -0
  115. package/lib/plugins/service-tunnels-admin/brand-assets.d.ts.map +1 -0
  116. package/lib/plugins/service-tunnels-admin/brand-assets.js +24 -0
  117. package/lib/plugins/service-tunnels-admin/brand-assets.js.map +1 -0
  118. package/lib/plugins/service-tunnels-admin/index.d.ts +64 -0
  119. package/lib/plugins/service-tunnels-admin/index.d.ts.map +1 -0
  120. package/lib/plugins/service-tunnels-admin/index.js +116 -0
  121. package/lib/plugins/service-tunnels-admin/index.js.map +1 -0
  122. package/lib/plugins/service-tunnels-client/ids.d.ts +6 -0
  123. package/lib/plugins/service-tunnels-client/ids.d.ts.map +1 -0
  124. package/lib/plugins/service-tunnels-client/ids.js +17 -0
  125. package/lib/plugins/service-tunnels-client/ids.js.map +1 -0
  126. package/lib/plugins/service-tunnels-client/index.d.ts +166 -0
  127. package/lib/plugins/service-tunnels-client/index.d.ts.map +1 -0
  128. package/lib/plugins/service-tunnels-client/index.js +733 -0
  129. package/lib/plugins/service-tunnels-client/index.js.map +1 -0
  130. package/lib/plugins/service-tunnels-client/registry.d.ts +39 -0
  131. package/lib/plugins/service-tunnels-client/registry.d.ts.map +1 -0
  132. package/lib/plugins/service-tunnels-client/registry.js +20 -0
  133. package/lib/plugins/service-tunnels-client/registry.js.map +1 -0
  134. package/lib/plugins/service-tunnels-client/schemas.d.ts +91 -0
  135. package/lib/plugins/service-tunnels-client/schemas.d.ts.map +1 -0
  136. package/lib/plugins/service-tunnels-client/schemas.js +73 -0
  137. package/lib/plugins/service-tunnels-client/schemas.js.map +1 -0
  138. package/lib/plugins/service-tunnels-proxy/http.d.ts +5 -0
  139. package/lib/plugins/service-tunnels-proxy/http.d.ts.map +1 -0
  140. package/lib/plugins/service-tunnels-proxy/http.js +125 -0
  141. package/lib/plugins/service-tunnels-proxy/http.js.map +1 -0
  142. package/lib/plugins/service-tunnels-proxy/index.d.ts +85 -0
  143. package/lib/plugins/service-tunnels-proxy/index.d.ts.map +1 -0
  144. package/lib/plugins/service-tunnels-proxy/index.js +288 -0
  145. package/lib/plugins/service-tunnels-proxy/index.js.map +1 -0
  146. package/lib/plugins/service-tunnels-proxy/verification.d.ts +31 -0
  147. package/lib/plugins/service-tunnels-proxy/verification.d.ts.map +1 -0
  148. package/lib/plugins/service-tunnels-proxy/verification.js +211 -0
  149. package/lib/plugins/service-tunnels-proxy/verification.js.map +1 -0
  150. package/lib/prisma.d.ts +7 -0
  151. package/lib/prisma.d.ts.map +1 -0
  152. package/lib/prisma.js +149 -0
  153. package/lib/prisma.js.map +1 -0
  154. package/lib/schemas/service-tunnels-admin.json +129 -0
  155. package/lib/schemas/service-tunnels-admin.plugin.json +140 -0
  156. package/lib/schemas/service-tunnels-client.json +320 -0
  157. package/lib/schemas/service-tunnels-client.plugin.json +97 -0
  158. package/lib/schemas/service-tunnels-proxy.json +160 -0
  159. package/lib/schemas/service-tunnels-proxy.plugin.json +123 -0
  160. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-tunnels-admin/bp-routes/tunnels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,eAAO,MAAM,KAAK,kBAAkB,CAAC;AACrC,eAAO,MAAM,WAAW,kDAAkD,CAAC;AAE3E,eAAO,MAAM,IAAI,EAAE,kBAKlB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAGxB,CAAC"}
@@ -0,0 +1,14 @@
1
+ export const viewId = "better-tunnels.tunnels";
2
+ export const title = "BetterTunnels";
3
+ export const description = "Tunnel sessions, status, and recent activity.";
4
+ export const auth = {
5
+ required: true,
6
+ permissions: [
7
+ { serviceId: "service.betterportal.tunnels", viewId, permissions: ["read"] }
8
+ ]
9
+ };
10
+ export const cacheHints = {
11
+ ttlSeconds: 5,
12
+ varyBy: ["accept", "authorization", "x-bp-tenant-id", "x-bp-app-id"]
13
+ };
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/plugins/service-tunnels-admin/bp-routes/tunnels/index.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,MAAM,GAAG,wBAAwB,CAAC;AAC/C,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG,+CAA+C,CAAC;AAE3E,MAAM,CAAC,MAAM,IAAI,GAAuB;IACtC,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE;QACX,EAAE,SAAS,EAAE,8BAA8B,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE;KAC7E;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,UAAU,EAAE,CAAC;IACb,MAAM,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,CAAC;CACrE,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type BrandAssets = {
2
+ logoUrl: string;
3
+ markUrl: string;
4
+ faviconUrl: string;
5
+ };
6
+ export declare function loadBrandAssets(): Promise<BrandAssets>;
7
+ //# sourceMappingURL=brand-assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-assets.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-tunnels-admin/brand-assets.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAMF,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAgB5D"}
@@ -0,0 +1,24 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ let cached;
5
+ const assetRoot = join(dirname(fileURLToPath(import.meta.url)), "assets/brand");
6
+ export async function loadBrandAssets() {
7
+ if (cached)
8
+ return cached;
9
+ const [logo, mark, favicon] = await Promise.all([
10
+ readFile(join(assetRoot, "bettertunnels-horizontal-light.svg"), "utf8"),
11
+ readFile(join(assetRoot, "bettertunnels-square-dark-1024x1024.png")),
12
+ readFile(join(assetRoot, "favicon.svg"), "utf8")
13
+ ]);
14
+ cached = {
15
+ logoUrl: svgDataUrl(logo),
16
+ markUrl: `data:image/png;base64,${mark.toString("base64")}`,
17
+ faviconUrl: svgDataUrl(favicon)
18
+ };
19
+ return cached;
20
+ }
21
+ function svgDataUrl(value) {
22
+ return `data:image/svg+xml;base64,${Buffer.from(value).toString("base64")}`;
23
+ }
24
+ //# sourceMappingURL=brand-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-assets.js","sourceRoot":"","sources":["../../../src/plugins/service-tunnels-admin/brand-assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAQzC,IAAI,MAA+B,CAAC;AAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AAEhF,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,oCAAoC,CAAC,EAAE,MAAM,CAAC;QACvE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,yCAAyC,CAAC,CAAC;QACpE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC;KACjD,CAAC,CAAC;IAEH,MAAM,GAAG;QACP,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC;QACzB,OAAO,EAAE,yBAAyB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC3D,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC;KAChC,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,6BAA6B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { type BSBServiceConstructor, type Observable } from "@bsb/base";
2
+ import * as av from "anyvali";
3
+ import { BPService, type BPServiceDefinition } from "@betterportal/plugin-bsb";
4
+ declare const Config: import("@bsb/base").BSBPluginConfigClass<av.ObjectSchema<{
5
+ host: av.StringSchema;
6
+ port: av.IntSchema;
7
+ database: av.ObjectSchema<{
8
+ connectionString: av.StringSchema;
9
+ }>;
10
+ betterportal: av.OptionalSchema<av.ObjectSchema<{
11
+ bpConfigPath: av.OptionalSchema<av.StringSchema>;
12
+ configApiToken: av.OptionalSchema<av.StringSchema>;
13
+ configEncryptionKey: av.OptionalSchema<av.StringSchema>;
14
+ controlPlaneUrl: av.OptionalSchema<av.StringSchema>;
15
+ serviceApiKey: av.OptionalSchema<av.StringSchema>;
16
+ bootstrapStatePath: av.StringSchema;
17
+ scopedConfigCachePath: av.StringSchema;
18
+ trustedProxyHeaders: av.BoolSchema;
19
+ cfProxy: av.BoolSchema;
20
+ trustedProxyIps: av.ArraySchema<av.StringSchema>;
21
+ }>>;
22
+ }>>;
23
+ declare const EventSchemas: {
24
+ readonly emitEvents: {};
25
+ readonly onEvents: {};
26
+ readonly emitReturnableEvents: {};
27
+ readonly onReturnableEvents: {};
28
+ readonly emitBroadcast: {};
29
+ readonly onBroadcast: {};
30
+ };
31
+ export declare class Plugin extends BPService<InstanceType<typeof Config>, typeof EventSchemas> {
32
+ static Config: import("@bsb/base").BSBPluginConfigClass<av.ObjectSchema<{
33
+ host: av.StringSchema;
34
+ port: av.IntSchema;
35
+ database: av.ObjectSchema<{
36
+ connectionString: av.StringSchema;
37
+ }>;
38
+ betterportal: av.OptionalSchema<av.ObjectSchema<{
39
+ bpConfigPath: av.OptionalSchema<av.StringSchema>;
40
+ configApiToken: av.OptionalSchema<av.StringSchema>;
41
+ configEncryptionKey: av.OptionalSchema<av.StringSchema>;
42
+ controlPlaneUrl: av.OptionalSchema<av.StringSchema>;
43
+ serviceApiKey: av.OptionalSchema<av.StringSchema>;
44
+ bootstrapStatePath: av.StringSchema;
45
+ scopedConfigCachePath: av.StringSchema;
46
+ trustedProxyHeaders: av.BoolSchema;
47
+ cfProxy: av.BoolSchema;
48
+ trustedProxyIps: av.ArraySchema<av.StringSchema>;
49
+ }>>;
50
+ }>>;
51
+ static EventSchemas: {
52
+ readonly emitEvents: {};
53
+ readonly onEvents: {};
54
+ readonly emitReturnableEvents: {};
55
+ readonly onReturnableEvents: {};
56
+ readonly emitBroadcast: {};
57
+ readonly onBroadcast: {};
58
+ };
59
+ constructor(cfg: BSBServiceConstructor<InstanceType<typeof Config>, typeof EventSchemas>);
60
+ init(obs: Observable): Promise<void>;
61
+ protected definition(): BPServiceDefinition;
62
+ }
63
+ export { Config, EventSchemas };
64
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-tunnels-admin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EAGhB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAA4B,SAAS,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAazG,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;GAQX,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;CAOhB,CAAC;AA6DH,qBAAa,MAAO,SAAQ,SAAS,CAAC,YAAY,CAAC,OAAO,MAAM,CAAC,EAAE,OAAO,YAAY,CAAC;IACrF,MAAM,CAAC,MAAM;;;;;;;;;;;;;;;;;;QAAU;IACvB,MAAM,CAAC,YAAY;;;;;;;MAAgB;gBAEvB,GAAG,EAAE,qBAAqB,CAAC,YAAY,CAAC,OAAO,MAAM,CAAC,EAAE,OAAO,YAAY,CAAC;IAIlF,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,SAAS,CAAC,UAAU,IAAI,mBAAmB;CAkB5C;AAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,116 @@
1
+ import { createConfigSchema, createEventSchemas } from "@bsb/base";
2
+ import * as av from "anyvali";
3
+ import { BetterPortalConfigSchema, BPService } from "@betterportal/plugin-bsb";
4
+ import { registry } from "./.bp-generated/registry.js";
5
+ import { initializePrisma } from "../../prisma.js";
6
+ const PluginConfigSchema = av.object({
7
+ host: av.string().minLength(1).default("0.0.0.0"),
8
+ port: av.int().min(1).default(8083),
9
+ database: av.object({
10
+ connectionString: av.string().minLength(1).describe("PostgreSQL connection string")
11
+ }, { unknownKeys: "strip" }).describe("Database configuration"),
12
+ betterportal: BetterPortalConfigSchema
13
+ }, { unknownKeys: "strip" });
14
+ const Config = createConfigSchema({
15
+ name: "service-tunnels-admin",
16
+ description: "BetterPortal public and management UI for BetterTunnels",
17
+ image: "./betterportal-logo.png",
18
+ tags: ["betterportal", "web", "management", "tunnels"]
19
+ }, PluginConfigSchema);
20
+ const EventSchemas = createEventSchemas({
21
+ emitEvents: {},
22
+ onEvents: {},
23
+ emitReturnableEvents: {},
24
+ onReturnableEvents: {},
25
+ emitBroadcast: {},
26
+ onBroadcast: {}
27
+ });
28
+ const ConfigSchemas = [
29
+ {
30
+ id: "better-tunnels.tenant",
31
+ title: "BetterTunnels",
32
+ description: "Tenant-level BetterTunnels settings.",
33
+ scope: "tenant",
34
+ jsonSchema: {
35
+ type: "object",
36
+ properties: {
37
+ mainAuthAppPublicUrl: { type: "string" },
38
+ mainAuthAppId: { type: "string" }
39
+ },
40
+ required: ["mainAuthAppPublicUrl"]
41
+ },
42
+ groups: [
43
+ {
44
+ id: "cli-auth",
45
+ title: "CLI authentication",
46
+ description: "The BetterPortal app used for BetterTunnels CLI login.",
47
+ order: 10
48
+ }
49
+ ],
50
+ fields: [
51
+ {
52
+ key: "mainAuthAppPublicUrl",
53
+ title: "Main auth app public URL",
54
+ description: "Public BetterPortal app URL used to start CLI authentication.",
55
+ scope: "tenant",
56
+ visibility: "protected",
57
+ ownership: "bp",
58
+ sourceOfTruth: "bp",
59
+ groupId: "cli-auth",
60
+ order: 10,
61
+ required: true,
62
+ ui: {
63
+ control: "url",
64
+ placeholder: "https://betterportal.cloud"
65
+ }
66
+ },
67
+ {
68
+ key: "mainAuthAppId",
69
+ title: "Main auth app id",
70
+ description: "Optional BetterPortal app id to enforce on CLI verification.",
71
+ scope: "tenant",
72
+ visibility: "protected",
73
+ ownership: "bp",
74
+ sourceOfTruth: "bp",
75
+ groupId: "cli-auth",
76
+ order: 20,
77
+ required: false,
78
+ ui: {
79
+ control: "text",
80
+ placeholder: "app id"
81
+ }
82
+ }
83
+ ]
84
+ }
85
+ ];
86
+ export class Plugin extends BPService {
87
+ static Config = Config;
88
+ static EventSchemas = EventSchemas;
89
+ constructor(cfg) {
90
+ super({ ...cfg, eventSchemas: EventSchemas });
91
+ }
92
+ async init(obs) {
93
+ await initializePrisma(this.config.database.connectionString, obs);
94
+ await super.init(obs);
95
+ }
96
+ definition() {
97
+ return {
98
+ manifest: {
99
+ pluginId: "service.betterportal.tunnels",
100
+ title: "BetterTunnels",
101
+ description: "Public site and management surface for BetterTunnels.",
102
+ category: "service",
103
+ capabilities: [
104
+ "tunnels.public-landing",
105
+ "tunnels.management",
106
+ "tunnels.observability",
107
+ "tunnels.client-auth"
108
+ ],
109
+ configSchemas: ConfigSchemas
110
+ },
111
+ registry
112
+ };
113
+ }
114
+ }
115
+ export { Config, EventSchemas };
116
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/service-tunnels-admin/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function randomPrefix(): string;
2
+ export declare function hashValue(value: string): string;
3
+ export declare function normalizeHostPart(value: string): string;
4
+ export declare function buildSubdomain(prefix: string, port: number, host: string): string;
5
+ export declare function buildTunnelSubdomain(prefix: string, port: number, creatorIp: string): string;
6
+ //# sourceMappingURL=ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-tunnels-client/ids.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5F"}
@@ -0,0 +1,17 @@
1
+ import { createHash, randomBytes } from "node:crypto";
2
+ export function randomPrefix() {
3
+ return randomBytes(4).toString("base64url").toLowerCase().replace(/[^a-z0-9]/g, "").slice(0, 6).padEnd(6, "0");
4
+ }
5
+ export function hashValue(value) {
6
+ return createHash("sha256").update(value).digest("hex");
7
+ }
8
+ export function normalizeHostPart(value) {
9
+ return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 40) || "host";
10
+ }
11
+ export function buildSubdomain(prefix, port, host) {
12
+ return `${prefix}-port${port}-${normalizeHostPart(host)}`;
13
+ }
14
+ export function buildTunnelSubdomain(prefix, port, creatorIp) {
15
+ return buildSubdomain(prefix, port, creatorIp);
16
+ }
17
+ //# sourceMappingURL=ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids.js","sourceRoot":"","sources":["../../../src/plugins/service-tunnels-client/ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,UAAU,YAAY;IAC1B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACjH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,IAAY,EAAE,IAAY;IACvE,OAAO,GAAG,MAAM,QAAQ,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,IAAY,EAAE,SAAiB;IAClF,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,166 @@
1
+ import { BSBService, type BSBServiceConstructor, type Observable } from "@bsb/base";
2
+ import * as av from "anyvali";
3
+ export declare const Config: import("@bsb/base").BSBPluginConfigClass<av.ObjectSchema<{
4
+ database: av.ObjectSchema<{
5
+ connectionString: av.StringSchema;
6
+ }>;
7
+ port: av.NumberSchema;
8
+ domain: av.StringSchema;
9
+ publicUrl: av.StringSchema;
10
+ authAppBaseUrl: av.StringSchema;
11
+ authVerifyPath: av.StringSchema;
12
+ }>>;
13
+ export declare const EventSchemas: {
14
+ readonly emitEvents: {};
15
+ readonly onEvents: {
16
+ readonly "ws.toOrigin": {
17
+ input: av.ObjectSchema<{
18
+ publicServerId: av.StringSchema;
19
+ publicSocketId: av.StringSchema;
20
+ hostname: av.StringSchema;
21
+ path: av.StringSchema;
22
+ frameType: av.StringSchema;
23
+ event: av.OptionalSchema<av.StringSchema>;
24
+ body: av.OptionalSchema<av.StringSchema>;
25
+ }>;
26
+ description?: string;
27
+ readonly __brand: "fire-and-forget";
28
+ };
29
+ readonly "proxy.metrics": {
30
+ input: av.ObjectSchema<{
31
+ hostname: av.StringSchema;
32
+ requestId: av.StringSchema;
33
+ totalMs: import("@bsb/base").BSBType;
34
+ clientApiRoundtripMs: av.OptionalSchema<import("@bsb/base").BSBType>;
35
+ cliOverheadMs: av.OptionalSchema<import("@bsb/base").BSBType>;
36
+ originMs: av.OptionalSchema<import("@bsb/base").BSBType>;
37
+ internalServerMs: av.OptionalSchema<import("@bsb/base").BSBType>;
38
+ }>;
39
+ description?: string;
40
+ readonly __brand: "fire-and-forget";
41
+ };
42
+ };
43
+ readonly emitReturnableEvents: {};
44
+ readonly onReturnableEvents: {
45
+ readonly "proxy.request": {
46
+ input: av.ObjectSchema<{
47
+ hostname: av.StringSchema;
48
+ method: av.StringSchema;
49
+ path: av.StringSchema;
50
+ headers: av.RecordSchema<av.StringSchema>;
51
+ body: av.OptionalSchema<av.StringSchema>;
52
+ webStartedAt: import("@bsb/base").BSBType;
53
+ }>;
54
+ output: av.ObjectSchema<{
55
+ requestId: av.StringSchema;
56
+ ownerServerId: av.StringSchema;
57
+ status: import("@bsb/base").BSBType;
58
+ headers: av.RecordSchema<av.StringSchema>;
59
+ body: av.StringSchema;
60
+ webStartedAt: import("@bsb/base").BSBType;
61
+ clientApiRoundtripMs: import("@bsb/base").BSBType;
62
+ cliOverheadMs: av.OptionalSchema<import("@bsb/base").BSBType>;
63
+ originMs: av.OptionalSchema<import("@bsb/base").BSBType>;
64
+ }>;
65
+ description?: string;
66
+ defaultTimeout?: number;
67
+ readonly __brand: "returnable";
68
+ };
69
+ };
70
+ readonly emitBroadcast: {};
71
+ readonly onBroadcast: {};
72
+ };
73
+ export declare class Plugin extends BSBService<InstanceType<typeof Config>, typeof EventSchemas> {
74
+ static Config: import("@bsb/base").BSBPluginConfigClass<av.ObjectSchema<{
75
+ database: av.ObjectSchema<{
76
+ connectionString: av.StringSchema;
77
+ }>;
78
+ port: av.NumberSchema;
79
+ domain: av.StringSchema;
80
+ publicUrl: av.StringSchema;
81
+ authAppBaseUrl: av.StringSchema;
82
+ authVerifyPath: av.StringSchema;
83
+ }>>;
84
+ static EventSchemas: {
85
+ readonly emitEvents: {};
86
+ readonly onEvents: {
87
+ readonly "ws.toOrigin": {
88
+ input: av.ObjectSchema<{
89
+ publicServerId: av.StringSchema;
90
+ publicSocketId: av.StringSchema;
91
+ hostname: av.StringSchema;
92
+ path: av.StringSchema;
93
+ frameType: av.StringSchema;
94
+ event: av.OptionalSchema<av.StringSchema>;
95
+ body: av.OptionalSchema<av.StringSchema>;
96
+ }>;
97
+ description?: string;
98
+ readonly __brand: "fire-and-forget";
99
+ };
100
+ readonly "proxy.metrics": {
101
+ input: av.ObjectSchema<{
102
+ hostname: av.StringSchema;
103
+ requestId: av.StringSchema;
104
+ totalMs: import("@bsb/base").BSBType;
105
+ clientApiRoundtripMs: av.OptionalSchema<import("@bsb/base").BSBType>;
106
+ cliOverheadMs: av.OptionalSchema<import("@bsb/base").BSBType>;
107
+ originMs: av.OptionalSchema<import("@bsb/base").BSBType>;
108
+ internalServerMs: av.OptionalSchema<import("@bsb/base").BSBType>;
109
+ }>;
110
+ description?: string;
111
+ readonly __brand: "fire-and-forget";
112
+ };
113
+ };
114
+ readonly emitReturnableEvents: {};
115
+ readonly onReturnableEvents: {
116
+ readonly "proxy.request": {
117
+ input: av.ObjectSchema<{
118
+ hostname: av.StringSchema;
119
+ method: av.StringSchema;
120
+ path: av.StringSchema;
121
+ headers: av.RecordSchema<av.StringSchema>;
122
+ body: av.OptionalSchema<av.StringSchema>;
123
+ webStartedAt: import("@bsb/base").BSBType;
124
+ }>;
125
+ output: av.ObjectSchema<{
126
+ requestId: av.StringSchema;
127
+ ownerServerId: av.StringSchema;
128
+ status: import("@bsb/base").BSBType;
129
+ headers: av.RecordSchema<av.StringSchema>;
130
+ body: av.StringSchema;
131
+ webStartedAt: import("@bsb/base").BSBType;
132
+ clientApiRoundtripMs: import("@bsb/base").BSBType;
133
+ cliOverheadMs: av.OptionalSchema<import("@bsb/base").BSBType>;
134
+ originMs: av.OptionalSchema<import("@bsb/base").BSBType>;
135
+ }>;
136
+ description?: string;
137
+ defaultTimeout?: number;
138
+ readonly __brand: "returnable";
139
+ };
140
+ };
141
+ readonly emitBroadcast: {};
142
+ readonly onBroadcast: {};
143
+ };
144
+ readonly initBeforePlugins: string[];
145
+ readonly initAfterPlugins: string[];
146
+ readonly runBeforePlugins: string[];
147
+ readonly runAfterPlugins: string[];
148
+ private readonly registry;
149
+ private readonly app;
150
+ private readonly server;
151
+ private readonly wss;
152
+ private readonly web;
153
+ private pluginPackageVersion;
154
+ constructor(cfg: BSBServiceConstructor<InstanceType<typeof Config>, typeof EventSchemas>);
155
+ init(obs: Observable): Promise<void>;
156
+ run(obs: Observable): Promise<void>;
157
+ dispose(): Promise<void>;
158
+ private handleTunnelSocket;
159
+ private proxyRequest;
160
+ private handleClientFrame;
161
+ private resetIdleTimer;
162
+ private failPending;
163
+ private clearPendingTimers;
164
+ }
165
+ export declare function buildProxyResponse(body: Buffer, status: number, headers: HeadersInit): Response;
166
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-tunnels-client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EAOhB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAuB9B,eAAO,MAAM,MAAM;;;;;;;;;GAgBlB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDvB,CAAC;AAEH,qBAAa,MAAO,SAAQ,UAAU,CAAC,YAAY,CAAC,OAAO,MAAM,CAAC,EAAE,OAAO,YAAY,CAAC;IACtF,MAAM,CAAC,MAAM;;;;;;;;;QAAU;IACvB,MAAM,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAgB;IACnC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAM;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAM;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAM;IACzC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAM;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,oBAAoB,CAAW;gBAE3B,GAAG,EAAE,qBAAqB,CAAC,YAAY,CAAC,OAAO,MAAM,CAAC,EAAE,OAAO,YAAY,CAAC;IAQlF,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA+MpC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAehB,kBAAkB;YAuKlB,YAAY;IA0E1B,OAAO,CAAC,iBAAiB;IA0DzB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,kBAAkB;CAK3B;AAwCD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,QAAQ,CAG/F"}