@superblocksteam/shared 0.9597.1 → 0.9598.1

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 (68) hide show
  1. package/dist/database-lifecycle/index.d.ts +7 -0
  2. package/dist/database-lifecycle/index.d.ts.map +1 -1
  3. package/dist/database-lifecycle/index.js.map +1 -1
  4. package/dist/dbfs/types.d.ts +33 -0
  5. package/dist/dbfs/types.d.ts.map +1 -1
  6. package/dist/socket/protocol.d.ts +2 -1
  7. package/dist/socket/protocol.d.ts.map +1 -1
  8. package/dist/socket/protocol.js.map +1 -1
  9. package/dist/socket/socket.test.js +37 -0
  10. package/dist/socket/socket.test.js.map +1 -1
  11. package/dist/socket/socketWithClientAuth.d.ts +1 -0
  12. package/dist/socket/socketWithClientAuth.d.ts.map +1 -1
  13. package/dist/socket/socketWithClientAuth.js +6 -1
  14. package/dist/socket/socketWithClientAuth.js.map +1 -1
  15. package/dist/socket/util.d.ts +22 -1
  16. package/dist/socket/util.d.ts.map +1 -1
  17. package/dist/socket/util.js +25 -3
  18. package/dist/socket/util.js.map +1 -1
  19. package/dist/socket/util.test.d.ts +2 -0
  20. package/dist/socket/util.test.d.ts.map +1 -0
  21. package/dist/socket/util.test.js +53 -0
  22. package/dist/socket/util.test.js.map +1 -0
  23. package/dist/types/git/index.d.ts.map +1 -1
  24. package/dist/types/git/index.js +2 -0
  25. package/dist/types/git/index.js.map +1 -1
  26. package/dist/types/git/index.test.d.ts +2 -0
  27. package/dist/types/git/index.test.d.ts.map +1 -0
  28. package/dist/types/git/index.test.js +13 -0
  29. package/dist/types/git/index.test.js.map +1 -0
  30. package/dist-esm/database-lifecycle/index.d.ts +7 -0
  31. package/dist-esm/database-lifecycle/index.d.ts.map +1 -1
  32. package/dist-esm/database-lifecycle/index.js.map +1 -1
  33. package/dist-esm/dbfs/types.d.ts +33 -0
  34. package/dist-esm/dbfs/types.d.ts.map +1 -1
  35. package/dist-esm/socket/protocol.d.ts +2 -1
  36. package/dist-esm/socket/protocol.d.ts.map +1 -1
  37. package/dist-esm/socket/protocol.js.map +1 -1
  38. package/dist-esm/socket/socket.test.js +37 -0
  39. package/dist-esm/socket/socket.test.js.map +1 -1
  40. package/dist-esm/socket/socketWithClientAuth.d.ts +1 -0
  41. package/dist-esm/socket/socketWithClientAuth.d.ts.map +1 -1
  42. package/dist-esm/socket/socketWithClientAuth.js +6 -1
  43. package/dist-esm/socket/socketWithClientAuth.js.map +1 -1
  44. package/dist-esm/socket/util.d.ts +22 -1
  45. package/dist-esm/socket/util.d.ts.map +1 -1
  46. package/dist-esm/socket/util.js +23 -2
  47. package/dist-esm/socket/util.js.map +1 -1
  48. package/dist-esm/socket/util.test.d.ts +2 -0
  49. package/dist-esm/socket/util.test.d.ts.map +1 -0
  50. package/dist-esm/socket/util.test.js +51 -0
  51. package/dist-esm/socket/util.test.js.map +1 -0
  52. package/dist-esm/types/git/index.d.ts.map +1 -1
  53. package/dist-esm/types/git/index.js +2 -0
  54. package/dist-esm/types/git/index.js.map +1 -1
  55. package/dist-esm/types/git/index.test.d.ts +2 -0
  56. package/dist-esm/types/git/index.test.d.ts.map +1 -0
  57. package/dist-esm/types/git/index.test.js +11 -0
  58. package/dist-esm/types/git/index.test.js.map +1 -0
  59. package/package.json +2 -2
  60. package/src/database-lifecycle/index.ts +8 -0
  61. package/src/dbfs/types.ts +39 -0
  62. package/src/socket/protocol.ts +8 -1
  63. package/src/socket/socket.test.ts +43 -0
  64. package/src/socket/socketWithClientAuth.ts +6 -1
  65. package/src/socket/util.test.ts +71 -0
  66. package/src/socket/util.ts +32 -2
  67. package/src/types/git/index.test.ts +15 -0
  68. package/src/types/git/index.ts +2 -0
