@tinybirdco/sdk 0.0.4 → 0.0.7

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 (165) hide show
  1. package/README.md +52 -13
  2. package/dist/api/branches.d.ts.map +1 -1
  3. package/dist/api/branches.js +6 -5
  4. package/dist/api/branches.js.map +1 -1
  5. package/dist/api/branches.test.js +32 -6
  6. package/dist/api/branches.test.js.map +1 -1
  7. package/dist/api/build.d.ts.map +1 -1
  8. package/dist/api/build.js +2 -1
  9. package/dist/api/build.js.map +1 -1
  10. package/dist/api/deploy.d.ts +42 -3
  11. package/dist/api/deploy.d.ts.map +1 -1
  12. package/dist/api/deploy.js +162 -19
  13. package/dist/api/deploy.js.map +1 -1
  14. package/dist/api/deploy.test.js +83 -31
  15. package/dist/api/deploy.test.js.map +1 -1
  16. package/dist/api/fetcher.d.ts +6 -0
  17. package/dist/api/fetcher.d.ts.map +1 -0
  18. package/dist/api/fetcher.js +13 -0
  19. package/dist/api/fetcher.js.map +1 -0
  20. package/dist/api/local.d.ts.map +1 -1
  21. package/dist/api/local.js +5 -4
  22. package/dist/api/local.js.map +1 -1
  23. package/dist/api/local.test.js.map +1 -1
  24. package/dist/api/resources.d.ts +178 -0
  25. package/dist/api/resources.d.ts.map +1 -0
  26. package/dist/api/resources.js +245 -0
  27. package/dist/api/resources.js.map +1 -0
  28. package/dist/api/resources.test.d.ts +2 -0
  29. package/dist/api/resources.test.d.ts.map +1 -0
  30. package/dist/api/resources.test.js +255 -0
  31. package/dist/api/resources.test.js.map +1 -0
  32. package/dist/api/workspaces.d.ts.map +1 -1
  33. package/dist/api/workspaces.js +2 -1
  34. package/dist/api/workspaces.js.map +1 -1
  35. package/dist/api/workspaces.test.js +9 -1
  36. package/dist/api/workspaces.test.js.map +1 -1
  37. package/dist/cli/auth.d.ts.map +1 -1
  38. package/dist/cli/auth.js +2 -1
  39. package/dist/cli/auth.js.map +1 -1
  40. package/dist/cli/commands/build.d.ts +3 -4
  41. package/dist/cli/commands/build.d.ts.map +1 -1
  42. package/dist/cli/commands/build.js +23 -25
  43. package/dist/cli/commands/build.js.map +1 -1
  44. package/dist/cli/commands/deploy.d.ts +41 -0
  45. package/dist/cli/commands/deploy.d.ts.map +1 -0
  46. package/dist/cli/commands/deploy.js +92 -0
  47. package/dist/cli/commands/deploy.js.map +1 -0
  48. package/dist/cli/commands/dev.d.ts.map +1 -1
  49. package/dist/cli/commands/dev.js +7 -3
  50. package/dist/cli/commands/dev.js.map +1 -1
  51. package/dist/cli/commands/init.d.ts +38 -1
  52. package/dist/cli/commands/init.d.ts.map +1 -1
  53. package/dist/cli/commands/init.js +434 -23
  54. package/dist/cli/commands/init.js.map +1 -1
  55. package/dist/cli/commands/init.test.js +190 -30
  56. package/dist/cli/commands/init.test.js.map +1 -1
  57. package/dist/cli/index.js +80 -15
  58. package/dist/cli/index.js.map +1 -1
  59. package/dist/cli/utils/package-manager.d.ts +8 -0
  60. package/dist/cli/utils/package-manager.d.ts.map +1 -0
  61. package/dist/cli/utils/package-manager.js +45 -0
  62. package/dist/cli/utils/package-manager.js.map +1 -0
  63. package/dist/cli/utils/package-manager.test.d.ts +2 -0
  64. package/dist/cli/utils/package-manager.test.d.ts.map +1 -0
  65. package/dist/cli/utils/package-manager.test.js +85 -0
  66. package/dist/cli/utils/package-manager.test.js.map +1 -0
  67. package/dist/client/base.d.ts.map +1 -1
  68. package/dist/client/base.js +2 -1
  69. package/dist/client/base.js.map +1 -1
  70. package/dist/codegen/index.d.ts +39 -0
  71. package/dist/codegen/index.d.ts.map +1 -0
  72. package/dist/codegen/index.js +300 -0
  73. package/dist/codegen/index.js.map +1 -0
  74. package/dist/codegen/index.test.d.ts +2 -0
  75. package/dist/codegen/index.test.d.ts.map +1 -0
  76. package/dist/codegen/index.test.js +310 -0
  77. package/dist/codegen/index.test.js.map +1 -0
  78. package/dist/codegen/type-mapper.d.ts +20 -0
  79. package/dist/codegen/type-mapper.d.ts.map +1 -0
  80. package/dist/codegen/type-mapper.js +238 -0
  81. package/dist/codegen/type-mapper.js.map +1 -0
  82. package/dist/codegen/type-mapper.test.d.ts +2 -0
  83. package/dist/codegen/type-mapper.test.d.ts.map +1 -0
  84. package/dist/codegen/type-mapper.test.js +167 -0
  85. package/dist/codegen/type-mapper.test.js.map +1 -0
  86. package/dist/codegen/utils.d.ts +46 -0
  87. package/dist/codegen/utils.d.ts.map +1 -0
  88. package/dist/codegen/utils.js +141 -0
  89. package/dist/codegen/utils.js.map +1 -0
  90. package/dist/codegen/utils.test.d.ts +2 -0
  91. package/dist/codegen/utils.test.d.ts.map +1 -0
  92. package/dist/codegen/utils.test.js +178 -0
  93. package/dist/codegen/utils.test.js.map +1 -0
  94. package/dist/generator/index.d.ts +3 -0
  95. package/dist/generator/index.d.ts.map +1 -1
  96. package/dist/generator/index.js +17 -1
  97. package/dist/generator/index.js.map +1 -1
  98. package/dist/generator/index.test.js +104 -1
  99. package/dist/generator/index.test.js.map +1 -1
  100. package/dist/generator/loader.d.ts +15 -0
  101. package/dist/generator/loader.d.ts.map +1 -1
  102. package/dist/generator/loader.js +24 -0
  103. package/dist/generator/loader.js.map +1 -1
  104. package/dist/schema/connection.d.ts.map +1 -1
  105. package/dist/schema/connection.js +3 -2
  106. package/dist/schema/connection.js.map +1 -1
  107. package/dist/schema/datasource.d.ts.map +1 -1
  108. package/dist/schema/datasource.js +3 -2
  109. package/dist/schema/datasource.js.map +1 -1
  110. package/dist/schema/params.d.ts.map +1 -1
  111. package/dist/schema/params.js +3 -2
  112. package/dist/schema/params.js.map +1 -1
  113. package/dist/schema/pipe.d.ts +2 -2
  114. package/dist/schema/pipe.d.ts.map +1 -1
  115. package/dist/schema/pipe.js +4 -4
  116. package/dist/schema/pipe.js.map +1 -1
  117. package/dist/schema/project.d.ts.map +1 -1
  118. package/dist/schema/project.js +3 -2
  119. package/dist/schema/project.js.map +1 -1
  120. package/dist/schema/types.d.ts.map +1 -1
  121. package/dist/schema/types.js +3 -2
  122. package/dist/schema/types.js.map +1 -1
  123. package/dist/test/handlers.d.ts +49 -0
  124. package/dist/test/handlers.d.ts.map +1 -1
  125. package/dist/test/handlers.js +45 -0
  126. package/dist/test/handlers.js.map +1 -1
  127. package/package.json +4 -2
  128. package/src/api/branches.test.ts +65 -57
  129. package/src/api/branches.ts +7 -5
  130. package/src/api/build.ts +2 -1
  131. package/src/api/deploy.test.ts +141 -36
  132. package/src/api/deploy.ts +231 -23
  133. package/src/api/fetcher.ts +17 -0
  134. package/src/api/local.test.ts +43 -31
  135. package/src/api/local.ts +5 -4
  136. package/src/api/resources.test.ts +332 -0
  137. package/src/api/resources.ts +555 -0
  138. package/src/api/workspaces.test.ts +15 -9
  139. package/src/api/workspaces.ts +3 -1
  140. package/src/cli/auth.ts +2 -1
  141. package/src/cli/commands/build.ts +29 -33
  142. package/src/cli/commands/deploy.ts +131 -0
  143. package/src/cli/commands/dev.ts +10 -3
  144. package/src/cli/commands/init.test.ts +239 -30
  145. package/src/cli/commands/init.ts +548 -26
  146. package/src/cli/index.ts +117 -20
  147. package/src/cli/utils/package-manager.test.ts +118 -0
  148. package/src/cli/utils/package-manager.ts +44 -0
  149. package/src/client/base.ts +3 -2
  150. package/src/codegen/index.test.ts +367 -0
  151. package/src/codegen/index.ts +379 -0
  152. package/src/codegen/type-mapper.test.ts +224 -0
  153. package/src/codegen/type-mapper.ts +265 -0
  154. package/src/codegen/utils.test.ts +221 -0
  155. package/src/codegen/utils.ts +174 -0
  156. package/src/generator/index.test.ts +121 -1
  157. package/src/generator/index.ts +19 -1
  158. package/src/generator/loader.ts +43 -0
  159. package/src/schema/connection.ts +3 -2
  160. package/src/schema/datasource.ts +3 -2
  161. package/src/schema/params.ts +3 -2
  162. package/src/schema/pipe.ts +4 -4
  163. package/src/schema/project.ts +3 -2
  164. package/src/schema/types.ts +3 -2
  165. package/src/test/handlers.ts +58 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,55 @@ export declare function createBuildMultipleErrorsResponse(errors: Array<{
51
51
  export declare function createNoChangesResponse(): {
52
52
  result: string;
53
53
  };
54
+ /**
55
+ * Create deploy success response (for /v1/deploy endpoint)
56
+ * This returns a deployment object, not a build object
57
+ */
58
+ export declare function createDeploySuccessResponse(options?: {
59
+ deploymentId?: string;
60
+ status?: string;
61
+ }): {
62
+ result: string;
63
+ deployment: {
64
+ id: string;
65
+ status: string;
66
+ };
67
+ };
68
+ /**
69
+ * Create deployment status response (for /v1/deployments/:id endpoint)
70
+ */
71
+ export declare function createDeploymentStatusResponse(options?: {
72
+ deploymentId?: string;
73
+ status?: string;
74
+ }): {
75
+ result: string;
76
+ deployment: {
77
+ id: string;
78
+ status: string;
79
+ };
80
+ };
81
+ /**
82
+ * Create set-live success response (for /v1/deployments/:id/set-live endpoint)
83
+ */
84
+ export declare function createSetLiveSuccessResponse(): {
85
+ result: string;
86
+ };
87
+ /**
88
+ * Create deployments list response (for /v1/deployments endpoint)
89
+ */
90
+ export declare function createDeploymentsListResponse(options?: {
91
+ deployments?: Array<{
92
+ id: string;
93
+ status: string;
94
+ live: boolean;
95
+ }>;
96
+ }): {
97
+ deployments: {
98
+ id: string;
99
+ status: string;
100
+ live: boolean;
101
+ }[];
102
+ };
54
103
  /**
55
104
  * Default handlers for build and deploy endpoints
56
105
  */
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/test/handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,QAAQ,4BAA4B,CAAC;AAElD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,CAAC,EAAE;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;;;;;;;;;;;EAaA;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM;;;EAKvD;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,KAAK,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;;;mBAAxB,MAAM;eAAS,MAAM;;EAMjD;AAED;;GAEG;AACH,wBAAgB,uBAAuB;;EAItC;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,6BAUpB,CAAC"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/test/handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,QAAQ,4BAA4B,CAAC;AAElD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,CAAC,EAAE;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;;;;;;;;;;;EAaA;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM;;;EAKvD;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,KAAK,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;;;mBAAxB,MAAM;eAAS,MAAM;;EAMjD;AAED;;GAEG;AACH,wBAAgB,uBAAuB;;EAItC;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;;;;;;EAQA;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,CAAC,EAAE;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;;;;;;EAQA;AAED;;GAEG;AACH,wBAAgB,4BAA4B;;EAI3C;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE;IACtD,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpE;;YAD2B,MAAM;gBAAU,MAAM;cAAQ,OAAO;;EAKhE;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,6BAepB,CAAC"}
@@ -46,6 +46,47 @@ export function createNoChangesResponse() {
46
46
  result: "no_changes",
47
47
  };
48
48
  }
