@chassdev/client-sdk 2.46.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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +47 -0
  3. package/dist/application-CMx2Si6C.mjs +58980 -0
  4. package/dist/application-DUpOI260.js +58 -0
  5. package/dist/chunk-Dqa2HsxW.mjs +20 -0
  6. package/dist/chunk-mLOUI7ql.js +1 -0
  7. package/dist/core/generated/index.d.ts +7 -0
  8. package/dist/core/generated/schema.d.ts +1 -0
  9. package/dist/core/index.d.ts +2 -0
  10. package/dist/core.cjs +1 -0
  11. package/dist/core.mjs +9 -0
  12. package/dist/generate/client-wrapper.d.ts +7 -0
  13. package/dist/generate/fs-utils.d.ts +4 -0
  14. package/dist/generate/generate-core-client.d.ts +10 -0
  15. package/dist/generate/generate-metadata-client.d.ts +5 -0
  16. package/dist/generate/genql/config.d.ts +9 -0
  17. package/dist/generate/genql/helpers/files.d.ts +2 -0
  18. package/dist/generate/genql/helpers/prettify.d.ts +2 -0
  19. package/dist/generate/genql/index.d.ts +2 -0
  20. package/dist/generate/genql/main.d.ts +2 -0
  21. package/dist/generate/genql/render/client/renderClient.d.ts +3 -0
  22. package/dist/generate/genql/render/common/RenderContext.d.ts +24 -0
  23. package/dist/generate/genql/render/common/comment.d.ts +8 -0
  24. package/dist/generate/genql/render/common/excludedTypes.d.ts +1 -0
  25. package/dist/generate/genql/render/common/relativeImportPath.d.ts +1 -0
  26. package/dist/generate/genql/render/common/renderTyping.d.ts +2 -0
  27. package/dist/generate/genql/render/common/support.d.ts +2 -0
  28. package/dist/generate/genql/render/requestTypes/inputObjectType.d.ts +3 -0
  29. package/dist/generate/genql/render/requestTypes/objectType.d.ts +4 -0
  30. package/dist/generate/genql/render/requestTypes/renderRequestTypes.d.ts +3 -0
  31. package/dist/generate/genql/render/requestTypes/requestTypeName.d.ts +2 -0
  32. package/dist/generate/genql/render/requestTypes/unionType.d.ts +3 -0
  33. package/dist/generate/genql/render/responseTypes/enumType.d.ts +3 -0
  34. package/dist/generate/genql/render/responseTypes/interfaceType.d.ts +3 -0
  35. package/dist/generate/genql/render/responseTypes/objectType.d.ts +3 -0
  36. package/dist/generate/genql/render/responseTypes/renderResponseTypes.d.ts +3 -0
  37. package/dist/generate/genql/render/responseTypes/scalarType.d.ts +3 -0
  38. package/dist/generate/genql/render/responseTypes/typeMappedAlias.d.ts +3 -0
  39. package/dist/generate/genql/render/responseTypes/unionType.d.ts +3 -0
  40. package/dist/generate/genql/render/schema/renderSchema.d.ts +3 -0
  41. package/dist/generate/genql/render/typeGuards/renderTypeGuards.d.ts +3 -0
  42. package/dist/generate/genql/render/typeMap/objectType.d.ts +4 -0
  43. package/dist/generate/genql/render/typeMap/renderTypeMap.d.ts +5 -0
  44. package/dist/generate/genql/render/typeMap/scalarType.d.ts +4 -0
  45. package/dist/generate/genql/render/typeMap/support.d.ts +1 -0
  46. package/dist/generate/genql/render/typeMap/unionType.d.ts +4 -0
  47. package/dist/generate/genql/runtime/batcher.d.ts +105 -0
  48. package/dist/generate/genql/runtime/createClient.d.ts +23 -0
  49. package/dist/generate/genql/runtime/error.d.ts +18 -0
  50. package/dist/generate/genql/runtime/fetcher.d.ts +10 -0
  51. package/dist/generate/genql/runtime/generateGraphqlOperation.d.ts +30 -0
  52. package/dist/generate/genql/runtime/index.d.ts +11 -0
  53. package/dist/generate/genql/runtime/linkTypeMap.d.ts +9 -0
  54. package/dist/generate/genql/runtime/typeSelection.d.ts +28 -0
  55. package/dist/generate/genql/runtime/types.d.ts +55 -0
  56. package/dist/generate/genql/tasks/clientTasks.d.ts +3 -0
  57. package/dist/generate/genql/tasks/schemaTask.d.ts +3 -0
  58. package/dist/generate/index.d.ts +2 -0
  59. package/dist/generate/runtime-templates.d.ts +4 -0
  60. package/dist/generate/twenty-client-template.d.ts +53 -0
  61. package/dist/generate.cjs +2082 -0
  62. package/dist/generate.mjs +595 -0
  63. package/dist/metadata/generated/index.d.ts +71 -0
  64. package/dist/metadata/generated/runtime/batcher.d.ts +105 -0
  65. package/dist/metadata/generated/runtime/createClient.d.ts +23 -0
  66. package/dist/metadata/generated/runtime/error.d.ts +18 -0
  67. package/dist/metadata/generated/runtime/fetcher.d.ts +10 -0
  68. package/dist/metadata/generated/runtime/generateGraphqlOperation.d.ts +30 -0
  69. package/dist/metadata/generated/runtime/index.d.ts +11 -0
  70. package/dist/metadata/generated/runtime/linkTypeMap.d.ts +9 -0
  71. package/dist/metadata/generated/runtime/typeSelection.d.ts +28 -0
  72. package/dist/metadata/generated/runtime/types.d.ts +55 -0
  73. package/dist/metadata/generated/schema.d.ts +11648 -0
  74. package/dist/metadata/generated/types.d.ts +5616 -0
  75. package/dist/metadata/index.d.ts +2 -0
  76. package/dist/metadata.cjs +6 -0
  77. package/dist/metadata.mjs +7653 -0
  78. package/dist/rest/index.d.ts +54 -0
  79. package/dist/rest.cjs +1 -0
  80. package/dist/rest.mjs +112 -0
  81. package/dist/shared/twenty-client-options.type.d.ts +9 -0
  82. package/dist/shared/twenty-client-run-as.type.d.ts +1 -0
  83. package/package.json +78 -0