@@ -36,5 +36,38 @@ export interface PutManyResponsePayload {
36
36
  hash: string;
37
37
  }[];
38
38
  }
39
+ export interface GetManyRequestPayload {
40
+ rootHash: string;
41
+ paths: string[];
42
+ /**
43
+ * Maximum aggregate size of decoded file contents and serialized metadata in
44
+ * the response.
45
+ */
46
+ maxBytes?: number;
47
+ /**
48
+ * Maximum number of requested objects plus entries nested in returned
49
+ * directory listings.
50
+ */
51
+ maxObjects?: number;
52
+ }
53
+ export type GetManyItemPayload = {
54
+ type: 'directoryContents';
55
+ path: string;
56
+ hash: string;
57
+ contents: DirectoryEntry[];
58
+ } | {
59
+ type: 'fileContents';
60
+ path: string;
61
+ hash: string;
62
+ executable: boolean;
63
+ contents: string;
64
+ } | {
65
+ type: 'symlink';
66
+ path: string;
67
+ target: string;
68
+ };
69
+ export interface GetManyResponsePayload {
70
+ items: GetManyItemPayload[];
71
+ }
39
72
  export {};
40
73
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dbfs/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG,iBAAiB,GAAG,qBAAqB,CAAC;AAE/F,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,UAAU,uBAAuB;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,4BAA4B;IACpC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,KAAK,WAAW,GAAG,uBAAuB,GAAG,4BAA4B,CAAC;AAE1E,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dbfs/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG,iBAAiB,GAAG,qBAAqB,CAAC;AAE/F,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,UAAU,uBAAuB;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,4BAA4B;IACpC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,KAAK,WAAW,GAAG,uBAAuB,GAAG,4BAA4B,CAAC;AAE1E,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,kBAAkB,GAC1B;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B"}
@@ -1,4 +1,4 @@
1
- import { DirectoryEntry, PutManyRequestPayload, PutManyResponsePayload } from '../dbfs/types.js';
1
+ import { DirectoryEntry, GetManyRequestPayload, GetManyResponsePayload, PutManyRequestPayload, PutManyResponsePayload } from '../dbfs/types.js';
2
2
  import { ApiToSign, ApiToVerify, AppToSign, AppToVerify, ApplicationSignatureTreeSigned, Signature } from '../signing/constants.js';
3
3
  import { ApplicationConfiguration, ApplicationPageClonePayload, CreateApplicationPageResponseBody, CreateApplicationPageSocketPayload, GetMultiPageApplicationResponseBody, GetApiResponseBody, IApplicationV2Dto, PageSummary, PostApiBranchCreateResponseBody, PostApplicationBranchCreateResponseBody, PostApplicationCreateRequestBody, RemoteCommitDto, ResponseMeta, ExportedMultiPageApplicationDto, ExportViewMode, ExportedApiV3Dto, ModifyEntitiesPayload, ModifyEntitiesResponse, GetAppBranchLockResponseBody, LockInfo, DegradedMode, CheckpointSkipReason } from '../types';
4
4
  import { AiChatMessageDto, AiChatMessagePayload, AiPromptCostRequest, AiPromptCostResponse, AiWorkflowEvent, AiResolveAttachmentLeasesRequest, AiResolveAttachmentLeasesResponse, FactCreate, FactDto, FactListQuery, ListFactsResponse, NpmInstallBlockedAuditReport } from '../types/index.js';
@@ -109,6 +109,7 @@ export interface ServerMethods {
109
109
  hash: string;
110
110
  }>;
111
111
  };