49
+ /**
50
+ * Create deploy success response (for /v1/deploy endpoint)
51
+ * This returns a deployment object, not a build object
52
+ */
53
+ export function createDeploySuccessResponse(options) {
54
+ return {
55
+ result: "success",
56
+ deployment: {
57
+ id: options?.deploymentId ?? "deploy-123",
58
+ status: options?.status ?? "pending",
59
+ },
60
+ };
61
+ }
62
+ /**
63
+ * Create deployment status response (for /v1/deployments/:id endpoint)
64
+ */
65
+ export function createDeploymentStatusResponse(options) {
66
+ return {
67
+ result: "success",
68
+ deployment: {
69
+ id: options?.deploymentId ?? "deploy-123",
70
+ status: options?.status ?? "data_ready",
71
+ },
72
+ };
73
+ }
74
+ /**
75
+ * Create set-live success response (for /v1/deployments/:id/set-live endpoint)
76
+ */
77
+ export function createSetLiveSuccessResponse() {
78
+ return {
79
+ result: "success",
80
+ };
81
+ }
82
+ /**
83
+ * Create deployments list response (for /v1/deployments endpoint)
84
+ */
85
+ export function createDeploymentsListResponse(options) {
86
+ return {
87
+ deployments: options?.deployments ?? [],
88
+ };
89
+ }
49
90
  /**
50
91
  * Default handlers for build and deploy endpoints
51
92
  */