@@ -0,0 +1,54 @@
1
+ import { type TwentyClientRunAs } from '../shared/twenty-client-run-as.type';
2
+ export type { TwentyClientRunAs };
3
+ export type RestApiClientOptions = {
4
+ baseUrl?: string;
5
+ token?: string;
6
+ fetch?: typeof globalThis.fetch;
7
+ defaultHeaders?: HeadersInit;
8
+ runAs?: TwentyClientRunAs;
9
+ };
10
+ export type RestApiRequestOptions = {
11
+ headers?: HeadersInit;
12
+ query?: Record<string, string | number | boolean | null | undefined>;
13
+ signal?: AbortSignal;
14
+ };
15
+ type RestApiClientErrorDetails = {
16
+ status?: number;
17
+ statusText?: string;
18
+ url?: string;
19
+ body?: unknown;
20
+ };
21
+ export declare class RestApiClientError extends Error {
22
+ readonly status?: number;
23
+ readonly statusText?: string;
24
+ readonly url?: string;
25
+ readonly body?: unknown;
26
+ constructor(message: string, details?: RestApiClientErrorDetails);
27
+ }
28
+ export declare class RestApiClient {
29
+ private baseUrl;
30
+ private token;
31
+ private defaultHeaders;
32
+ private fetchImplementation;
33
+ private authorizationToken;
34
+ private runAs;
35
+ private refreshAccessTokenPromise;
36
+ constructor(options?: RestApiClientOptions);
37
+ request<TResponse = unknown>(method: string, path: string, options?: RestApiRequestOptions & {
38
+ body?: unknown;
39
+ }): Promise<TResponse>;
40
+ get<TResponse = unknown>(path: string, options?: RestApiRequestOptions): Promise<TResponse>;
41
+ resolveUrl(path: string, requestOptions?: Pick<RestApiRequestOptions, 'query'>): string;
42
+ post<TResponse = unknown>(path: string, body?: unknown, options?: RestApiRequestOptions): Promise<TResponse>;
43
+ put<TResponse = unknown>(path: string, body?: unknown, options?: RestApiRequestOptions): Promise<TResponse>;
44
+ patch<TResponse = unknown>(path: string, body?: unknown, options?: RestApiRequestOptions): Promise<TResponse>;
45
+ delete<TResponse = unknown>(path: string, options?: RestApiRequestOptions): Promise<TResponse>;
46
+ private resolveBaseUrl;
47
+ private resolveFunctionsBaseUrl;
48
+ private resolveTarget;
49
+ private resolveToken;
50
+ private requestRefreshedAccessToken;
51
+ private sendRequest;
52
+ private parseResponse;
53
+ private execute;
54
+ }
package/dist/rest.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./application-DUpOI260.js");var t=e=>e!=null,n=class extends Error{constructor(e,t){super(e),this.name=`RestApiClientError`,this.status=t?.status,this.statusText=t?.statusText,this.url=t?.url,this.body=t?.body}},r=()=>globalThis.process?.env??{},i=e=>/^\/?s\//.test(e),a=e=>e.replace(/^(\/?)s\//,`$1`),o=(e,n,r)=>{let i=/^https?:\/\//i.test(n)?n:`${e}${n.startsWith(`/`)?``:`/`}${n}`;if(!t(r))return i;let a=new URLSearchParams;for(let[e,n]of Object.entries(r))t(n)&&a.append(e,String(n));let o=a.toString();return o.length===0?i:i.includes(`?`)?`${i}&${o}`:`${i}?${o}`},s=class{constructor(e){this.refreshAccessTokenPromise=null,this.baseUrl=e?.baseUrl,this.token=e?.token,this.defaultHeaders=e?.defaultHeaders,this.fetchImplementation=e?.fetch??globalThis.fetch??null,this.authorizationToken=e?.token??null,this.runAs=e?.runAs}request(e,t,n){return this.execute(e,t,n?.body,n)}get(e,t){return this.execute(`GET`,e,void 0,t)}resolveUrl(e,t){let n=this.resolveTarget(e);return o(n.baseUrl,n.path,t?.query)}post(e,t,n){return this.execute(`POST`,e,t,n)}put(e,t,n){return this.execute(`PUT`,e,t,n)}patch(e,t,n){return this.execute(`PATCH`,e,t,n)}delete(e,t){return this.execute(`DELETE`,e,void 0,t)}resolveBaseUrl(){let i=this.baseUrl??r().TWENTY_API_URL;if(!t(i)||i.trim().length===0)throw new n(`Missing API url. Set the \`${e.t}\` environment variable or pass \`baseUrl\` to \`RestApiClient\`.`);return i.replace(/\/+$/,``)}resolveFunctionsBaseUrl(){let n=r()[e.r];if(!(!t(n)||n.trim().length===0))return n.trim().replace(/\/+$/,``)}resolveTarget(e){return t(this.baseUrl)||!i(e)?{baseUrl:this.resolveBaseUrl(),path:e}:{baseUrl:this.resolveFunctionsBaseUrl()??`${this.resolveBaseUrl()}/s`,path:a(e)}}resolveToken(){let i=this.runAs===`application`?e.n:e.i;if(!t(this.authorizationToken)){let e=r();this.authorizationToken=this.token??e[i]??e.TWENTY_API_KEY??null}if(!t(this.authorizationToken)||this.authorizationToken.length===0)throw new n(`Missing application access token. Set the \`${i}\` environment variable or pass \`token\` to \`RestApiClient\`.`);return this.authorizationToken}async requestRefreshedAccessToken(){let t=globalThis.frontComponentHostCommunicationApi?.requestAccessTokenRefresh;return typeof t==`function`?(this.refreshAccessTokenPromise||=t().then(t=>typeof t!=`string`||t.length===0?null:(this.authorizationToken=t,r()[e.i]=t,t)).catch(e=>(console.error(`Chass REST client: token refresh failed`,e),null)).finally(()=>{this.refreshAccessTokenPromise=null}),this.refreshAccessTokenPromise):null}sendRequest(e,r,i,a,o){if(!t(this.fetchImplementation))throw new n("Global `fetch` function is not available, pass a fetch implementation to `RestApiClient`.");let s=new Headers(this.defaultHeaders);t(o?.headers)&&new Headers(o.headers).forEach((e,t)=>s.set(t,e));let c=typeof FormData<`u`&&i instanceof FormData,l=t(i)&&!c&&typeof i!=`string`;c?s.delete(`Content-Type`):l&&s.set(`Content-Type`,`application/json`),s.set(`Authorization`,`Bearer ${a}`);let u=t(i)?c||typeof i==`string`?i:JSON.stringify(i):void 0;return this.fetchImplementation.call(globalThis,e,{method:r,headers:s,body:u,signal:o?.signal})}async parseResponse(e,t){let r=await e.text(),i;if(r.trim().length>0)try{i=JSON.parse(r)}catch{i=r}if(!e.ok)throw new n(`Request to ${t} failed with status ${e.status} ${e.statusText}`,{status:e.status,statusText:e.statusText,url:t,body:i});return i}async execute(e,n,r,i){let a=this.resolveTarget(n),s=o(a.baseUrl,a.path,i?.query),c=this.resolveToken(),l=await this.sendRequest(s,e,r,c,i);if(l.status===401){let n=await this.requestRefreshedAccessToken();t(n)&&(l=await this.sendRequest(s,e,r,n,i))}return this.parseResponse(l,s)}};exports.RestApiClient=s,exports.RestApiClientError=n;
package/dist/rest.mjs ADDED
@@ -0,0 +1,112 @@
1
+ import { i as e, n as t, r as n, t as r } from "./application-CMx2Si6C.mjs";
2
+ //#region src/rest/index.ts
3
+ var i = (e) => e != null, a = class extends Error {
4
+ constructor(e, t) {
5
+ super(e), this.name = "RestApiClientError", this.status = t?.status, this.statusText = t?.statusText, this.url = t?.url, this.body = t?.body;
6
+ }
7
+ }, o = () => globalThis.process?.env ?? {}, s = (e) => /^\/?s\//.test(e), c = (e) => e.replace(/^(\/?)s\//, "$1"), l = (e, t, n) => {
8
+ let r = /^https?:\/\//i.test(t) ? t : `${e}${t.startsWith("/") ? "" : "/"}${t}`;
9
+ if (!i(n)) return r;
10
+ let a = new URLSearchParams();
11
+ for (let [e, t] of Object.entries(n)) i(t) && a.append(e, String(t));
12
+ let o = a.toString();
13
+ return o.length === 0 ? r : r.includes("?") ? `${r}&${o}` : `${r}?${o}`;
14
+ }, u = class {
15
+ constructor(e) {
16
+ this.refreshAccessTokenPromise = null, this.baseUrl = e?.baseUrl, this.token = e?.token, this.defaultHeaders = e?.defaultHeaders, this.fetchImplementation = e?.fetch ?? globalThis.fetch ?? null, this.authorizationToken = e?.token ?? null, this.runAs = e?.runAs;
17
+ }
18
+ request(e, t, n) {
19
+ return this.execute(e, t, n?.body, n);
20
+ }
21
+ get(e, t) {
22
+ return this.execute("GET", e, void 0, t);
23
+ }
24
+ resolveUrl(e, t) {
25
+ let n = this.resolveTarget(e);
26
+ return l(n.baseUrl, n.path, t?.query);
27
+ }
28
+ post(e, t, n) {
29
+ return this.execute("POST", e, t, n);
30
+ }
31
+ put(e, t, n) {
32
+ return this.execute("PUT", e, t, n);
33
+ }
34
+ patch(e, t, n) {
35
+ return this.execute("PATCH", e, t, n);
36
+ }
37
+ delete(e, t) {
38
+ return this.execute("DELETE", e, void 0, t);
39
+ }
40
+ resolveBaseUrl() {
41
+ let e = this.baseUrl ?? o().TWENTY_API_URL;
42
+ if (!i(e) || e.trim().length === 0) throw new a(`Missing API url. Set the \`${r}\` environment variable or pass \`baseUrl\` to \`RestApiClient\`.`);
43
+ return e.replace(/\/+$/, "");
44
+ }
45
+ resolveFunctionsBaseUrl() {
46
+ let e = o()[n];
47
+ if (!(!i(e) || e.trim().length === 0)) return e.trim().replace(/\/+$/, "");
48
+ }
49
+ resolveTarget(e) {
50
+ return i(this.baseUrl) || !s(e) ? {
51
+ baseUrl: this.resolveBaseUrl(),
52
+ path: e
53
+ } : {
54
+ baseUrl: this.resolveFunctionsBaseUrl() ?? `${this.resolveBaseUrl()}/s`,
55
+ path: c(e)
56
+ };
57
+ }
58
+ resolveToken() {
59
+ let n = this.runAs === "application" ? t : e;
60
+ if (!i(this.authorizationToken)) {
61
+ let e = o();
62
+ this.authorizationToken = this.token ?? e[n] ?? e.TWENTY_API_KEY ?? null;
63
+ }
64
+ if (!i(this.authorizationToken) || this.authorizationToken.length === 0) throw new a(`Missing application access token. Set the \`${n}\` environment variable or pass \`token\` to \`RestApiClient\`.`);
65
+ return this.authorizationToken;
66
+ }
67
+ async requestRefreshedAccessToken() {
68
+ let t = globalThis.frontComponentHostCommunicationApi?.requestAccessTokenRefresh;
69
+ return typeof t == "function" ? (this.refreshAccessTokenPromise ||= t().then((t) => typeof t != "string" || t.length === 0 ? null : (this.authorizationToken = t, o()[e] = t, t)).catch((e) => (console.error("Chass REST client: token refresh failed", e), null)).finally(() => {
70
+ this.refreshAccessTokenPromise = null;
71
+ }), this.refreshAccessTokenPromise) : null;
72
+ }
73
+ sendRequest(e, t, n, r, o) {
74
+ if (!i(this.fetchImplementation)) throw new a("Global `fetch` function is not available, pass a fetch implementation to `RestApiClient`.");
75
+ let s = new Headers(this.defaultHeaders);
76
+ i(o?.headers) && new Headers(o.headers).forEach((e, t) => s.set(t, e));
77
+ let c = typeof FormData < "u" && n instanceof FormData, l = i(n) && !c && typeof n != "string";
78
+ c ? s.delete("Content-Type") : l && s.set("Content-Type", "application/json"), s.set("Authorization", `Bearer ${r}`);
79
+ let u = i(n) ? c || typeof n == "string" ? n : JSON.stringify(n) : void 0;
80
+ return this.fetchImplementation.call(globalThis, e, {
81
+ method: t,
82
+ headers: s,
83
+ body: u,
84
+ signal: o?.signal
85
+ });
86
+ }
87
+ async parseResponse(e, t) {
88
+ let n = await e.text(), r;
89
+ if (n.trim().length > 0) try {
90
+ r = JSON.parse(n);
91
+ } catch {
92
+ r = n;
93
+ }
94
+ if (!e.ok) throw new a(`Request to ${t} failed with status ${e.status} ${e.statusText}`, {
95
+ status: e.status,
96
+ statusText: e.statusText,
97
+ url: t,
98
+ body: r
99
+ });
100
+ return r;
101
+ }
102
+ async execute(e, t, n, r) {
103
+ let a = this.resolveTarget(t), o = l(a.baseUrl, a.path, r?.query), s = this.resolveToken(), c = await this.sendRequest(o, e, n, s, r);
104
+ if (c.status === 401) {
105
+ let t = await this.requestRefreshedAccessToken();
106
+ i(t) && (c = await this.sendRequest(o, e, n, t, r));
107
+ }
108
+ return this.parseResponse(c, o);
109
+ }
110
+ };
111
+ //#endregion
112
+ export { u as RestApiClient, a as RestApiClientError };
@@ -0,0 +1,9 @@
1
+ import { type TwentyClientRunAs } from './twenty-client-run-as.type';
2
+ export type TwentyClientOptions = Omit<RequestInit, 'body' | 'headers'> & {
3
+ url?: string;
4
+ headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);
5
+ fetcher?: (operation: Record<string, unknown> | Record<string, unknown>[]) => Promise<unknown>;
6
+ fetch?: typeof globalThis.fetch;
7
+ batch?: unknown;
8
+ runAs?: TwentyClientRunAs;
9
+ };
@@ -0,0 +1 @@
1
+ export type TwentyClientRunAs = 'user' | 'application';
package/package.json ADDED
@@ -0,0 +1,78 @@
1
+ {
2
+ "name": "@chassdev/client-sdk",
3
+ "version": "2.46.0",
4
+ "description": "Typed Core, Metadata and REST API clients for Chass applications.",
5
+ "sideEffects": false,
6
+ "license": "MIT",
7
+ "scripts": {
8
+ "build": "npx rimraf dist && npx vite build && npx vite build -c vite.metadata.config.ts && tsgo -p tsconfig.lib.json --declaration --emitDeclarationOnly --noEmit false --outDir dist --rootDir src && npx tsc-alias -p tsconfig.lib.json --outDir dist"
9
+ },
10
+ "exports": {
11
+ "./core": {
12
+ "types": "./dist/core/index.d.ts",
13
+ "import": "./dist/core.mjs",
14
+ "require": "./dist/core.cjs"
15
+ },
16
+ "./metadata": {
17
+ "types": "./dist/metadata/index.d.ts",
18
+ "import": "./dist/metadata.mjs",
19
+ "require": "./dist/metadata.cjs"
20
+ },
21
+ "./rest": {
22
+ "types": "./dist/rest/index.d.ts",
23
+ "import": "./dist/rest.mjs",
24
+ "require": "./dist/rest.cjs"
25
+ },
26
+ "./generate": {
27
+ "types": "./dist/generate/index.d.ts",
28
+ "import": "./dist/generate.mjs",
29
+ "require": "./dist/generate.cjs"
30
+ }
31
+ },
32
+ "typesVersions": {
33
+ "*": {
34
+ "core": [
35
+ "dist/core/index.d.ts"
36
+ ],
37
+ "metadata": [
38
+ "dist/metadata/index.d.ts"
39
+ ],
40
+ "rest": [
41
+ "dist/rest/index.d.ts"
42
+ ],
43
+ "generate": [
44
+ "dist/generate/index.d.ts"
45
+ ]
46
+ }
47
+ },
48
+ "files": [
49
+ "dist"
50
+ ],
51
+ "dependencies": {
52
+ "@genql/runtime": "^2.10.0",
53
+ "esbuild": "^0.28.1",
54
+ "graphql": "^16.8.1",
55
+ "lodash": "^4.17.21",
56
+ "prettier": "^3.8.3"
57
+ },
58
+ "devDependencies": {
59
+ "@types/lodash": "^4.17.24",
60
+ "@typescript/native-preview": "^7.0.0-dev.20260116.1",
61
+ "tsc-alias": "^1.8.16",
62
+ "typescript": "^5.9.3",
63
+ "vite": "^8.0.0",
64
+ "vite-plugin-dts": "^4.5.4",
65
+ "vitest": "^4.1.0"
66
+ },
67
+ "engines": {
68
+ "node": "^24.5.0",
69
+ "yarn": "^4.0.2"
70
+ },
71
+ "homepage": "https://chass.app",
72
+ "bugs": {
73
+ "email": "Pierre@chass.app"
74
+ },
75
+ "publishConfig": {
76
+ "access": "public"
77
+ }
78
+ }