112
+ getMany: ServerMethodSchema<GetManyRequestPayload, GetManyResponsePayload>;
112
113
  /**
113
114
  * This method is used to put multiple files and directories at once. It is more efficient than calling the put method
114
115
  * for each file and directory. The response is a list of hashes for the items that were put, in the same order as the items
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/socket/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/socket/protocol.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/socket/protocol.ts"],"names":[],"mappings":"AAAA,6GAA6G;AA4C7G,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/socket/protocol.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAkD7G,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC"}
@@ -1,5 +1,7 @@
1
+ import { trace } from '@opentelemetry/api';
1
2
  import { describe, expect, it, vi } from 'vitest';
2
3
  import { INTENTIONAL_CLOSE_CODE, ISocket } from './socket.js';
4
+ import { ISocketWithClientAuth } from './socketWithClientAuth.js';
3
5
  const PING_TIMEOUT_CLOSE_REASON = 'Ping timeout';
4
6
  describe('ISocket', () => {
5
7
  it('preserves the transport-close marker when rejecting pending requests with a reason', async () => {
@@ -18,4 +20,39 @@ describe('ISocket', () => {
18
20
  expect(ws.close).toHaveBeenCalledWith(INTENTIONAL_CLOSE_CODE, PING_TIMEOUT_CLOSE_REASON);
19
21
  });
20
22
  });
23
+ describe('ISocketWithClientAuth', () => {
24
+ it('still sends a refreshed token when an older in-flight request resolves after setAuthorization', async () => {
25
+ let messageHandler;
26
+ const sentMessages = [];
27
+ const ws = {
28
+ addEventListener: vi.fn((event, handler) => {
29
+ if (event === 'message') {
30
+ messageHandler = handler;
31
+ }
32
+ }),
33
+ close: vi.fn(),
34
+ send: vi.fn((message) => {
35
+ sentMessages.push(JSON.parse(message));
36
+ })
37
+ };
38
+ const socket = new ISocketWithClientAuth(ws, 'Bearer old-token', {}, [], trace.getTracer('test'), { onClose: vi.fn() });
39
+ const firstRequest = socket.request('editor.ping', {});
40
+ expect(sentMessages[0].request.setAuthorization).toBe('Bearer old-token');
41
+ socket.setAuthorization('Bearer new-token');
42
+ messageHandler?.({
43
+ data: JSON.stringify({
44
+ response: { id: 1, payload: undefined, error: null }
45
+ })
46
+ });
47
+ await firstRequest;
48
+ const secondRequest = socket.request('editor.ping', {});
49
+ expect(sentMessages[1].request.setAuthorization).toBe('Bearer new-token');
50
+ messageHandler?.({
51
+ data: JSON.stringify({
52
+ response: { id: 2, payload: undefined, error: null }
53
+ })
54
+ });
55
+ await secondRequest;
56
+ });
57
+ });
21
58
  //# sourceMappingURL=socket.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"socket.test.js","sourceRoot":"","sources":["../../src/socket/socket.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,yBAAyB,GAAG,cAAc,CAAC;AAEjD,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;QAClG,MAAM,EAAE,GAAG;YACT,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;YACd,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;SACd,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,EAAW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAEzD,MAAM,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,CAAC;QAEhE,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;YACjD,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,iCAAiC,yBAAyB,EAAE;SACtE,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"socket.test.js","sourceRoot":"","sources":["../../src/socket/socket.test.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { TracedSocket } from './tracedSocket.js';
4
4
  import { GenericMiddleware, ISocketClient, MethodHandlers, RequestContextBase, SocketTimeouts } from './types.js';
5
5
  export declare class ISocketWithClientAuth<ImplementedMethods, CallableMethods, RequestContext extends RequestContextBase> extends TracedSocket<ImplementedMethods, CallableMethods, RequestContext> {
6
6
  private authorization?;
7
+ private authorizationVersion;
7
8
  private hasSentAuth;
8
9
  constructor(ws: WebSocket, authorization: string | undefined, requestHandlers: MethodHandlers<ImplementedMethods, CallableMethods, RequestContext>, globalMiddlewares: GenericMiddleware<CallableMethods, RequestContext>[], tracer: Tracer, options: {
9
10
  onClose: (event: WebSocket.CloseEvent) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"socketWithClientAuth.d.ts","sourceRoot":"","sources":["../../src/socket/socketWithClientAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,SAAS,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKlH,qBAAa,qBAAqB,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,SAAS,kBAAkB,CAAE,SAAQ,YAAY,CACrI,kBAAkB,EAClB,eAAe,EACf,cAAc,CACf;IACC,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAS;gBAG1B,EAAE,EAAE,SAAS,EACb,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC;QAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,MAAM,CAAC,EAAE;YAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;YAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;YAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;SAAE,CAAC;KACpH;IAOG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ9E;;;;;OAKG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CAI7D;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,eAAe,EACf,kBAAkB,EAClB,cAAc,SAAS,kBAAkB,GAAG,kBAAkB,EAE9D,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CACpH,GACA,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAIzC"}
1
+ {"version":3,"file":"socketWithClientAuth.d.ts","sourceRoot":"","sources":["../../src/socket/socketWithClientAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,SAAS,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKlH,qBAAa,qBAAqB,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,SAAS,kBAAkB,CAAE,SAAQ,YAAY,CACrI,kBAAkB,EAClB,eAAe,EACf,cAAc,CACf;IACC,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,WAAW,CAAS;gBAG1B,EAAE,EAAE,SAAS,EACb,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC;QAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,MAAM,CAAC,EAAE;YAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;YAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;YAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;SAAE,CAAC;KACpH;IAOG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW9E;;;;;OAKG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CAK7D;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,eAAe,EACf,kBAAkB,EAClB,cAAc,SAAS,kBAAkB,GAAG,kBAAkB,EAE9D,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,eAAe,EAAE,cAAc,CAAC,kBAAkB,EAAE,eAAe,EAAE,cAAc,CAAC,EACpF,iBAAiB,EAAE,iBAAiB,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,EACvE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CACpH,GACA,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAIzC"}
@@ -5,6 +5,7 @@ import { connectWebSocket } from './util.js';
5
5
  // this is useful for client-side sockets that need to authenticate
6
6
  export class ISocketWithClientAuth extends TracedSocket {
7
7
  authorization;
8
+ authorizationVersion = 0;
8
9
  hasSentAuth = false;
9
10
  constructor(ws, authorization, requestHandlers, globalMiddlewares, tracer, options) {
10
11
  super(ws, requestHandlers, globalMiddlewares, tracer, options);
@@ -13,9 +14,12 @@ export class ISocketWithClientAuth extends TracedSocket {
13
14
  // override `request` from the base class to send `authorization` when appropriate
14
15
  async request(method, params) {
15
16
  // only send `authorization` on the first request
17
+ const authorizationVersion = this.authorizationVersion;
16
18
  const authorization = this.hasSentAuth ? undefined : this.authorization;
17
19
  const result = await super.request(method, params, authorization);
18
- this.hasSentAuth = true;
20
+ if (this.authorizationVersion === authorizationVersion) {
21
+ this.hasSentAuth = true;
22
+ }
19
23
  return result;
20
24
  }
21
25
  /**
@@ -26,6 +30,7 @@ export class ISocketWithClientAuth extends TracedSocket {
26
30
  */