@@ -58,5 +99,9 @@ export const handlers = [
58
99
  http.post(`${BASE_URL}/v1/deploy`, () => {
59
100
  return HttpResponse.json(createBuildSuccessResponse());
60
101
  }),
102
+ // Deployments list endpoint - empty list by default (no stale deployments)
103
+ http.get(`${BASE_URL}/v1/deployments`, () => {
104
+ return HttpResponse.json(createDeploymentsListResponse());
105
+ }),
61
106
  ];
62
107
  //# sourceMappingURL=handlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/test/handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC;AAEzC,MAAM,CAAC,MAAM,QAAQ,GAAG,yBAAyB,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAQ1C;IACC,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE;YACL,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,WAAW;YACnC,kBAAkB,EAAE,OAAO,EAAE,YAAY,IAAI,EAAE;YAC/C,cAAc,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE;YACvC,kBAAkB,EAAE,OAAO,EAAE,YAAY,IAAI,EAAE;YAC/C,wBAAwB,EAAE,OAAO,EAAE,kBAAkB,IAAI,EAAE;YAC3D,oBAAoB,EAAE,OAAO,EAAE,cAAc,IAAI,EAAE;YACnD,wBAAwB,EAAE,OAAO,EAAE,kBAAkB,IAAI,EAAE;SAC5D;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACtD,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iCAAiC,CAC/C,MAAmD;IAEnD,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,sCAAsC;IACtC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,WAAW,EAAE,GAAG,EAAE;QACrC,OAAO,YAAY,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF,uCAAuC;IACvC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,EAAE,GAAG,EAAE;QACtC,OAAO,YAAY,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/test/handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC;AAEzC,MAAM,CAAC,MAAM,QAAQ,GAAG,yBAAyB,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAQ1C;IACC,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE;YACL,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,WAAW;YACnC,kBAAkB,EAAE,OAAO,EAAE,YAAY,IAAI,EAAE;YAC/C,cAAc,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE;YACvC,kBAAkB,EAAE,OAAO,EAAE,YAAY,IAAI,EAAE;YAC/C,wBAAwB,EAAE,OAAO,EAAE,kBAAkB,IAAI,EAAE;YAC3D,oBAAoB,EAAE,OAAO,EAAE,cAAc,IAAI,EAAE;YACnD,wBAAwB,EAAE,OAAO,EAAE,kBAAkB,IAAI,EAAE;SAC5D;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACtD,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iCAAiC,CAC/C,MAAmD;IAEnD,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAG3C;IACC,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE;YACV,EAAE,EAAE,OAAO,EAAE,YAAY,IAAI,YAAY;YACzC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,SAAS;SACrC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAAC,OAG9C;IACC,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE;YACV,EAAE,EAAE,OAAO,EAAE,YAAY,IAAI,YAAY;YACzC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,YAAY;SACxC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAE7C;IACC,OAAO;QACL,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,EAAE;KACxC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,sCAAsC;IACtC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,WAAW,EAAE,GAAG,EAAE;QACrC,OAAO,YAAY,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF,uCAAuC;IACvC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,YAAY,EAAE,GAAG,EAAE;QACtC,OAAO,YAAY,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF,2EAA2E;IAC3E,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,iBAAiB,EAAE,GAAG,EAAE;QAC1C,OAAO,YAAY,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC;CACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tinybirdco/sdk",
