@langslide/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/README.md +708 -0
  2. package/dist/api/auth.d.ts +18 -0
  3. package/dist/api/auth.d.ts.map +1 -0
  4. package/dist/api/auth.js +43 -0
  5. package/dist/api/auth.js.map +1 -0
  6. package/dist/api/integrations.d.ts +27 -0
  7. package/dist/api/integrations.d.ts.map +1 -0
  8. package/dist/api/integrations.js +64 -0
  9. package/dist/api/integrations.js.map +1 -0
  10. package/dist/api/mcp.d.ts +15 -0
  11. package/dist/api/mcp.d.ts.map +1 -0
  12. package/dist/api/mcp.js +24 -0
  13. package/dist/api/mcp.js.map +1 -0
  14. package/dist/api/recipes.d.ts +19 -0
  15. package/dist/api/recipes.d.ts.map +1 -0
  16. package/dist/api/recipes.js +37 -0
  17. package/dist/api/recipes.js.map +1 -0
  18. package/dist/api/users.d.ts +19 -0
  19. package/dist/api/users.d.ts.map +1 -0
  20. package/dist/api/users.js +32 -0
  21. package/dist/api/users.js.map +1 -0
  22. package/dist/api/workflows.d.ts +44 -0
  23. package/dist/api/workflows.d.ts.map +1 -0
  24. package/dist/api/workflows.js +95 -0
  25. package/dist/api/workflows.js.map +1 -0
  26. package/dist/browser.js +2 -0
  27. package/dist/browser.js.map +1 -0
  28. package/dist/client.d.ts +35 -0
  29. package/dist/client.d.ts.map +1 -0
  30. package/dist/client.js +87 -0
  31. package/dist/client.js.map +1 -0
  32. package/dist/config.d.ts +21 -0
  33. package/dist/config.d.ts.map +1 -0
  34. package/dist/config.js +39 -0
  35. package/dist/config.js.map +1 -0
  36. package/dist/errors.d.ts +39 -0
  37. package/dist/errors.d.ts.map +1 -0
  38. package/dist/errors.js +92 -0
  39. package/dist/errors.js.map +1 -0
  40. package/dist/index.d.ts +9 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +36 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/react/LangslideProvider.d.ts +12 -0
  45. package/dist/react/LangslideProvider.d.ts.map +1 -0
  46. package/dist/react/LangslideProvider.js +87 -0
  47. package/dist/react/LangslideProvider.js.map +1 -0
  48. package/dist/react/api/auth.d.ts +18 -0
  49. package/dist/react/api/auth.d.ts.map +1 -0
  50. package/dist/react/api/auth.js +43 -0
  51. package/dist/react/api/auth.js.map +1 -0
  52. package/dist/react/api/integrations.d.ts +27 -0
  53. package/dist/react/api/integrations.d.ts.map +1 -0
  54. package/dist/react/api/integrations.js +64 -0
  55. package/dist/react/api/integrations.js.map +1 -0
  56. package/dist/react/api/mcp.d.ts +15 -0
  57. package/dist/react/api/mcp.d.ts.map +1 -0
  58. package/dist/react/api/mcp.js +24 -0
  59. package/dist/react/api/mcp.js.map +1 -0
  60. package/dist/react/api/recipes.d.ts +19 -0
  61. package/dist/react/api/recipes.d.ts.map +1 -0
  62. package/dist/react/api/recipes.js +37 -0
  63. package/dist/react/api/recipes.js.map +1 -0
  64. package/dist/react/api/users.d.ts +19 -0
  65. package/dist/react/api/users.d.ts.map +1 -0
  66. package/dist/react/api/users.js +32 -0
  67. package/dist/react/api/users.js.map +1 -0
  68. package/dist/react/api/workflows.d.ts +44 -0
  69. package/dist/react/api/workflows.d.ts.map +1 -0
  70. package/dist/react/api/workflows.js +95 -0
  71. package/dist/react/api/workflows.js.map +1 -0
  72. package/dist/react/client.d.ts +35 -0
  73. package/dist/react/client.d.ts.map +1 -0
  74. package/dist/react/client.js +87 -0
  75. package/dist/react/client.js.map +1 -0
  76. package/dist/react/config.d.ts +21 -0
  77. package/dist/react/config.d.ts.map +1 -0
  78. package/dist/react/config.js +39 -0
  79. package/dist/react/config.js.map +1 -0
  80. package/dist/react/errors.d.ts +39 -0
  81. package/dist/react/errors.d.ts.map +1 -0
  82. package/dist/react/errors.js +92 -0
  83. package/dist/react/errors.js.map +1 -0
  84. package/dist/react/index.d.ts +10 -0
  85. package/dist/react/index.d.ts.map +1 -0
  86. package/dist/react/index.js +18 -0
  87. package/dist/react/index.js.map +1 -0
  88. package/dist/react/react/LangslideProvider.d.ts +19 -0
  89. package/dist/react/react/LangslideProvider.d.ts.map +1 -0
  90. package/dist/react/react/LangslideProvider.js +87 -0
  91. package/dist/react/react/LangslideProvider.js.map +1 -0
  92. package/dist/react/react/index.d.ts +10 -0
  93. package/dist/react/react/index.d.ts.map +1 -0
  94. package/dist/react/react/index.js +18 -0
  95. package/dist/react/react/index.js.map +1 -0
  96. package/dist/react/react/useIntegrations.d.ts +13 -0
  97. package/dist/react/react/useIntegrations.d.ts.map +1 -0
  98. package/dist/react/react/useIntegrations.js +70 -0
  99. package/dist/react/react/useIntegrations.js.map +1 -0
  100. package/dist/react/react/useWorkflows.d.ts +14 -0
  101. package/dist/react/react/useWorkflows.d.ts.map +1 -0
  102. package/dist/react/react/useWorkflows.js +108 -0
  103. package/dist/react/react/useWorkflows.js.map +1 -0
  104. package/dist/react/types/common.d.ts +28 -0
  105. package/dist/react/types/common.d.ts.map +1 -0
  106. package/dist/react/types/common.js +6 -0
  107. package/dist/react/types/common.js.map +1 -0
  108. package/dist/react/types/index.d.ts +8 -0
  109. package/dist/react/types/index.d.ts.map +1 -0
  110. package/dist/react/types/index.js +25 -0
  111. package/dist/react/types/index.js.map +1 -0
  112. package/dist/react/types/integration.d.ts +23 -0
  113. package/dist/react/types/integration.d.ts.map +1 -0
  114. package/dist/react/types/integration.js +6 -0
  115. package/dist/react/types/integration.js.map +1 -0
  116. package/dist/react/types/permissions.d.ts +31 -0
  117. package/dist/react/types/permissions.d.ts.map +1 -0
  118. package/dist/react/types/permissions.js +33 -0
  119. package/dist/react/types/permissions.js.map +1 -0
  120. package/dist/react/types/workflow.d.ts +33 -0
  121. package/dist/react/types/workflow.d.ts.map +1 -0
  122. package/dist/react/types/workflow.js +6 -0
  123. package/dist/react/types/workflow.js.map +1 -0
  124. package/dist/react/useIntegrations.d.ts +13 -0
  125. package/dist/react/useIntegrations.d.ts.map +1 -0
  126. package/dist/react/useIntegrations.js +70 -0
  127. package/dist/react/useIntegrations.js.map +1 -0
  128. package/dist/react/useWorkflows.d.ts +14 -0
  129. package/dist/react/useWorkflows.d.ts.map +1 -0
  130. package/dist/react/useWorkflows.js +108 -0
  131. package/dist/react/useWorkflows.js.map +1 -0
  132. package/dist/react/utils/permission-guard.d.ts +13 -0
  133. package/dist/react/utils/permission-guard.d.ts.map +1 -0
  134. package/dist/react/utils/permission-guard.js +28 -0
  135. package/dist/react/utils/permission-guard.js.map +1 -0
  136. package/dist/react/utils/permissions.d.ts +20 -0
  137. package/dist/react/utils/permissions.d.ts.map +1 -0
  138. package/dist/react/utils/permissions.js +48 -0
  139. package/dist/react/utils/permissions.js.map +1 -0
  140. package/dist/react/utils/request.d.ts +7 -0
  141. package/dist/react/utils/request.d.ts.map +1 -0
  142. package/dist/react/utils/request.js +48 -0
  143. package/dist/react/utils/request.js.map +1 -0
  144. package/dist/types/auth.d.ts +5 -0
  145. package/dist/types/auth.d.ts.map +1 -0
  146. package/dist/types/auth.js +7 -0
  147. package/dist/types/auth.js.map +1 -0
  148. package/dist/types/common.d.ts +28 -0
  149. package/dist/types/common.d.ts.map +1 -0
  150. package/dist/types/common.js +6 -0
  151. package/dist/types/common.js.map +1 -0
  152. package/dist/types/index.d.ts +8 -0
  153. package/dist/types/index.d.ts.map +1 -0
  154. package/dist/types/index.js +25 -0
  155. package/dist/types/index.js.map +1 -0
  156. package/dist/types/integration.d.ts +23 -0
  157. package/dist/types/integration.d.ts.map +1 -0
  158. package/dist/types/integration.js +6 -0
  159. package/dist/types/integration.js.map +1 -0
  160. package/dist/types/permissions.d.ts +31 -0
  161. package/dist/types/permissions.d.ts.map +1 -0
  162. package/dist/types/permissions.js +33 -0
  163. package/dist/types/permissions.js.map +1 -0
  164. package/dist/types/workflow.d.ts +33 -0
  165. package/dist/types/workflow.d.ts.map +1 -0
  166. package/dist/types/workflow.js +6 -0
  167. package/dist/types/workflow.js.map +1 -0
  168. package/dist/utils/permission-guard.d.ts +13 -0
  169. package/dist/utils/permission-guard.d.ts.map +1 -0
  170. package/dist/utils/permission-guard.js +28 -0
  171. package/dist/utils/permission-guard.js.map +1 -0
  172. package/dist/utils/permissions.d.ts +20 -0
  173. package/dist/utils/permissions.d.ts.map +1 -0
  174. package/dist/utils/permissions.js +48 -0
  175. package/dist/utils/permissions.js.map +1 -0
  176. package/dist/utils/request.d.ts +7 -0
  177. package/dist/utils/request.d.ts.map +1 -0
  178. package/dist/utils/request.js +48 -0
  179. package/dist/utils/request.js.map +1 -0
  180. package/dist/utils/validation.d.ts +8 -0
  181. package/dist/utils/validation.d.ts.map +1 -0
  182. package/dist/utils/validation.js +37 -0
  183. package/dist/utils/validation.js.map +1 -0
  184. package/package.json +76 -0
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ * Type exports
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./common"), exports);
21
+ __exportStar(require("./workflow"), exports);
22
+ __exportStar(require("./integration"), exports);
23
+ // export * from './auth'; // No types to export currently
24
+ __exportStar(require("./permissions"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,2CAAyB;AACzB,6CAA2B;AAC3B,gDAA8B;AAC9B,0DAA0D;AAC1D,gDAA8B"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Integration-related types
3
+ */
4
+ export interface Integration {
5
+ id: string;
6
+ name: string;
7
+ displayName?: string;
8
+ description?: string;
9
+ icon_url?: string;
10
+ status: string;
11
+ category?: string;
12
+ subCategory?: string;
13
+ [key: string]: any;
14
+ }
15
+ export interface Connection {
16
+ id: string;
17
+ connection_name: string;
18
+ status: string;
19
+ created_at?: string;
20
+ updated_at?: string;
21
+ [key: string]: any;
22
+ }
23
+ //# sourceMappingURL=integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../src/types/integration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Integration-related types
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/types/integration.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * API Key Permissions
3
+ */
4
+ export interface IAPIKeyPermissions {
5
+ sdk_methods: string[];
6
+ connectors: string[];
7
+ }
8
+ /**
9
+ * SDK Method Permissions
10
+ */
11
+ export declare const SDK_METHODS: {
12
+ readonly WORKFLOWS_READ: "workflows:read";
13
+ readonly WORKFLOWS_WRITE: "workflows:write";
14
+ readonly CONNECTORS_READ: "connectors:read";
15
+ readonly CONNECTORS_WRITE: "connectors:write";
16
+ readonly INTEGRATIONS_READ: "integrations:read";
17
+ readonly INTEGRATIONS_WRITE: "integrations:write";
18
+ readonly USERS_READ: "users:read";
19
+ readonly USERS_WRITE: "users:write";
20
+ readonly MCP_READ: "mcp:read";
21
+ readonly MCP_WRITE: "mcp:write";
22
+ readonly RECIPES_READ: "recipes:read";
23
+ };
24
+ /**
25
+ * Permission Presets
26
+ */
27
+ export declare const PERMISSION_PRESETS: {
28
+ readonly READ_ONLY: readonly ["workflows:read", "connectors:read", "integrations:read", "users:read", "recipes:read"];
29
+ readonly FULL_ACCESS: ("workflows:read" | "workflows:write" | "connectors:read" | "connectors:write" | "integrations:read" | "integrations:write" | "users:read" | "users:write" | "mcp:read" | "mcp:write" | "recipes:read")[];
30
+ };
31
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/types/permissions.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;CAYd,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;CASrB,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PERMISSION_PRESETS = exports.SDK_METHODS = void 0;
4
+ /**
5
+ * SDK Method Permissions
6
+ */
7
+ exports.SDK_METHODS = {
8
+ WORKFLOWS_READ: 'workflows:read',
9
+ WORKFLOWS_WRITE: 'workflows:write',
10
+ CONNECTORS_READ: 'connectors:read',
11
+ CONNECTORS_WRITE: 'connectors:write',
12
+ INTEGRATIONS_READ: 'integrations:read',
13
+ INTEGRATIONS_WRITE: 'integrations:write',
14
+ USERS_READ: 'users:read',
15
+ USERS_WRITE: 'users:write',
16
+ MCP_READ: 'mcp:read',
17
+ MCP_WRITE: 'mcp:write',
18
+ RECIPES_READ: 'recipes:read',
19
+ };
20
+ /**
21
+ * Permission Presets
22
+ */
23
+ exports.PERMISSION_PRESETS = {
24
+ READ_ONLY: [
25
+ exports.SDK_METHODS.WORKFLOWS_READ,
26
+ exports.SDK_METHODS.CONNECTORS_READ,
27
+ exports.SDK_METHODS.INTEGRATIONS_READ,
28
+ exports.SDK_METHODS.USERS_READ,
29
+ exports.SDK_METHODS.RECIPES_READ,
30
+ ],
31
+ FULL_ACCESS: Object.values(exports.SDK_METHODS),
32
+ };
33
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/types/permissions.ts"],"names":[],"mappings":";;;AAQA;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,mBAAmB;IACtC,kBAAkB,EAAE,oBAAoB;IACxC,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;CACpB,CAAC;AAEX;;GAEG;AACU,QAAA,kBAAkB,GAAG;IAChC,SAAS,EAAE;QACT,mBAAW,CAAC,cAAc;QAC1B,mBAAW,CAAC,eAAe;QAC3B,mBAAW,CAAC,iBAAiB;QAC7B,mBAAW,CAAC,UAAU;QACtB,mBAAW,CAAC,YAAY;KACzB;IACD,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAW,CAAC;CAC/B,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Workflow-related types
3
+ */
4
+ export interface Workflow {
5
+ id: string;
6
+ name: string;
7
+ status: string;
8
+ [key: string]: any;
9
+ }
10
+ export interface CreateWorkflowPayload {
11
+ name: string;
12
+ status: string;
13
+ [key: string]: any;
14
+ }
15
+ export interface UpdateWorkflowPayload {
16
+ status?: string;
17
+ name?: string;
18
+ [key: string]: any;
19
+ }
20
+ export interface WorkflowUsage {
21
+ [key: string]: any;
22
+ }
23
+ export interface TriggerWorkflowPayload {
24
+ body?: any;
25
+ params?: Record<string, any>;
26
+ queryParams?: Record<string, any>;
27
+ }
28
+ export interface TriggerWorkflowResponse {
29
+ status: string;
30
+ message: string;
31
+ data: Record<string, any>;
32
+ }
33
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/types/workflow.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Workflow-related types
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/types/workflow.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,13 @@
1
+ import { IAPIKeyPermissions } from '../types/permissions';
2
+ /**
3
+ * Check if user has required permission before making API call
4
+ * @throws {LangslidePermissionError} If permission is missing
5
+ */
6
+ export declare function requirePermission(permissions: IAPIKeyPermissions | undefined, requiredPermission: string): void;
7
+ /**
8
+ * Check if user has access to a specific connector
9
+ * Connector names are normalized to lowercase for consistent matching
10
+ * @throws {LangslidePermissionError} If connector access is denied
11
+ */
12
+ export declare function requireConnectorAccess(permissions: IAPIKeyPermissions | undefined, connectorName: string): void;
13
+ //# sourceMappingURL=permission-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-guard.d.ts","sourceRoot":"","sources":["../../src/utils/permission-guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,kBAAkB,GAAG,SAAS,EAC3C,kBAAkB,EAAE,MAAM,GACzB,IAAI,CAON;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,kBAAkB,GAAG,SAAS,EAC3C,aAAa,EAAE,MAAM,GACpB,IAAI,CAQN"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requirePermission = requirePermission;
4
+ exports.requireConnectorAccess = requireConnectorAccess;
5
+ const errors_1 = require("../errors");
6
+ const permissions_1 = require("./permissions");
7
+ /**
8
+ * Check if user has required permission before making API call
9
+ * @throws {LangslidePermissionError} If permission is missing
10
+ */
11
+ function requirePermission(permissions, requiredPermission) {
12
+ if (!permissions_1.PermissionChecker.hasPermission(permissions, requiredPermission)) {
13
+ throw new errors_1.LangslidePermissionError(`Insufficient permissions. Required: ${requiredPermission}`, requiredPermission);
14
+ }
15
+ }
16
+ /**
17
+ * Check if user has access to a specific connector
18
+ * Connector names are normalized to lowercase for consistent matching
19
+ * @throws {LangslidePermissionError} If connector access is denied
20
+ */
21
+ function requireConnectorAccess(permissions, connectorName) {
22
+ // Normalize connector name to lowercase before checking
23
+ const normalizedName = connectorName.toLowerCase();
24
+ if (!permissions_1.PermissionChecker.hasConnectorAccess(permissions, normalizedName)) {
25
+ throw new errors_1.LangslidePermissionError(`Insufficient permissions. Access to connector '${connectorName}' is required.`);
26
+ }
27
+ }
28
+ //# sourceMappingURL=permission-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-guard.js","sourceRoot":"","sources":["../../src/utils/permission-guard.ts"],"names":[],"mappings":";;AAQA,8CAUC;AAOD,wDAWC;AApCD,sCAAqD;AAErD,+CAAkD;AAElD;;;GAGG;AACH,SAAgB,iBAAiB,CAC/B,WAA2C,EAC3C,kBAA0B;IAE1B,IAAI,CAAC,+BAAiB,CAAC,aAAa,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,iCAAwB,CAChC,uCAAuC,kBAAkB,EAAE,EAC3D,kBAAkB,CACnB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CACpC,WAA2C,EAC3C,aAAqB;IAErB,wDAAwD;IACxD,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IACnD,IAAI,CAAC,+BAAiB,CAAC,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,iCAAwB,CAChC,kDAAkD,aAAa,gBAAgB,CAChF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { IAPIKeyPermissions } from '../types/permissions';
2
+ /**
3
+ * Permission checker utility class
4
+ */
5
+ export declare class PermissionChecker {
6
+ /**
7
+ * Check if a required permission exists in the permissions array
8
+ */
9
+ static hasPermission(permissions: IAPIKeyPermissions | undefined, requiredPermission: string): boolean;
10
+ /**
11
+ * Check if user has access to a specific connector
12
+ * Connector names are normalized to lowercase for consistent matching
13
+ */
14
+ static hasConnectorAccess(permissions: IAPIKeyPermissions | undefined, connectorName: string): boolean;
15
+ /**
16
+ * Get all available permissions
17
+ */
18
+ static getAllPermissions(): string[];
19
+ }
20
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/utils/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAe,MAAM,sBAAsB,CAAC;AAEvE;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;WACW,aAAa,CACzB,WAAW,EAAE,kBAAkB,GAAG,SAAS,EAC3C,kBAAkB,EAAE,MAAM,GACzB,OAAO;IAeV;;;OAGG;WACW,kBAAkB,CAC9B,WAAW,EAAE,kBAAkB,GAAG,SAAS,EAC3C,aAAa,EAAE,MAAM,GACpB,OAAO;IAmBV;;OAEG;WACW,iBAAiB,IAAI,MAAM,EAAE;CAG5C"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PermissionChecker = void 0;
4
+ const permissions_1 = require("../types/permissions");
5
+ /**
6
+ * Permission checker utility class
7
+ */
8
+ class PermissionChecker {
9
+ /**
10
+ * Check if a required permission exists in the permissions array
11
+ */
12
+ static hasPermission(permissions, requiredPermission) {
13
+ // If no permissions provided (JWT user), allow access
14
+ if (!permissions) {
15
+ return true;
16
+ }
17
+ // Check for wildcard permission
18
+ if (permissions.sdk_methods.includes('*')) {
19
+ return true;
20
+ }
21
+ // Check if the required permission is in the SDK methods
22
+ return permissions.sdk_methods.includes(requiredPermission);
23
+ }
24
+ /**
25
+ * Check if user has access to a specific connector
26
+ * Connector names are normalized to lowercase for consistent matching
27
+ */
28
+ static hasConnectorAccess(permissions, connectorName) {
29
+ // If no permissions provided (JWT user), allow access
30
+ if (!permissions) {
31
+ return true;
32
+ }
33
+ // Normalize connector name to lowercase for consistent matching
34
+ const normalizedConnectorName = connectorName.toLowerCase();
35
+ // Check if user has access to all connectors (*) or specific connector
36
+ // Also normalize permission connector names for comparison
37
+ return (permissions.connectors.includes('*') ||
38
+ permissions.connectors.some((perm) => perm.toLowerCase() === normalizedConnectorName));
39
+ }
40
+ /**
41
+ * Get all available permissions
42
+ */
43
+ static getAllPermissions() {
44
+ return Object.values(permissions_1.SDK_METHODS);
45
+ }
46
+ }
47
+ exports.PermissionChecker = PermissionChecker;
48
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/utils/permissions.ts"],"names":[],"mappings":";;;AAAA,sDAAuE;AAEvE;;GAEG;AACH,MAAa,iBAAiB;IAC5B;;OAEG;IACI,MAAM,CAAC,aAAa,CACzB,WAA2C,EAC3C,kBAA0B;QAE1B,sDAAsD;QACtD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,gCAAgC;QAChC,IAAI,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yDAAyD;QACzD,OAAO,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,kBAAkB,CAC9B,WAA2C,EAC3C,aAAqB;QAErB,sDAAsD;QACtD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,gEAAgE;QAChE,MAAM,uBAAuB,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;QAE5D,uEAAuE;QACvE,2DAA2D;QAC3D,OAAO,CACL,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;YACpC,WAAW,CAAC,UAAU,CAAC,IAAI,CACzB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,uBAAuB,CACzD,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,iBAAiB;QAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,yBAAW,CAAC,CAAC;IACpC,CAAC;CACF;AAtDD,8CAsDC"}
@@ -0,0 +1,7 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import { LangslideSDKConfigResolved } from '../config';
3
+ /**
4
+ * Creates an Axios instance configured for the SDK
5
+ */
6
+ export declare function createRequestClient(config: LangslideSDKConfigResolved): AxiosInstance;
7
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAkC,MAAM,OAAO,CAAC;AAE7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAEvD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,0BAA0B,GAAG,aAAa,CA4CrF"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createRequestClient = createRequestClient;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const errors_1 = require("../errors");
9
+ /**
10
+ * Creates an Axios instance configured for the SDK
11
+ */
12
+ function createRequestClient(config) {
13
+ const client = axios_1.default.create({
14
+ baseURL: config.baseUrl,
15
+ timeout: config.timeout,
16
+ headers: {
17
+ 'Content-Type': 'application/json',
18
+ },
19
+ });
20
+ // Request interceptor: inject API key
21
+ client.interceptors.request.use((requestConfig) => {
22
+ var _a;
23
+ if (config.apiKey) {
24
+ requestConfig.headers['X-API-Key'] = config.apiKey;
25
+ }
26
+ if (config.enableLogging) {
27
+ console.log(`[LangslideSDK] ${(_a = requestConfig.method) === null || _a === void 0 ? void 0 : _a.toUpperCase()} ${requestConfig.url}`);
28
+ }
29
+ return requestConfig;
30
+ }, (error) => {
31
+ return Promise.reject((0, errors_1.transformError)(error));
32
+ });
33
+ // Response interceptor: transform errors
34
+ client.interceptors.response.use((response) => {
35
+ if (config.enableLogging) {
36
+ console.log(`[LangslideSDK] Response:`, response.status, response.config.url);
37
+ }
38
+ return response;
39
+ }, (error) => {
40
+ var _a;
41
+ if (config.enableLogging) {
42
+ console.error(`[LangslideSDK] Error:`, error.message, (_a = error.config) === null || _a === void 0 ? void 0 : _a.url);
43
+ }
44
+ return Promise.reject((0, errors_1.transformError)(error));
45
+ });
46
+ return client;
47
+ }
48
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":";;;;;AAOA,kDA4CC;AAnDD,kDAA6E;AAC7E,sCAA2D;AAG3D;;GAEG;AACH,SAAgB,mBAAmB,CAAC,MAAkC;IACpE,MAAM,MAAM,GAAG,eAAK,CAAC,MAAM,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;KACF,CAAC,CAAC;IAEH,sCAAsC;IACtC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAC7B,CAAC,aAAa,EAAE,EAAE;;QAChB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACrD,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAA,aAAa,CAAC,MAAM,0CAAE,WAAW,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,OAAO,CAAC,MAAM,CAAC,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC,CACF,CAAC;IAEF,yCAAyC;IACzC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAC9B,CAAC,QAAQ,EAAE,EAAE;QACX,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,CAAC,KAAiB,EAAE,EAAE;;QACpB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,OAAO,EAAE,MAAA,KAAK,CAAC,MAAM,0CAAE,GAAG,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAA,uBAAc,EAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Input validation utilities
3
+ */
4
+ export declare function validateRequired(value: any, fieldName: string): void;
5
+ export declare function validateString(value: any, fieldName: string): void;
6
+ export declare function validateUrl(value: string, fieldName: string): void;
7
+ export declare function isValidUrl(value: string): boolean;
8
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAIpE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAIlE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAMlE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOjD"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /**
3
+ * Input validation utilities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateRequired = validateRequired;
7
+ exports.validateString = validateString;
8
+ exports.validateUrl = validateUrl;
9
+ exports.isValidUrl = isValidUrl;
10
+ function validateRequired(value, fieldName) {
11
+ if (value === null || value === undefined || value === '') {
12
+ throw new Error(`${fieldName} is required`);
13
+ }
14
+ }
15
+ function validateString(value, fieldName) {
16
+ if (typeof value !== 'string') {
17
+ throw new Error(`${fieldName} must be a string`);
18
+ }
19
+ }
20
+ function validateUrl(value, fieldName) {
21
+ try {
22
+ new URL(value);
23
+ }
24
+ catch (_a) {
25
+ throw new Error(`${fieldName} must be a valid URL`);
26
+ }
27
+ }
28
+ function isValidUrl(value) {
29
+ try {
30
+ new URL(value);
31
+ return true;
32
+ }
33
+ catch (_a) {
34
+ return false;
35
+ }
36
+ }
37
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,4CAIC;AAED,wCAIC;AAED,kCAMC;AAED,gCAOC;AA3BD,SAAgB,gBAAgB,CAAC,KAAU,EAAE,SAAiB;IAC5D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,cAAc,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,SAAgB,cAAc,CAAC,KAAU,EAAE,SAAiB;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,mBAAmB,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa,EAAE,SAAiB;IAC1D,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAAC,WAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,sBAAsB,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,SAAgB,UAAU,CAAC,KAAa;IACtC,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "@langslide/sdk",
3
+ "version": "0.1.0",
4
+ "description": "Official TypeScript SDK for Langslide API. Build powerful workflow automations and integrations with type-safe, developer-friendly APIs.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "browser": "dist/browser.js",
8
+ "scripts": {
9
+ "build": "tsc",
10
+ "build:react": "tsc -p tsconfig.react.json || echo 'React build skipped - React not installed (this is OK, React is a peer dependency)'",
11
+ "build:browser": "rollup -c",
12
+ "build:all": "npm run build && npm run build:react && npm run build:browser",
13
+ "prepublishOnly": "npm run build && npm run build:browser",
14
+ "dev": "tsc --watch",
15
+ "prepack": "npm run build && npm run build:browser"
16
+ },
17
+ "keywords": [
18
+ "langslide",
19
+ "sdk",
20
+ "api",
21
+ "workflow",
22
+ "automation",
23
+ "integration",
24
+ "typescript"
25
+ ],
26
+ "author": "Langslide",
27
+ "license": "MIT",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/langslide/sdk.git"
31
+ },
32
+ "bugs": {
33
+ "url": "https://github.com/langslide/sdk/issues"
34
+ },
35
+ "homepage": "https://docs.langslide.com/sdk",
36
+ "engines": {
37
+ "node": ">=14.0.0"
38
+ },
39
+ "dependencies": {
40
+ "axios": "^1.6.0"
41
+ },
42
+ "devDependencies": {
43
+ "@rollup/plugin-commonjs": "^25.0.7",
44
+ "@rollup/plugin-node-resolve": "^15.2.3",
45
+ "@rollup/plugin-typescript": "^11.1.5",
46
+ "@rollup/plugin-terser": "^0.4.4",
47
+ "@types/node": "^20.0.0",
48
+ "@types/react": "^18.2.0",
49
+ "rollup": "^4.9.0",
50
+ "tslib": "^2.6.2",
51
+ "typescript": "^5.0.0"
52
+ },
53
+ "peerDependencies": {
54
+ "react": ">=16.8.0"
55
+ },
56
+ "files": [
57
+ "dist",
58
+ "README.md"
59
+ ],
60
+ "exports": {
61
+ ".": {
62
+ "import": "./dist/index.js",
63
+ "require": "./dist/index.js",
64
+ "types": "./dist/index.d.ts"
65
+ },
66
+ "./react": {
67
+ "import": "./dist/react/index.js",
68
+ "require": "./dist/react/index.js",
69
+ "types": "./dist/react/index.d.ts"
70
+ },
71
+ "./browser": {
72
+ "default": "./dist/browser.js"
73
+ }
74
+ }
75
+ }
76
+