27
31
  setAuthorization(newAuthorization) {
28
32
  this.authorization = newAuthorization;
33
+ this.authorizationVersion++;
29
34
  this.hasSentAuth = false;
30
35
  }
31
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"socketWithClientAuth.js","sourceRoot":"","sources":["../../src/socket/socketWithClientAuth.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,sEAAsE;AACtE,mEAAmE;AACnE,MAAM,OAAO,qBAAsG,SAAQ,YAI1H;IACS,aAAa,CAAU;IACvB,WAAW,GAAG,KAAK,CAAC;IAE5B,YACE,EAAa,EACb,aAAiC,EACjC,eAAoF,EACpF,iBAAuE,EACvE,MAAc,EACd,OAIC;QAED,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,OAAO,CAAiB,MAAc,EAAE,MAAc;QAC1D,iDAAiD;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAiB,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAClF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,gBAAoC;QACnD,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAK3C,KAAa,EACb,aAAiC,EACjC,eAAoF,EACpF,iBAAuE,EACvE,MAAc,EACd,OAIC;IAED,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClH,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"socketWithClientAuth.js","sourceRoot":"","sources":["../../src/socket/socketWithClientAuth.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,sEAAsE;AACtE,mEAAmE;AACnE,MAAM,OAAO,qBAAsG,SAAQ,YAI1H;IACS,aAAa,CAAU;IACvB,oBAAoB,GAAG,CAAC,CAAC;IACzB,WAAW,GAAG,KAAK,CAAC;IAE5B,YACE,EAAa,EACb,aAAiC,EACjC,eAAoF,EACpF,iBAAuE,EACvE,MAAc,EACd,OAIC;QAED,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,OAAO,CAAiB,MAAc,EAAE,MAAc;QAC1D,iDAAiD;QACjD,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAiB,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAClF,IAAI,IAAI,CAAC,oBAAoB,KAAK,oBAAoB,EAAE,CAAC;YACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,gBAAoC;QACnD,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC;QACtC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAK3C,KAAa,EACb,aAAiC,EACjC,eAAoF,EACpF,iBAAuE,EACvE,MAAc,EACd,OAIC;IAED,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClH,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
@@ -10,9 +10,30 @@ import WebSocket from 'isomorphic-ws';
10
10
  * option and don't enforce a receive limit.
11
11
  */
12
12
  export declare const MAX_SOCKET_PAYLOAD_BYTES: number;
13
+ /**
14
+ * Default User-Agent for Node-originated WebSocket handshakes. The `ws` client
15
+ * sends no User-Agent by default (unlike browsers, axios, or undici's fetch),
16
+ * and AWS WAF's managed common rule set blocks UA-less requests
17
+ * (`NoUserAgent_HEADER`) with a 403 at the ALB. A non-empty UA keeps the
18
+ * handshake from being rejected; callers may override with a more specific,
19
+ * versioned identity. Ignored by browsers (native WebSocket sets its own UA).
20
+ */
21
+ export declare const DEFAULT_WEBSOCKET_USER_AGENT = "superblocks-client";
22
+ /**
23
+ * Build a client User-Agent of the form `component/version`, or bare `component`
24
+ * when no version is supplied. Single source of truth for the identity strings
25
+ * Node WebSocket clients (CLI, dev server, ...) send on the handshake.
26
+ */
27
+ export declare function buildClientUserAgent(component: string, version?: string): string;
28
+ export interface ConnectWebSocketOptions {
29
+ protocol?: string | string[];
30
+ timeout?: number;
31
+ /** Extra handshake headers (Node only; ignored by browsers). Overrides the default User-Agent. */
32
+ headers?: Record<string, string>;
33
+ }
13
34
  /**
14
35
  * If the connection is not established within the timeout, the promise will be rejected.
15
36
  * This can happen with bad network conditions, but is very rare.
16
37
  */
17
- export declare function connectWebSocket(wsUrl: string, protocol?: string | string[], timeout?: number): Promise<WebSocket>;
38
+ export declare function connectWebSocket(wsUrl: string, options?: ConnectWebSocketOptions): Promise<WebSocket>;
18
39
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/socket/util.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,eAAe,CAAC;AAEtC;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,QAAoB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAsBlH"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/socket/util.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,eAAe,CAAC;AAEtC;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,QAAoB,CAAC;AAE1D;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AAEjE;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kGAAkG;IAClG,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,SAAS,CAAC,CA0BzG"}
@@ -10,13 +10,34 @@ import WebSocket from 'isomorphic-ws';
10
10
  * option and don't enforce a receive limit.