3
- "version": "0.0.4",
3
+ "version": "0.0.7",
4
4
  "description": "TypeScript SDK for Tinybird Forward - define datasources and pipes as TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -31,10 +31,12 @@
31
31
  "author": "Tinybird",
32
32
  "license": "MIT",
33
33
  "dependencies": {
34
+ "@clack/prompts": "^1.0.0",
34
35
  "chokidar": "^4.0.0",
35
36
  "commander": "^12.0.0",
36
37
  "dotenv": "^16.0.0",
37
- "esbuild": "^0.24.0"
38
+ "esbuild": "^0.24.0",
39
+ "picocolors": "^1.1.1"
38
40
  },
39
41
  "devDependencies": {
40
42
  "@types/node": "^20.0.0",
@@ -14,6 +14,12 @@ import {
14
14
  const mockFetch = vi.fn();
15
15
  global.fetch = mockFetch;
16
16
 
17
+ function expectFromParam(url: string) {
18
+ const parsed = new URL(url);
19
+ expect(parsed.searchParams.get("from")).toBe("ts-sdk");
20
+ return parsed;
21
+ }
22
+
17
23
  describe("Branch API client", () => {
18
24
  const config: BranchApiConfig = {
19
25
  baseUrl: "https://api.tinybird.co",
@@ -62,36 +68,37 @@ describe("Branch API client", () => {
62
68
  const result = await createBranch(config, "my-feature");
63
69
 
64
70
  expect(mockFetch).toHaveBeenCalledTimes(3);
65
- expect(mockFetch).toHaveBeenNthCalledWith(
66
- 1,
67
- "https://api.tinybird.co/v1/environments?name=my-feature",
68
- {
69
- method: "POST",
70
- headers: {
71
- Authorization: "Bearer p.test-token",
72
- },
73
- }
74
- );
75
- expect(mockFetch).toHaveBeenNthCalledWith(
76
- 2,
77
- "https://api.tinybird.co/v0/jobs/job-123",
78
- {
79
- method: "GET",
80
- headers: {
81
- Authorization: "Bearer p.test-token",
82
- },
83
- }
84
- );
85
- expect(mockFetch).toHaveBeenNthCalledWith(
86
- 3,
87
- "https://api.tinybird.co/v0/environments/my-feature?with_token=true",
88
- {
89
- method: "GET",
90
- headers: {
91
- Authorization: "Bearer p.test-token",
92
- },
93
- }
94
- );
71
+ const [createUrl, createInit] = mockFetch.mock.calls[0];
72
+ const createParsed = expectFromParam(createUrl);
73
+ expect(createParsed.pathname).toBe("/v1/environments");
74
+ expect(createParsed.searchParams.get("name")).toBe("my-feature");
75
+ expect(createInit).toEqual({
76
+ method: "POST",
77
+ headers: {
78
+ Authorization: "Bearer p.test-token",
79
+ },
80
+ });
81
+
82
+ const [jobUrl, jobInit] = mockFetch.mock.calls[1];
83
+ const jobParsed = expectFromParam(jobUrl);
84
+ expect(jobParsed.pathname).toBe("/v0/jobs/job-123");
85
+ expect(jobInit).toEqual({
86
+ method: "GET",
87
+ headers: {
88
+ Authorization: "Bearer p.test-token",
89
+ },
90
+ });
91
+
92
+ const [branchUrl, branchInit] = mockFetch.mock.calls[2];
93
+ const branchParsed = expectFromParam(branchUrl);
94
+ expect(branchParsed.pathname).toBe("/v0/environments/my-feature");
95
+ expect(branchParsed.searchParams.get("with_token")).toBe("true");
96
+ expect(branchInit).toEqual({
97
+ method: "GET",
98
+ headers: {
99
+ Authorization: "Bearer p.test-token",
100
+ },
101
+ });
95
102
  expect(result).toEqual(mockBranch);
96
103
  });
97
104
 
@@ -196,15 +203,15 @@ describe("Branch API client", () => {
196
203
 
197
204
  const result = await listBranches(config);
198
205
 
199
- expect(mockFetch).toHaveBeenCalledWith(
200
- "https://api.tinybird.co/v1/environments",
201
- {
202
- method: "GET",
203
- headers: {
204
- Authorization: "Bearer p.test-token",
205
- },
206
- }
207
- );
206
+ const [url, init] = mockFetch.mock.calls[0];
207
+ const parsed = expectFromParam(url);
208
+ expect(parsed.pathname).toBe("/v1/environments");
209
+ expect(init).toEqual({
210
+ method: "GET",
211
+ headers: {
212
+ Authorization: "Bearer p.test-token",
213
+ },
214
+ });
208
215
  expect(result).toEqual(mockBranches);
209
216
  });
210
217
 
@@ -235,15 +242,16 @@ describe("Branch API client", () => {
235
242
 
236
243
  const result = await getBranch(config, "my-feature");
237
244
 
238
- expect(mockFetch).toHaveBeenCalledWith(
239
- "https://api.tinybird.co/v0/environments/my-feature?with_token=true",
240
- {
241
- method: "GET",
242
- headers: {
243
- Authorization: "Bearer p.test-token",
244
- },
245
- }
246
- );
245
+ const [url, init] = mockFetch.mock.calls[0];
246
+ const parsed = expectFromParam(url);
247
+ expect(parsed.pathname).toBe("/v0/environments/my-feature");
248
+ expect(parsed.searchParams.get("with_token")).toBe("true");
249
+ expect(init).toEqual({
250
+ method: "GET",
251
+ headers: {
252
+ Authorization: "Bearer p.test-token",
253
+ },
254
+ });
247
255
  expect(result).toEqual(mockBranch);
248
256
  });
249
257
 
@@ -269,15 +277,15 @@ describe("Branch API client", () => {
269
277
 
270
278
  await deleteBranch(config, "my-feature");
271
279
 
272
- expect(mockFetch).toHaveBeenCalledWith(
273
- "https://api.tinybird.co/v1/environments/my-feature",
274
- {
275
- method: "DELETE",
276
- headers: {
277
- Authorization: "Bearer p.test-token",
278
- },
279
- }
280
- );
280
+ const [url, init] = mockFetch.mock.calls[0];
281
+ const parsed = expectFromParam(url);
282
+ expect(parsed.pathname).toBe("/v1/environments/my-feature");
283
+ expect(init).toEqual({
284
+ method: "DELETE",
285
+ headers: {
286
+ Authorization: "Bearer p.test-token",
287
+ },
288
+ });
281
289
  });
282
290
  });
283
291
 
@@ -3,6 +3,8 @@
3
3
  * Uses the /v1/environments endpoints (Forward API)
4
4
  */
5
5
 
6
+ import { tinybirdFetch } from "./fetcher.js";
7
+
6
8
  /**
7
9
  * Branch information from Tinybird API
8
10
  */
@@ -90,7 +92,7 @@ async function pollJob(
90
92
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
91
93
  const url = new URL(`/v0/jobs/${jobId}`, config.baseUrl);
92
94
 
93
- const response = await fetch(url.toString(), {
95
+ const response = await tinybirdFetch(url.toString(), {
94
96
  method: "GET",
95
97
  headers: {
96
98
  Authorization: `Bearer ${config.token}`,
@@ -148,7 +150,7 @@ export async function createBranch(
148
150
  const url = new URL("/v1/environments", config.baseUrl);
149
151
  url.searchParams.set("name", name);
150
152
 
151
- const response = await fetch(url.toString(), {
153
+ const response = await tinybirdFetch(url.toString(), {
152
154
  method: "POST",
153
155
  headers: {
154
156
  Authorization: `Bearer ${config.token}`,
@@ -205,7 +207,7 @@ export async function listBranches(
205
207
  ): Promise<TinybirdBranch[]> {
206
208
  const url = new URL("/v1/environments", config.baseUrl);
207
209
 
208
- const response = await fetch(url.toString(), {
210
+ const response = await tinybirdFetch(url.toString(), {
209
211
  method: "GET",
210
212
  headers: {
211
213
  Authorization: `Bearer ${config.token}`,
@@ -240,7 +242,7 @@ export async function getBranch(
240
242
  const url = new URL(`/v0/environments/${encodeURIComponent(name)}`, config.baseUrl);
241
243
  url.searchParams.set("with_token", "true");
242
244
 
243
- const response = await fetch(url.toString(), {
245
+ const response = await tinybirdFetch(url.toString(), {
244
246
  method: "GET",
245
247
  headers: {
246
248
  Authorization: `Bearer ${config.token}`,
@@ -273,7 +275,7 @@ export async function deleteBranch(
273
275
  ): Promise<void> {
274
276
  const url = new URL(`/v1/environments/${encodeURIComponent(name)}`, config.baseUrl);
275
277
 
276
- const response = await fetch(url.toString(), {
278
+ const response = await tinybirdFetch(url.toString(), {
277
279
  method: "DELETE",
278
280
  headers: {
279
281
  Authorization: `Bearer ${config.token}`,
package/src/api/build.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import type { GeneratedResources } from "../generator/index.js";
7
+ import { tinybirdFetch } from "./fetcher.js";
7
8
 
8
9
  /**
9
10
  * Configuration for building/deploying to Tinybird
@@ -190,7 +191,7 @@ export async function buildToTinybird(
190
191
  console.log(`[debug] POST ${url}`);
191
192
  }
192
193
 
193
- const response = await fetch(url, {
194
+ const response = await tinybirdFetch(url, {
194
195
  method: "POST",
195
196
  headers: {
196
197
  Authorization: `Bearer ${config.token}`,
@@ -1,20 +1,30 @@
1
- import { describe, it, expect, beforeAll, afterEach, afterAll } from "vitest";
1
+ import { describe, it, expect, beforeAll, beforeEach, afterEach, afterAll } from "vitest";
2
2
  import { setupServer } from "msw/node";
3
3
  import { http, HttpResponse } from "msw";
4
4
  import { deployToMain } from "./deploy.js";
5
5
  import type { BuildConfig } from "./build.js";
6
6
  import {
7
7
  BASE_URL,
8
- createBuildSuccessResponse,
8
+ createDeploySuccessResponse,
9
+ createDeploymentStatusResponse,
10
+ createSetLiveSuccessResponse,
9
11
  createBuildFailureResponse,
10
12
  createBuildMultipleErrorsResponse,
11
- createNoChangesResponse,
13
+ createDeploymentsListResponse,
12
14
  } from "../test/handlers.js";
13
15
  import type { GeneratedResources } from "../generator/index.js";
14
16
 
15
17
  const server = setupServer();
16
18
 
17
19
  beforeAll(() => server.listen({ onUnhandledRequest: "error" }));
20
+ beforeEach(() => {
21
+ // Set up default handler for deployments list (used by stale deployment cleanup)
22
+ server.use(
23
+ http.get(`${BASE_URL}/v1/deployments`, () => {
24
+ return HttpResponse.json(createDeploymentsListResponse());
25
+ })
26
+ );
27
+ });
18
28
  afterEach(() => server.resetHandlers());
19
29
  afterAll(() => server.close());
20
30
 
@@ -34,42 +44,64 @@ describe("Deploy API", () => {
34
44
  connections: [],
35
45
  };
36
46
 
47
+ // Helper to set up successful deploy flow
48
+ function setupSuccessfulDeployFlow(deploymentId = "deploy-abc") {
49
+ server.use(
50
+ http.post(`${BASE_URL}/v1/deploy`, () => {
51
+ return HttpResponse.json(
52
+ createDeploySuccessResponse({ deploymentId, status: "pending" })
53
+ );
54
+ }),
55
+ http.get(`${BASE_URL}/v1/deployments/${deploymentId}`, () => {
56
+ return HttpResponse.json(
57
+ createDeploymentStatusResponse({ deploymentId, status: "data_ready" })
58
+ );
59
+ }),
60
+ http.post(`${BASE_URL}/v1/deployments/${deploymentId}/set-live`, () => {
61
+ return HttpResponse.json(createSetLiveSuccessResponse());
62
+ })
63
+ );
64
+ }
65
+
37
66
  describe("deployToMain", () => {
38
- it("successfully deploys resources", async () => {
39
- server.use(
40
- http.post(`${BASE_URL}/v1/deploy`, () => {
41
- return HttpResponse.json(
42
- createBuildSuccessResponse({
43
- buildId: "deploy-abc",
44
- newPipes: ["top_events"],
45
- newDatasources: ["events"],
46
- })
47
- );
48
- })
49
- );
67
+ it("successfully deploys resources with full flow", async () => {
68
+ setupSuccessfulDeployFlow("deploy-abc");
50
69
 
51
- const result = await deployToMain(config, resources);
70
+ const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
52
71
 
53
72
  expect(result.success).toBe(true);
54
73
  expect(result.result).toBe("success");
55
74
  expect(result.buildId).toBe("deploy-abc");
56
75
  expect(result.datasourceCount).toBe(1);
57
76
  expect(result.pipeCount).toBe(1);
58
- expect(result.pipes?.created).toEqual(["top_events"]);
59
- expect(result.datasources?.created).toEqual(["events"]);
60
77
  });
61
78
 
62
- it("handles no changes response", async () => {
79
+ it("polls until deployment is ready", async () => {
80
+ let pollCount = 0;
81
+
63
82
  server.use(
64
83
  http.post(`${BASE_URL}/v1/deploy`, () => {
65
- return HttpResponse.json(createNoChangesResponse());
84
+ return HttpResponse.json(
85
+ createDeploySuccessResponse({ deploymentId: "deploy-poll", status: "pending" })
86
+ );
87
+ }),
88
+ http.get(`${BASE_URL}/v1/deployments/deploy-poll`, () => {
89
+ pollCount++;
90
+ // Return pending for first 2 polls, then data_ready
91
+ const status = pollCount < 3 ? "pending" : "data_ready";
92
+ return HttpResponse.json(
93
+ createDeploymentStatusResponse({ deploymentId: "deploy-poll", status })
94
+ );
95
+ }),
96
+ http.post(`${BASE_URL}/v1/deployments/deploy-poll/set-live`, () => {
97
+ return HttpResponse.json(createSetLiveSuccessResponse());
66
98
  })
67
99
  );
68
100
 
69
- const result = await deployToMain(config, resources);
101
+ const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
70
102
 
71
103
  expect(result.success).toBe(true);
72
- expect(result.result).toBe("no_changes");
104
+ expect(pollCount).toBe(3);
73
105
  });
74
106
 
75
107
  it("handles deploy failure with single error", async () => {
@@ -146,31 +178,68 @@ describe("Deploy API", () => {
146
178
  server.use(
147
179
  http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
148
180
  capturedUrl = request.url;
149
- return HttpResponse.json(createBuildSuccessResponse());
181
+ return HttpResponse.json(
182
+ createDeploySuccessResponse({ deploymentId: "deploy-url-test" })
183
+ );
184
+ }),
185
+ http.get(`${BASE_URL}/v1/deployments/deploy-url-test`, () => {
186
+ return HttpResponse.json(
187
+ createDeploymentStatusResponse({ deploymentId: "deploy-url-test", status: "data_ready" })
188
+ );
189
+ }),
190
+ http.post(`${BASE_URL}/v1/deployments/deploy-url-test/set-live`, () => {
191
+ return HttpResponse.json(createSetLiveSuccessResponse());
150
192
  })
151
193
  );
152
194
 
153
- await deployToMain(config, resources);
195
+ await deployToMain(config, resources, { pollIntervalMs: 1 });
154
196
 
155
- expect(capturedUrl).toBe(`${BASE_URL}/v1/deploy`);
197
+ const parsed = new URL(capturedUrl ?? "");
198
+ expect(parsed.pathname).toBe("/v1/deploy");
199
+ expect(parsed.searchParams.get("from")).toBe("ts-sdk");
156
200
  });
157
201
 
158
- it("tracks changed and deleted resources", async () => {
202
+ it("handles failed deployment status", async () => {
159
203
  server.use(
160
204
  http.post(`${BASE_URL}/v1/deploy`, () => {
161
205
  return HttpResponse.json(
162
- createBuildSuccessResponse({
163
- changedPipes: ["top_events"],
164
- deletedDatasources: ["old_ds"],
165
- })
206
+ createDeploySuccessResponse({ deploymentId: "deploy-fail", status: "pending" })
207
+ );
208
+ }),
209
+ http.get(`${BASE_URL}/v1/deployments/deploy-fail`, () => {
210
+ return HttpResponse.json(
211
+ createDeploymentStatusResponse({ deploymentId: "deploy-fail", status: "failed" })
166
212
  );
167
213
  })
168
214
  );
169
215
 
170
- const result = await deployToMain(config, resources);
216
+ const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
171
217
 
172
- expect(result.pipes?.changed).toEqual(["top_events"]);
173
- expect(result.datasources?.deleted).toEqual(["old_ds"]);
218
+ expect(result.success).toBe(false);
219
+ expect(result.error).toContain("Deployment failed with status: failed");
220
+ });
221
+
222
+ it("handles set-live failure", async () => {
223
+ server.use(
224
+ http.post(`${BASE_URL}/v1/deploy`, () => {
225
+ return HttpResponse.json(
226
+ createDeploySuccessResponse({ deploymentId: "deploy-setlive-fail" })
227
+ );
228
+ }),
229
+ http.get(`${BASE_URL}/v1/deployments/deploy-setlive-fail`, () => {
230
+ return HttpResponse.json(
231
+ createDeploymentStatusResponse({ deploymentId: "deploy-setlive-fail", status: "data_ready" })
232
+ );
233
+ }),
234
+ http.post(`${BASE_URL}/v1/deployments/deploy-setlive-fail/set-live`, () => {
235
+ return HttpResponse.json({ error: "Set live failed" }, { status: 500 });
236
+ })
237
+ );
238
+
239
+ const result = await deployToMain(config, resources, { pollIntervalMs: 1 });
240
+
241
+ expect(result.success).toBe(false);
242
+ expect(result.error).toContain("Failed to set deployment as live");
174
243
  });
175
244
 
176
245
  it("normalizes baseUrl with trailing slash", async () => {
@@ -179,16 +248,52 @@ describe("Deploy API", () => {
179
248
  server.use(
180
249
  http.post(`${BASE_URL}/v1/deploy`, ({ request }) => {
181
250
  capturedUrl = request.url;
182
- return HttpResponse.json(createBuildSuccessResponse());
251
+ return HttpResponse.json(
252
+ createDeploySuccessResponse({ deploymentId: "deploy-slash" })
253
+ );
254
+ }),
255
+ http.get(`${BASE_URL}/v1/deployments/deploy-slash`, () => {
256
+ return HttpResponse.json(
257
+ createDeploymentStatusResponse({ deploymentId: "deploy-slash", status: "data_ready" })
258
+ );
259
+ }),
260
+ http.post(`${BASE_URL}/v1/deployments/deploy-slash/set-live`, () => {
261
+ return HttpResponse.json(createSetLiveSuccessResponse());
183
262
  })
184
263
  );
185
264
 
186
265
  await deployToMain(
187
266
  { ...config, baseUrl: `${BASE_URL}/` },
188
- resources
267
+ resources,
268
+ { pollIntervalMs: 1 }
189
269
  );
190
270
 
191
- expect(capturedUrl).toBe(`${BASE_URL}/v1/deploy`);
271
+ const parsed = new URL(capturedUrl ?? "");
272
+ expect(parsed.pathname).toBe("/v1/deploy");
273
+ expect(parsed.searchParams.get("from")).toBe("ts-sdk");
274
+ });
275
+
276
+ it("times out when deployment never becomes ready", async () => {
277
+ server.use(
278
+ http.post(`${BASE_URL}/v1/deploy`, () => {
279
+ return HttpResponse.json(
280
+ createDeploySuccessResponse({ deploymentId: "deploy-timeout", status: "pending" })
281
+ );
282
+ }),
283
+ http.get(`${BASE_URL}/v1/deployments/deploy-timeout`, () => {
284
+ return HttpResponse.json(
285
+ createDeploymentStatusResponse({ deploymentId: "deploy-timeout", status: "pending" })
286
+ );
287
+ })
288
+ );
289
+
290
+ const result = await deployToMain(config, resources, {
291
+ pollIntervalMs: 1,
292
+ maxPollAttempts: 3,
293
+ });
294
+
295
+ expect(result.success).toBe(false);
296
+ expect(result.error).toContain("Deployment timed out");
192
297
  });
193
298
  });
194
299
  });