derived-sdk 0.0.16 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,44 @@
1
- # Derived MCP server
1
+ # `derived-sdk`
2
2
 
3
- getderived.com
3
+ TypeScript SDK for the Derived API.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pnpm add derived-sdk
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```ts
14
+ import { DerivedSDK } from "derived-sdk";
15
+
16
+ const sdk = new DerivedSDK({
17
+ apiToken: process.env.DERIVED_API_TOKEN,
18
+ });
19
+
20
+ const block = await sdk.fetchBlock("my-block-code");
21
+ console.log(block.result);
22
+ ```
23
+
24
+ ## Available Methods
25
+
26
+ - `fetchBlock(blockCode)`
27
+ - `getBlockInputFromUserQuery(blockInput, query)`
28
+ - `resolveMultipleTemplates(blockCode, schema)`
29
+ - `searchBlocksByName(query, projectId)`
30
+ - `fetchProjectBySlug(slug)`
31
+ - `createMultipleTemplates(templates)`
32
+ - `createTemplateGroup(payload)`
33
+ - `getProjectCategories(projectId, limit?, page?)`
34
+ - `createCategory(payload)`
35
+ - `updateTemplateGroup(id, payload)`
36
+
37
+ ## Build
38
+
39
+ ```bash
40
+ pnpm --filter derived-sdk build
41
+ pnpm --filter derived-sdk pack:check
42
+ ```
43
+
44
+ `pack:check` creates the same tarball shape npm will publish so you can verify the package contents before pushing a release.
package/dist/index.cjs ADDED
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var src_exports = {};
22
+ __export(src_exports, {
23
+ DerivedSDK: () => main_default,
24
+ default: () => main_default
25
+ });
26
+ module.exports = __toCommonJS(src_exports);
27
+
28
+ // src/http.service.ts
29
+ var HttpService = class {
30
+ baseUrl;
31
+ defaultHeaders;
32
+ constructor(baseUrl, defaultHeaders = {}) {
33
+ this.baseUrl = baseUrl;
34
+ this.defaultHeaders = defaultHeaders;
35
+ }
36
+ buildUrl(path) {
37
+ return `${this.baseUrl.replace(/\/$/, "")}/${path.replace(/^\//, "")}`;
38
+ }
39
+ async request(method, path, body, headers = {}) {
40
+ const url = this.buildUrl(path);
41
+ const res = await fetch(url, {
42
+ method,
43
+ headers: {
44
+ "Content-Type": "application/json",
45
+ ...this.defaultHeaders,
46
+ ...headers
47
+ },
48
+ body: body ? JSON.stringify(body) : void 0
49
+ });
50
+ if (!res.ok) {
51
+ const errorText = await res.text().catch(() => "");
52
+ throw new Error(
53
+ `HTTP ${res.status} ${res.statusText}: ${errorText || "Request failed"}`
54
+ );
55
+ }
56
+ const text = await res.text();
57
+ try {
58
+ return JSON.parse(text);
59
+ } catch {
60
+ return text;
61
+ }
62
+ }
63
+ get(path, headers) {
64
+ return this.request("GET", path, void 0, headers);
65
+ }
66
+ post(path, body, headers) {
67
+ return this.request("POST", path, body, headers);
68
+ }
69
+ put(path, body, headers) {
70
+ return this.request("PUT", path, body, headers);
71
+ }
72
+ delete(path, headers) {
73
+ return this.request("DELETE", path, void 0, headers);
74
+ }
75
+ };
76
+
77
+ // src/main.ts
78
+ var DerivedSDK = class {
79
+ api;
80
+ apiToken;
81
+ constructor(config) {
82
+ this.apiToken = config?.apiToken;
83
+ this.api = new HttpService("https://api.usederived.com/api", {
84
+ ...this.apiToken ? { Authorization: this.apiToken } : {}
85
+ });
86
+ }
87
+ fetchBlock = async (blockCode) => {
88
+ return this.api.get(`/public/v1/template-group/code/${blockCode}`);
89
+ };
90
+ getBlockInputFromUserQuery = (blockInput, query) => {
91
+ return this.api.post(
92
+ `/public/v1/template-group/get-block-input-from-user-query`,
93
+ { blockInput, query }
94
+ );
95
+ };
96
+ resolveMultipleTemplates = (blockCode, schema) => {
97
+ return this.api.post(
98
+ `/public/v1/template-group/resolve-multiple-templates-by-block-code`,
99
+ { blockCode, data: schema }
100
+ );
101
+ };
102
+ searchBlocksByName = (query, projectId) => {
103
+ return this.api.get(
104
+ `/public/v1/template-group/semantic-search?q=${query}&limit=5&threshold=0.5&project_id=${projectId}`
105
+ );
106
+ };
107
+ fetchProjectBySlug = async (slug) => {
108
+ return this.api.get(`/public/v1/project/detail-by-slug/${slug}`);
109
+ };
110
+ createMultipleTemplates = async (templates) => {
111
+ return this.api.post(`/v1/template/create-multiple`, templates);
112
+ };
113
+ createTemplateGroup = async (payload) => {
114
+ return this.api.post(`/v1/template-group/create`, payload);
115
+ };
116
+ getProjectCategories = async (projectId, limit = 20, page = 1) => {
117
+ const filters = encodeURIComponent(
118
+ JSON.stringify({ projectID: projectId })
119
+ );
120
+ const sort = encodeURIComponent(JSON.stringify({ Desc: "id" }));
121
+ return this.api.get(
122
+ `/v1/block-category/list?filters=${filters}&sort=${sort}&limit=${limit}&page=${page}`
123
+ );
124
+ };
125
+ createCategory = async (payload) => {
126
+ return this.api.post(`/v1/block-category/create`, payload);
127
+ };
128
+ updateTemplateGroup = async (id, payload) => {
129
+ return this.api.put(`/v1/template-group/update/${id}`, payload);
130
+ };
131
+ };
132
+ var main_default = DerivedSDK;
133
+ // Annotate the CommonJS export names for ESM import in node:
134
+ 0 && (module.exports = {
135
+ DerivedSDK
136
+ });
137
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts", "../src/http.service.ts", "../src/main.ts"],
4
+ "sourcesContent": ["export { default as DerivedSDK } from \"./main\";\nexport { default } from \"./main\";\nexport type {\n Block,\n Category,\n CreateCategoryPayload,\n CreateTemplateGroupPayload,\n CreateTemplatePayload,\n Project,\n TDerivedApiResponse,\n UpdateTemplateGroupPayload,\n} from \"./types\";\n", "import { TDerivedApiResponse } from \"./types\";\n\nexport class HttpService {\n private baseUrl: string;\n private defaultHeaders: Record<string, string>;\n\n constructor(baseUrl: string, defaultHeaders: Record<string, string> = {}) {\n this.baseUrl = baseUrl;\n this.defaultHeaders = defaultHeaders;\n }\n\n private buildUrl(path: string): string {\n return `${this.baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`;\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: any,\n headers: Record<string, string> = {}\n ): Promise<T> {\n const url = this.buildUrl(path); \n const res = await fetch(url, {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n ...this.defaultHeaders,\n ...headers,\n },\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (!res.ok) {\n const errorText = await res.text().catch(() => \"\");\n throw new Error(\n `HTTP ${res.status} ${res.statusText}: ${errorText || \"Request failed\"}`\n );\n }\n\n // Try parsing as JSON, but return text if cannot parse\n const text = await res.text();\n try {\n return JSON.parse(text);\n } catch {\n return text as T;\n }\n }\n\n get<T>(path: string, headers?: Record<string, string>) {\n return this.request<TDerivedApiResponse<T>>(\"GET\", path, undefined, headers);\n }\n\n post<T>(path: string, body?: any, headers?: Record<string, string>) {\n return this.request<TDerivedApiResponse<T>>(\"POST\", path, body, headers);\n }\n\n put<T>(path: string, body?: any, headers?: Record<string, string>) {\n return this.request<TDerivedApiResponse<T>>(\"PUT\", path, body, headers);\n }\n\n delete<T>(path: string, headers?: Record<string, string>) {\n return this.request<TDerivedApiResponse<T>>(\"DELETE\", path, undefined, headers);\n }\n}\n", "import {\n Block,\n CreateTemplateGroupPayload,\n CreateTemplatePayload,\n Category,\n CreateCategoryPayload,\n UpdateTemplateGroupPayload,\n} from \"./types\";\nimport { HttpService } from \"./http.service\";\n\nclass DerivedSDK {\n private api: HttpService;\n private apiToken?: string;\n\n constructor(config?: { apiToken?: string }) {\n this.apiToken = config?.apiToken;\n this.api = new HttpService(\"https://api.usederived.com/api\", {\n ...(this.apiToken ? { Authorization: this.apiToken } : {}),\n });\n }\n\n fetchBlock = async (blockCode: string) => {\n return this.api.get<Block>(`/public/v1/template-group/code/${blockCode}`);\n };\n\n getBlockInputFromUserQuery = (blockInput: string, query: string) => {\n return this.api.post<{ schema: any }>(\n `/public/v1/template-group/get-block-input-from-user-query`,\n { blockInput, query },\n );\n };\n\n resolveMultipleTemplates = (blockCode: string, schema: any) => {\n return this.api.post<any>(\n `/public/v1/template-group/resolve-multiple-templates-by-block-code`,\n { blockCode, data: schema },\n );\n };\n\n searchBlocksByName = (query: string, projectId: number) => {\n return this.api.get<Block[]>(\n `/public/v1/template-group/semantic-search?q=${query}&limit=5&threshold=0.5&project_id=${projectId}`,\n );\n };\n\n fetchProjectBySlug = async (slug: string) => {\n return this.api.get<any>(`/public/v1/project/detail-by-slug/${slug}`);\n };\n\n createMultipleTemplates = async (templates: CreateTemplatePayload[]) => {\n return this.api.post<any>(`/v1/template/create-multiple`, templates);\n };\n\n createTemplateGroup = async (payload: CreateTemplateGroupPayload) => {\n return this.api.post<any>(`/v1/template-group/create`, payload);\n };\n\n getProjectCategories = async (\n projectId: number,\n limit: number = 20,\n page: number = 1,\n ) => {\n const filters = encodeURIComponent(\n JSON.stringify({ projectID: projectId }),\n );\n const sort = encodeURIComponent(JSON.stringify({ Desc: \"id\" }));\n return this.api.get<Category[]>(\n `/v1/block-category/list?filters=${filters}&sort=${sort}&limit=${limit}&page=${page}`,\n );\n };\n\n createCategory = async (payload: CreateCategoryPayload) => {\n return this.api.post<any>(`/v1/block-category/create`, payload);\n };\n\n updateTemplateGroup = async (\n id: number,\n payload: UpdateTemplateGroupPayload,\n ) => {\n return this.api.put<any>(`/v1/template-group/update/${id}`, payload);\n };\n}\n\nexport default DerivedSDK;\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,4 @@
1
+ export { default as DerivedSDK } from "./main";
2
+ export { default } from "./main";
3
+ export type { Block, Category, CreateCategoryPayload, CreateTemplateGroupPayload, CreateTemplatePayload, Project, TDerivedApiResponse, UpdateTemplateGroupPayload, } from "./types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,YAAY,EACV,KAAK,EACL,QAAQ,EACR,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,110 @@
1
+ // src/http.service.ts
2
+ var HttpService = class {
3
+ baseUrl;
4
+ defaultHeaders;
5
+ constructor(baseUrl, defaultHeaders = {}) {
6
+ this.baseUrl = baseUrl;
7
+ this.defaultHeaders = defaultHeaders;
8
+ }
9
+ buildUrl(path) {
10
+ return `${this.baseUrl.replace(/\/$/, "")}/${path.replace(/^\//, "")}`;
11
+ }
12
+ async request(method, path, body, headers = {}) {
13
+ const url = this.buildUrl(path);
14
+ const res = await fetch(url, {
15
+ method,
16
+ headers: {
17
+ "Content-Type": "application/json",
18
+ ...this.defaultHeaders,
19
+ ...headers
20
+ },
21
+ body: body ? JSON.stringify(body) : void 0
22
+ });
23
+ if (!res.ok) {
24
+ const errorText = await res.text().catch(() => "");
25
+ throw new Error(
26
+ `HTTP ${res.status} ${res.statusText}: ${errorText || "Request failed"}`
27
+ );
28
+ }
29
+ const text = await res.text();
30
+ try {
31
+ return JSON.parse(text);
32
+ } catch {
33
+ return text;
34
+ }
35
+ }
36
+ get(path, headers) {
37
+ return this.request("GET", path, void 0, headers);
38
+ }
39
+ post(path, body, headers) {
40
+ return this.request("POST", path, body, headers);
41
+ }
42
+ put(path, body, headers) {
43
+ return this.request("PUT", path, body, headers);
44
+ }
45
+ delete(path, headers) {
46
+ return this.request("DELETE", path, void 0, headers);
47
+ }
48
+ };
49
+
50
+ // src/main.ts
51
+ var DerivedSDK = class {
52
+ api;
53
+ apiToken;
54
+ constructor(config) {
55
+ this.apiToken = config?.apiToken;
56
+ this.api = new HttpService("https://api.usederived.com/api", {
57
+ ...this.apiToken ? { Authorization: this.apiToken } : {}
58
+ });
59
+ }
60
+ fetchBlock = async (blockCode) => {
61
+ return this.api.get(`/public/v1/template-group/code/${blockCode}`);
62
+ };
63
+ getBlockInputFromUserQuery = (blockInput, query) => {
64
+ return this.api.post(
65
+ `/public/v1/template-group/get-block-input-from-user-query`,
66
+ { blockInput, query }
67
+ );
68
+ };
69
+ resolveMultipleTemplates = (blockCode, schema) => {
70
+ return this.api.post(
71
+ `/public/v1/template-group/resolve-multiple-templates-by-block-code`,
72
+ { blockCode, data: schema }
73
+ );
74
+ };
75
+ searchBlocksByName = (query, projectId) => {
76
+ return this.api.get(
77
+ `/public/v1/template-group/semantic-search?q=${query}&limit=5&threshold=0.5&project_id=${projectId}`
78
+ );
79
+ };
80
+ fetchProjectBySlug = async (slug) => {
81
+ return this.api.get(`/public/v1/project/detail-by-slug/${slug}`);
82
+ };
83
+ createMultipleTemplates = async (templates) => {
84
+ return this.api.post(`/v1/template/create-multiple`, templates);
85
+ };
86
+ createTemplateGroup = async (payload) => {
87
+ return this.api.post(`/v1/template-group/create`, payload);
88
+ };
89
+ getProjectCategories = async (projectId, limit = 20, page = 1) => {
90
+ const filters = encodeURIComponent(
91
+ JSON.stringify({ projectID: projectId })
92
+ );
93
+ const sort = encodeURIComponent(JSON.stringify({ Desc: "id" }));
94
+ return this.api.get(
95
+ `/v1/block-category/list?filters=${filters}&sort=${sort}&limit=${limit}&page=${page}`
96
+ );
97
+ };
98
+ createCategory = async (payload) => {
99
+ return this.api.post(`/v1/block-category/create`, payload);
100
+ };
101
+ updateTemplateGroup = async (id, payload) => {
102
+ return this.api.put(`/v1/template-group/update/${id}`, payload);
103
+ };
104
+ };
105
+ var main_default = DerivedSDK;
106
+ export {
107
+ main_default as DerivedSDK,
108
+ main_default as default
109
+ };
110
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/http.service.ts", "../src/main.ts"],
4
+ "sourcesContent": ["import { TDerivedApiResponse } from \"./types\";\n\nexport class HttpService {\n private baseUrl: string;\n private defaultHeaders: Record<string, string>;\n\n constructor(baseUrl: string, defaultHeaders: Record<string, string> = {}) {\n this.baseUrl = baseUrl;\n this.defaultHeaders = defaultHeaders;\n }\n\n private buildUrl(path: string): string {\n return `${this.baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`;\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: any,\n headers: Record<string, string> = {}\n ): Promise<T> {\n const url = this.buildUrl(path); \n const res = await fetch(url, {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n ...this.defaultHeaders,\n ...headers,\n },\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (!res.ok) {\n const errorText = await res.text().catch(() => \"\");\n throw new Error(\n `HTTP ${res.status} ${res.statusText}: ${errorText || \"Request failed\"}`\n );\n }\n\n // Try parsing as JSON, but return text if cannot parse\n const text = await res.text();\n try {\n return JSON.parse(text);\n } catch {\n return text as T;\n }\n }\n\n get<T>(path: string, headers?: Record<string, string>) {\n return this.request<TDerivedApiResponse<T>>(\"GET\", path, undefined, headers);\n }\n\n post<T>(path: string, body?: any, headers?: Record<string, string>) {\n return this.request<TDerivedApiResponse<T>>(\"POST\", path, body, headers);\n }\n\n put<T>(path: string, body?: any, headers?: Record<string, string>) {\n return this.request<TDerivedApiResponse<T>>(\"PUT\", path, body, headers);\n }\n\n delete<T>(path: string, headers?: Record<string, string>) {\n return this.request<TDerivedApiResponse<T>>(\"DELETE\", path, undefined, headers);\n }\n}\n", "import {\n Block,\n CreateTemplateGroupPayload,\n CreateTemplatePayload,\n Category,\n CreateCategoryPayload,\n UpdateTemplateGroupPayload,\n} from \"./types\";\nimport { HttpService } from \"./http.service\";\n\nclass DerivedSDK {\n private api: HttpService;\n private apiToken?: string;\n\n constructor(config?: { apiToken?: string }) {\n this.apiToken = config?.apiToken;\n this.api = new HttpService(\"https://api.usederived.com/api\", {\n ...(this.apiToken ? { Authorization: this.apiToken } : {}),\n });\n }\n\n fetchBlock = async (blockCode: string) => {\n return this.api.get<Block>(`/public/v1/template-group/code/${blockCode}`);\n };\n\n getBlockInputFromUserQuery = (blockInput: string, query: string) => {\n return this.api.post<{ schema: any }>(\n `/public/v1/template-group/get-block-input-from-user-query`,\n { blockInput, query },\n );\n };\n\n resolveMultipleTemplates = (blockCode: string, schema: any) => {\n return this.api.post<any>(\n `/public/v1/template-group/resolve-multiple-templates-by-block-code`,\n { blockCode, data: schema },\n );\n };\n\n searchBlocksByName = (query: string, projectId: number) => {\n return this.api.get<Block[]>(\n `/public/v1/template-group/semantic-search?q=${query}&limit=5&threshold=0.5&project_id=${projectId}`,\n );\n };\n\n fetchProjectBySlug = async (slug: string) => {\n return this.api.get<any>(`/public/v1/project/detail-by-slug/${slug}`);\n };\n\n createMultipleTemplates = async (templates: CreateTemplatePayload[]) => {\n return this.api.post<any>(`/v1/template/create-multiple`, templates);\n };\n\n createTemplateGroup = async (payload: CreateTemplateGroupPayload) => {\n return this.api.post<any>(`/v1/template-group/create`, payload);\n };\n\n getProjectCategories = async (\n projectId: number,\n limit: number = 20,\n page: number = 1,\n ) => {\n const filters = encodeURIComponent(\n JSON.stringify({ projectID: projectId }),\n );\n const sort = encodeURIComponent(JSON.stringify({ Desc: \"id\" }));\n return this.api.get<Category[]>(\n `/v1/block-category/list?filters=${filters}&sort=${sort}&limit=${limit}&page=${page}`,\n );\n };\n\n createCategory = async (payload: CreateCategoryPayload) => {\n return this.api.post<any>(`/v1/block-category/create`, payload);\n };\n\n updateTemplateGroup = async (\n id: number,\n payload: UpdateTemplateGroupPayload,\n ) => {\n return this.api.put<any>(`/v1/template-group/update/${id}`, payload);\n };\n}\n\nexport default DerivedSDK;\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
package/dist/main.d.ts CHANGED
@@ -10,7 +10,7 @@ declare class DerivedSDK {
10
10
  schema: any;
11
11
  }>>;
12
12
  resolveMultipleTemplates: (blockCode: string, schema: any) => Promise<import("./types").TDerivedApiResponse<any>>;
13
- searchBlocksByName: (query: string) => Promise<import("./types").TDerivedApiResponse<Block[]>>;
13
+ searchBlocksByName: (query: string, projectId: number) => Promise<import("./types").TDerivedApiResponse<Block[]>>;
14
14
  fetchProjectBySlug: (slug: string) => Promise<import("./types").TDerivedApiResponse<any>>;
15
15
  createMultipleTemplates: (templates: CreateTemplatePayload[]) => Promise<import("./types").TDerivedApiResponse<any>>;
16
16
  createTemplateGroup: (payload: CreateTemplateGroupPayload) => Promise<import("./types").TDerivedApiResponse<any>>;
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAGhJ,cAAM,UAAU;IACZ,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEd,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAO1C,UAAU,GAAU,WAAW,MAAM,2DAEpC;IAED,0BAA0B,GAAK,YAAY,MAAM,EAAE,OAAO,MAAM;gBAC9B,GAAG;QACpC;IAED,wBAAwB,GAAK,WAAW,MAAM,EAAE,QAAQ,GAAG,yDAE1D;IAED,kBAAkB,GAAK,OAAO,MAAM,6DAEnC;IAED,kBAAkB,GAAU,MAAM,MAAM,yDAEvC;IAED,uBAAuB,GAAU,WAAW,qBAAqB,EAAE,yDAElE;IAED,mBAAmB,GAAU,SAAS,0BAA0B,yDAE/D;IAED,oBAAoB,GAAU,WAAW,MAAM,EAAE,QAAO,MAAW,EAAE,OAAM,MAAU,gEAIpF;IAED,cAAc,GAAU,SAAS,qBAAqB,yDAErD;IAED,mBAAmB,GAAU,IAAI,MAAM,EAAE,SAAS,0BAA0B,yDAE3E;CAEJ;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,QAAQ,EACR,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,SAAS,CAAC;AAGjB,cAAM,UAAU;IACd,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEd,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAO1C,UAAU,GAAU,WAAW,MAAM,2DAEnC;IAEF,0BAA0B,GAAI,YAAY,MAAM,EAAE,OAAO,MAAM;gBAC9B,GAAG;QAIlC;IAEF,wBAAwB,GAAI,WAAW,MAAM,EAAE,QAAQ,GAAG,yDAKxD;IAEF,kBAAkB,GAAI,OAAO,MAAM,EAAE,WAAW,MAAM,6DAIpD;IAEF,kBAAkB,GAAU,MAAM,MAAM,yDAEtC;IAEF,uBAAuB,GAAU,WAAW,qBAAqB,EAAE,yDAEjE;IAEF,mBAAmB,GAAU,SAAS,0BAA0B,yDAE9D;IAEF,oBAAoB,GAClB,WAAW,MAAM,EACjB,QAAO,MAAW,EAClB,OAAM,MAAU,gEAShB;IAEF,cAAc,GAAU,SAAS,qBAAqB,yDAEpD;IAEF,mBAAmB,GACjB,IAAI,MAAM,EACV,SAAS,0BAA0B,yDAGnC;CACH;AAED,eAAe,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,23 +1,38 @@
1
1
  {
2
2
  "name": "derived-sdk",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "description": "SDK for Derived",
5
5
  "author": "Derived",
6
6
  "license": "MIT",
7
+ "publishConfig": {
8
+ "access": "public"
9
+ },
7
10
  "files": [
8
11
  "dist"
9
12
  ],
10
- "main": "./dist/bundle.js",
11
- "types": "./dist/main.d.ts",
12
- "bin": "./dist/bundle.js",
13
+ "main": "./dist/index.cjs",
14
+ "module": "./dist/index.js",
15
+ "types": "./dist/index.d.ts",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/index.d.ts",
19
+ "import": "./dist/index.js",
20
+ "require": "./dist/index.cjs",
21
+ "default": "./dist/index.js"
22
+ }
23
+ },
24
+ "sideEffects": false,
13
25
  "scripts": {
14
26
  "build": "node build.js",
15
27
  "clean": "rm -rf dist",
16
28
  "dev": "nodemon --exec \"node -r esbuild-register ./src/main.ts\" -e .ts",
17
- "lint": "tsc --noEmit && eslint \"src/**/*.ts*\" --max-warnings 0",
29
+ "check-types": "tsc --project tsconfig.json --noEmit",
30
+ "lint": "pnpm run check-types && eslint \"src/**/*.ts\" --max-warnings 0",
18
31
  "start": "node -r esbuild-register ./src/main.ts",
19
32
  "test:watch": "vitest watch",
20
33
  "format:biome": "npx @biomejs/biome format --write ./src",
34
+ "pack:check": "node ../../scripts/pack-package.mjs apps/sdk-derived",
35
+ "prepack": "node build.js",
21
36
  "pub": "npm run build && npm version patch --no-git-tag-version && npm publish --no-git-checks"
22
37
  },
23
38
  "dependencies": {},
package/dist/bundle.js DELETED
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";var p=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var T=(a,e)=>{for(var t in e)p(a,t,{get:e[t],enumerable:!0})},m=(a,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of d(e))!y.call(a,s)&&s!==t&&p(a,s,{get:()=>e[s],enumerable:!(r=g(e,s))||r.enumerable});return a};var h=a=>m(p({},"__esModule",{value:!0}),a);var f={};T(f,{default:()=>v});module.exports=h(f);var n=class{baseUrl;defaultHeaders;constructor(e,t={}){this.baseUrl=e,this.defaultHeaders=t}buildUrl(e){return`${this.baseUrl.replace(/\/$/,"")}/${e.replace(/^\//,"")}`}async request(e,t,r,s={}){let o=this.buildUrl(t),i=await fetch(o,{method:e,headers:{"Content-Type":"application/json",...this.defaultHeaders,...s},body:r?JSON.stringify(r):void 0});if(!i.ok){let u=await i.text().catch(()=>"");throw new Error(`HTTP ${i.status} ${i.statusText}: ${u||"Request failed"}`)}let c=await i.text();try{return JSON.parse(c)}catch{return c}}get(e,t){return this.request("GET",e,void 0,t)}post(e,t,r){return this.request("POST",e,t,r)}put(e,t,r){return this.request("PUT",e,t,r)}delete(e,t){return this.request("DELETE",e,void 0,t)}};var l=class{api;apiToken;constructor(e){this.apiToken=e?.apiToken,this.api=new n("https://api.derived.dev/api",{...this.apiToken?{Authorization:this.apiToken}:{}})}fetchBlock=async e=>this.api.get(`/public/v1/template-group/code/${e}`);getBlockInputFromUserQuery=(e,t)=>this.api.post("/public/v1/template-group/get-block-input-from-user-query",{blockInput:e,query:t});resolveMultipleTemplates=(e,t)=>this.api.post("/public/v1/template-group/resolve-multiple-templates-by-block-code",{blockCode:e,data:t});searchBlocksByName=e=>this.api.get(`/public/v1/template-group/semantic-search?q=${e}&limit=5&threshold=0.5`);fetchProjectBySlug=async e=>this.api.get(`/public/v1/project/detail-by-slug/${e}`);createMultipleTemplates=async e=>this.api.post("/v1/template/create-multiple",e);createTemplateGroup=async e=>this.api.post("/v1/template-group/create",e);getProjectCategories=async(e,t=20,r=1)=>{let s=encodeURIComponent(JSON.stringify({projectID:e})),o=encodeURIComponent(JSON.stringify({Desc:"id"}));return this.api.get(`/v1/block-category/list?filters=${s}&sort=${o}&limit=${t}&page=${r}`)};createCategory=async e=>this.api.post("/v1/block-category/create",e);updateTemplateGroup=async(e,t)=>this.api.put(`/v1/template-group/update/${e}`,t)},v=l;