11
11
  */
12
12
  export const MAX_SOCKET_PAYLOAD_BYTES = 100 * 1024 * 1024;
13
+ /**
14
+ * Default User-Agent for Node-originated WebSocket handshakes. The `ws` client
15
+ * sends no User-Agent by default (unlike browsers, axios, or undici's fetch),
16
+ * and AWS WAF's managed common rule set blocks UA-less requests
17
+ * (`NoUserAgent_HEADER`) with a 403 at the ALB. A non-empty UA keeps the
18
+ * handshake from being rejected; callers may override with a more specific,
19
+ * versioned identity. Ignored by browsers (native WebSocket sets its own UA).
20
+ */
21
+ export const DEFAULT_WEBSOCKET_USER_AGENT = 'superblocks-client';
22
+ /**
23
+ * Build a client User-Agent of the form `component/version`, or bare `component`
24
+ * when no version is supplied. Single source of truth for the identity strings
25
+ * Node WebSocket clients (CLI, dev server, ...) send on the handshake.
26
+ */
27
+ export function buildClientUserAgent(component, version) {
28
+ return version ? `${component}/${version}` : component;
29
+ }
13
30
  /**
14
31
  * If the connection is not established within the timeout, the promise will be rejected.
15
32
  * This can happen with bad network conditions, but is very rare.
16
33
  */
17
- export function connectWebSocket(wsUrl, protocol, timeout = 30_000) {
34
+ export function connectWebSocket(wsUrl, options = {}) {
35
+ const { protocol, timeout = 30_000, headers } = options;
18
36
  return new Promise((resolve, reject) => {
19
- const ws = new WebSocket(wsUrl, protocol, { maxPayload: MAX_SOCKET_PAYLOAD_BYTES });
37
+ const ws = new WebSocket(wsUrl, protocol, {
38
+ maxPayload: MAX_SOCKET_PAYLOAD_BYTES,
39
+ headers: { 'User-Agent': DEFAULT_WEBSOCKET_USER_AGENT, ...headers }
40
+ });
20
41
  const timeoutId = setTimeout(() => {
21
42
  reject(new Error('[internal] WebSocket connection timeout'));
22
43
  }, timeout);
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/socket/util.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,eAAe,CAAC;AAEtC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,QAA4B,EAAE,OAAO,GAAG,MAAM;IAC5F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAEpF,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAC/D,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;YAC/B,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,8EAA8E;YAC9E,OAAO,CAAC,EAAE,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACrC,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,4EAA4E;YAC5E,2EAA2E;YAC3E,MAAM,OAAO,GAAG,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;YACxH,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/socket/util.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,eAAe,CAAC;AAEtC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,oBAAoB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,OAAgB;IACtE,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AASD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,UAAmC,EAAE;IACnF,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE;YACxC,UAAU,EAAE,wBAAwB;YACpC,OAAO,EAAE,EAAE,YAAY,EAAE,4BAA4B,EAAE,GAAG,OAAO,EAAE;SACpE,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAC/D,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;YAC/B,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,8EAA8E;YAC9E,OAAO,CAAC,EAAE,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACrC,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,4EAA4E;YAC5E,2EAA2E;YAC3E,MAAM,OAAO,GAAG,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;YACxH,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=util.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.test.d.ts","sourceRoot":"","sources":["../../src/socket/util.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
+ import { buildClientUserAgent, connectWebSocket, DEFAULT_WEBSOCKET_USER_AGENT, MAX_SOCKET_PAYLOAD_BYTES } from './util.js';
3
+ const constructorSpy = vi.fn();
4
+ // isomorphic-ws resolves to the `ws` package on Node; capture its constructor args.
5
+ // vitest hoists this mock above the static import above, so `util.ts` picks it up.
6
+ vi.mock('isomorphic-ws', () => ({
7
+ default: class MockWebSocket {
8
+ constructor(url, protocol, options) {
9
+ constructorSpy(url, protocol, options);
10
+ }
11
+ addEventListener() {
12
+ // no-op; the connect promise stays pending, which is fine for these assertions
13
+ }
14
+ }
15
+ }));
16
+ describe('connectWebSocket User-Agent', () => {
17
+ beforeEach(() => {
18
+ vi.useFakeTimers();
19
+ constructorSpy.mockClear();
20
+ });
21
+ afterEach(() => {
22
+ vi.clearAllTimers();
23
+ vi.useRealTimers();
24
+ });
25
+ it('sends a default User-Agent and preserves maxPayload on the handshake', () => {
26
+ void connectWebSocket('wss://example.com/api/v1/rpc-ws');
27
+ expect(constructorSpy).toHaveBeenCalledWith('wss://example.com/api/v1/rpc-ws', undefined, expect.objectContaining({
28
+ maxPayload: MAX_SOCKET_PAYLOAD_BYTES,
29
+ headers: expect.objectContaining({ 'User-Agent': DEFAULT_WEBSOCKET_USER_AGENT })
30
+ }));
31
+ });
32
+ it('lets callers override the User-Agent via options.headers', () => {
33
+ void connectWebSocket('wss://example.com/api/v1/rpc-ws', { headers: { 'User-Agent': 'superblocks-cli/9.9.9' } });
34
+ expect(constructorSpy).toHaveBeenCalledWith('wss://example.com/api/v1/rpc-ws', undefined, expect.objectContaining({
35
+ headers: expect.objectContaining({ 'User-Agent': 'superblocks-cli/9.9.9' })
36
+ }));
37
+ });
38
+ it('forwards options.protocol as the WebSocket subprotocol', () => {
39
+ void connectWebSocket('wss://example.com/api/v1/rpc-ws', { protocol: 'editor' });
40
+ expect(constructorSpy).toHaveBeenCalledWith('wss://example.com/api/v1/rpc-ws', 'editor', expect.anything());
41
+ });
42
+ });
43
+ describe('buildClientUserAgent', () => {
44
+ it('joins component and version with a slash', () => {
45
+ expect(buildClientUserAgent('superblocks-cli', '2.0.0-next.1')).toBe('superblocks-cli/2.0.0-next.1');
46
+ });
47
+ it('returns the bare component when no version is given', () => {
48
+ expect(buildClientUserAgent('superblocks-dev-server')).toBe('superblocks-dev-server');
49
+ });
50
+ });
51
+ //# sourceMappingURL=util.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.test.js","sourceRoot":"","sources":["../../src/socket/util.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAE3H,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAE/B,oFAAoF;AACpF,mFAAmF;AACnF,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,aAAa;QAC1B,YAAY,GAAW,EAAE,QAAiB,EAAE,OAAgB;YAC1D,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QACD,gBAAgB;YACd,+EAA+E;QACjF,CAAC;KACF;CACF,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,cAAc,CAAC,SAAS,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,KAAK,gBAAgB,CAAC,iCAAiC,CAAC,CAAC;QAEzD,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CACzC,iCAAiC,EACjC,SAAS,EACT,MAAM,CAAC,gBAAgB,CAAC;YACtB,UAAU,EAAE,wBAAwB;YACpC,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,4BAA4B,EAAE,CAAC;SACjF,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,KAAK,gBAAgB,CAAC,iCAAiC,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC;QAEjH,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CACzC,iCAAiC,EACjC,SAAS,EACT,MAAM,CAAC,gBAAgB,CAAC;YACtB,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,uBAAuB,EAAE,CAAC;SAC5E,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,KAAK,gBAAgB,CAAC,iCAAiC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEjF,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,iCAAiC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9G,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/git/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAMpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAW1D,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI7D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAInE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/git/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAQpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAW1D,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI7D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAInE"}
@@ -6,7 +6,9 @@ export const GIT_AUTH_ERROR_PATTERNS = [
6
6
  'authentication failed',
7
7
  'could not read username',
8
8
  'invalid credentials',
9
+ 'invalid username or token',
9
10
  'bad credentials',
11
+ 'password authentication is not supported',
10
12
  '401'
11
13
  ];
12
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/git/index.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACxD,uBAAuB;IACvB,yBAAyB;IACzB,qBAAqB;IACrB,iBAAiB;IACjB,KAAK;CACN,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAsB;IAC9D,WAAW;IACX,eAAe;IACf,uCAAuC;IACvC,2BAA2B;IAC3B,iBAAiB;IACjB,0BAA0B;IAC1B,yBAAyB;IACzB,sCAAsC;IACtC,4BAA4B;IAC5B,uBAAuB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAClF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/git/index.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACxD,uBAAuB;IACvB,yBAAyB;IACzB,qBAAqB;IACrB,2BAA2B;IAC3B,iBAAiB;IACjB,0CAA0C;IAC1C,KAAK;CACN,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAsB;IAC9D,WAAW;IACX,eAAe;IACf,uCAAuC;IACvC,2BAA2B;IAC3B,iBAAiB;IACjB,0BAA0B;IAC1B,yBAAyB;IACzB,sCAAsC;IACtC,4BAA4B;IAC5B,uBAAuB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAClF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/types/git/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { isGitAuthErrorMessage } from './index.js';
3
+ describe('isGitAuthErrorMessage', () => {
4
+ it('matches fine-grained GitHub invalid username or token errors', () => {
5
+ expect(isGitAuthErrorMessage(new Error('remote: Invalid username or token. Password authentication is not supported for Git operations.'))).toBe(true);
6
+ });
7
+ it('matches password authentication is not supported errors', () => {
8
+ expect(isGitAuthErrorMessage(new Error('fatal: Password authentication is not supported for Git operations.'))).toBe(true);
9
+ });
10
+ });
11
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/types/git/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,CACJ,qBAAqB,CAAC,IAAI,KAAK,CAAC,iGAAiG,CAAC,CAAC,CACpI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7H,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superblocksteam/shared",
3
- "version": "0.9597.1",
3
+ "version": "0.9598.1",
4
4
  "description": "Superblocks Shared Resources",
5
5
  "license": "Superblocks Community Software License",
6
6
  "repository": "https://github.com/superblocksteam/shared.git",
@@ -23,7 +23,7 @@
23
23
  "@lezer/common": "0.16.1",
24
24
  "@lezer/lr": "0.16.3",
25
25
  "@opentelemetry/api": "^1.9.1",
26
- "@opentelemetry/semantic-conventions": "^1.36.0",
26
+ "@opentelemetry/semantic-conventions": "^1.41.1",
27
27
  "@superblocksteam/sabs-types": "0.154.0",
28
28
  "@superblocksteam/types": "1.351.0",
29
29
  "@types/esprima": "4.0.3",
@@ -154,6 +154,13 @@ export type LifecycleMigration = {
154
154
  sql: string;
155
155
  };
156
156
 
157
+ export type LifecycleDispatchContinuation = {
158
+ currentState?: string;
159
+ physicalInstanceId?: string;
160
+ physicalTerraformResourceKey?: string;
161
+ reservationId?: string;
162
+ };
163
+
157
164
  // Canonical wire payload for a lifecycle dispatch sent from the server to a
158
165
  // lifecycle worker. The worker's `DispatchPayload` struct in
159
166
  // orchestrator/pkg/databaselifecycle/dispatch.go decodes this JSON shape;
@@ -172,6 +179,7 @@ export type LifecycleMigration = {
172
179
  export type LifecycleDispatchPayload = {
173
180
  bindingKey: string;
174
181
  connectionMetadata?: Record<string, string | number | boolean>;
182
+ continuation?: LifecycleDispatchContinuation;
175
183
  desiredSpec: DatabaseRequirement;
176
184
  desiredSpecHash: string;
177
185
  environment: LifecycleEnvironment;
package/src/dbfs/types.ts CHANGED
@@ -47,3 +47,42 @@ export interface PutManyRequestPayload {
47
47
  export interface PutManyResponsePayload {
48
48
  items: { hash: string }[];
49
49
  }
50
+
51
+ export interface GetManyRequestPayload {
52
+ rootHash: string;
53
+ paths: string[];
54
+ /**
55
+ * Maximum aggregate size of decoded file contents and serialized metadata in
56
+ * the response.
57
+ */
58
+ maxBytes?: number;
59
+ /**
60
+ * Maximum number of requested objects plus entries nested in returned
61
+ * directory listings.
62
+ */
63
+ maxObjects?: number;
64
+ }
65
+
66
+ export type GetManyItemPayload =
67
+ | {
68
+ type: 'directoryContents';
69
+ path: string;
70
+ hash: string;
71
+ contents: DirectoryEntry[];
72
+ }
73
+ | {
74
+ type: 'fileContents';
75
+ path: string;
76
+ hash: string;
77
+ executable: boolean;
78
+ contents: string;
79
+ }
80
+ | {
81
+ type: 'symlink';
82
+ path: string;
83
+ target: string;
84
+ };
85
+
86
+ export interface GetManyResponsePayload {
87
+ items: GetManyItemPayload[];
88
+ }
@@ -1,6 +1,12 @@
1
1
  // This file contains the definition of the protocol used for communication between the SB server and clients
2
2
 
3
- import { DirectoryEntry, PutManyRequestPayload, PutManyResponsePayload } from '../dbfs/types.js';
3
+ import {
4
+ DirectoryEntry,
5
+ GetManyRequestPayload,
6
+ GetManyResponsePayload,
7
+ PutManyRequestPayload,
8
+ PutManyResponsePayload
9
+ } from '../dbfs/types.js';
4
10
  import { ApiToSign, ApiToVerify, AppToSign, AppToVerify, ApplicationSignatureTreeSigned, Signature } from '../signing/constants.js';
5
11
  import {
6
12
  ApplicationConfiguration,
@@ -123,6 +129,7 @@ export interface ServerMethods {
123
129
  getByPath: ServerMethodSchema<{ directoryHash: string; path: string }, { contents: DirectoryEntry[] }>;
124
130
  put: ServerMethodSchema<{ contents: DirectoryEntry[] }, { hash: string }>;
125
131
  };
132
+ getMany: ServerMethodSchema<GetManyRequestPayload, GetManyResponsePayload>;
126
133
  /**
127
134
  * This method is used to put multiple files and directories at once. It is more efficient than calling the put method
128
135
  * for each file and directory. The response is a list of hashes for the items that were put, in the same order as the items
@@ -1,6 +1,8 @@
1
+ import { trace } from '@opentelemetry/api';
1
2
  import { describe, expect, it, vi } from 'vitest';
2
3
 
3
4
  import { INTENTIONAL_CLOSE_CODE, ISocket } from './socket.js';
5
+ import { ISocketWithClientAuth } from './socketWithClientAuth.js';
4
6
 
5
7
  const PING_TIMEOUT_CLOSE_REASON = 'Ping timeout';
6
8
 
@@ -23,3 +25,44 @@ describe('ISocket', () => {
23
25
  expect(ws.close).toHaveBeenCalledWith(INTENTIONAL_CLOSE_CODE, PING_TIMEOUT_CLOSE_REASON);
24
26
  });
25
27
  });
28
+
29
+ describe('ISocketWithClientAuth', () => {
30
+ it('still sends a refreshed token when an older in-flight request resolves after setAuthorization', async () => {
31
+ let messageHandler: ((event: { data: string }) => void) | undefined;
32
+ const sentMessages: Array<{
33
+ request: { id: number; setAuthorization?: string };
34
+ }> = [];
35
+ const ws = {
36
+ addEventListener: vi.fn((event: string, handler: (event: { data: string }) => void) => {
37
+ if (event === 'message') {
38
+ messageHandler = handler;
39
+ }
40
+ }),
41
+ close: vi.fn(),
42
+ send: vi.fn((message: string) => {
43
+ sentMessages.push(JSON.parse(message));
44
+ })
45
+ };
46
+ const socket = new ISocketWithClientAuth(ws as never, 'Bearer old-token', {}, [], trace.getTracer('test'), { onClose: vi.fn() });
47
+
48
+ const firstRequest = socket.request('editor.ping', {});
49
+ expect(sentMessages[0].request.setAuthorization).toBe('Bearer old-token');
50
+
51
+ socket.setAuthorization('Bearer new-token');
52
+ messageHandler?.({
53
+ data: JSON.stringify({
54
+ response: { id: 1, payload: undefined, error: null }
55
+ })
56
+ });
57
+ await firstRequest;
58
+
59
+ const secondRequest = socket.request('editor.ping', {});
60
+ expect(sentMessages[1].request.setAuthorization).toBe('Bearer new-token');
61
+ messageHandler?.({
62
+ data: JSON.stringify({
63
+ response: { id: 2, payload: undefined, error: null }
64
+ })
65
+ });
66
+ await secondRequest;
67
+ });
68
+ });