@cplace/test-mcp-server 0.1.6 → 0.1.8

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
@@ -2,31 +2,9 @@
2
2
 
3
3
  An MCP (Model Context Protocol) server that provides Claude Desktop with tools to interact with cplace APIs. This server exposes cplace functionality through a set of MCP tools for workspace management, page operations, and search capabilities.
4
4
 
5
- ## Features
5
+ ## Installation & Setup
6
6
 
7
- - **Workspace Information**: Get workspaces, types, and metadata
8
- - **Datamodel Information**: Get attributes and metadata
9
- - **Page Retrieval**: Get pages by UID
10
- - **Person Retrieval**: Get persons by UID or name
11
- - **Complex Search**: Structured attribute filtering with multiple conditions
12
-
13
- ## Installation
14
-
15
- ### ONLY For Development/Local Use
16
-
17
- 1. Clone this repository
18
- 2. Install dependencies:
19
- ```bash
20
- npm install
21
- ```
22
- 3. Build the project:
23
- ```bash
24
- npm run build
25
- ```
26
-
27
- ## Configuration with Claude Desktop
28
-
29
- ### For NPM Installation (recommended)
7
+ ### Claude Desktop Installation
30
8
  Add this entry to your Claude Desktop MCP server configuration file:
31
9
 
32
10
  ```json
@@ -44,41 +22,25 @@ Add this entry to your Claude Desktop MCP server configuration file:
44
22
  }
45
23
  ```
46
24
 
47
- ### For Local Development
48
- Add this entry to your Claude Desktop MCP server configuration file:
25
+ ### Claude Code Installation
26
+ Use the Claude Code CLI to add the MCP server:
49
27
 
50
- ```json
51
- {
52
- "mcpServers": {
53
- "cplace": {
54
- "command": "node",
55
- "args": ["/absolute/path/to/this/project/dist/index.js"],
56
- "env": {
57
- "CPLACE_URL": "https://your-cplace-instance.com/your-tenant/",
58
- "API_TOKEN": "your-api-token"
59
- }
60
- }
61
- }
62
- }
28
+ ```bash
29
+ claude mcp add cplace \
30
+ --env CPLACE_URL=https://your-cplace-instance.com/your-tenant/ \
31
+ --env API_TOKEN=your-api-token \
32
+ -- npx -y @cplace/test-mcp-server
63
33
  ```
64
34
 
65
-
66
-
67
- ## Available Tools
68
-
69
- - `cplace_list_workspaces` - Get all workspaces with essential properties
70
- - `cplace_get_workspace_details` - Get comprehensive workspace details
71
- - `cplace_get_types_in_workspace` - Get types from workspace
72
- - `cplace_get_type_datamodel` - Get the datamodel of a type including its attributes, constraints, and permissions
73
- - `cplace_get_page_by_id` - Get page by ID with full details
74
- - `cplace_get_person_by_id` - Get details about a person including their name and email
75
- - `cplace_search_person` - Search a person by their name
76
- - `cplace_search_pages` - Search pages of a type in cplace
35
+ Verify the installation:
36
+ ```bash
37
+ claude mcp list
38
+ ```
77
39
 
78
40
  ## Usage
79
41
 
80
42
  1. Obtain an API Token for your cplace system (see [cplace documentation](https://docs.cplace.io/lowcode/low-code-cli/authentication/))
81
- 2. Configure your credentials (see Configuration section above)
43
+ 2. Configure your credentials (see Installation section above)
82
44
  3. If Claude Desktop is running, close it
83
45
  4. Add the MCP server configuration to Claude Desktop
84
46
  5. Open Claude Desktop - the cplace tools should now be available
@@ -87,21 +49,32 @@ Add this entry to your Claude Desktop MCP server configuration file:
87
49
 
88
50
  To change `CPLACE_URL` or `API_TOKEN`, update the values in the Claude Desktop configuration, then close & reopen Claude Desktop.
89
51
 
90
- ## Development
91
52
 
92
- ```bash
93
- # Install dependencies
94
- npm install
95
53
 
96
- # Build
97
- npm run build
54
+ ## Available Tools
55
+
56
+ ### Workspace & Type Information
57
+ - `cplace_list_workspaces` - Get all workspaces with essential properties
58
+ - `cplace_get_types_in_workspace` - Get types from workspace
59
+ - `cplace_get_type_datamodel` - Get the datamodel of a type including its attributes, constraints, and permissions
98
60
 
99
- # Run in development
100
- npm run dev
61
+ ### Page Operations
62
+ - `cplace_get_page_by_id` - Get page by ID with full details
63
+ - `cplace_create_page` - Create a new page with specified attributes and content
64
+ - `cplace_update_page` - Update an existing page's attributes, content, or structure
65
+ - `cplace_update_page_attributes_only` - Lightweight tool for updating only page attributes
101
66
 
102
- # Lint
103
- npm run lint
67
+ ### Search & Retrieval
68
+ - `cplace_search_pages` - Search pages of a type in cplace
69
+ - `cplace_fulltext_search` - Make a fulltext search across all pages in cplace
70
+ - `cplace_get_all_pages_of_type` - Get all pages of a specific type in a workspace
71
+ - `cplace_search_pages_csv` - Same as cplace_search_pages but returns results in CSV format
104
72
 
105
- # Format code
106
- npm run format
107
- ```
73
+ ### User & Person Management
74
+ - `cplace_get_person_by_id` - Get details about a person including their name and email
75
+ - `cplace_search_person` - Search a person by their name
76
+ - `cplace_get_current_user` - Get information about the currently logged-in user
77
+
78
+ ## Development
79
+
80
+ For development setup, contribution guidelines, and extending the server, see [DEVELOPMENT.md](DEVELOPMENT.md).
package/dist/api.d.ts CHANGED
@@ -8,7 +8,6 @@ export interface WorkspaceDetailed {
8
8
  totalPages: number;
9
9
  hide: boolean;
10
10
  url: string;
11
- absoluteUrl: string;
12
11
  creator?: string;
13
12
  modifier?: string;
14
13
  permissions: WorkspacePermissions;
@@ -46,7 +45,7 @@ export interface WorkspacesApiResponse {
46
45
  result: WorkspaceDetailed[];
47
46
  }
48
47
  export interface PageDetailed {
49
- id: string;
48
+ uid: string;
50
49
  name: string;
51
50
  url: string;
52
51
  type: PageType;
@@ -62,21 +61,21 @@ export interface PageType {
62
61
  localizedNames: Record<string, string>;
63
62
  }
64
63
  export interface PageWorkspace {
65
- id: string;
64
+ uid: string;
66
65
  name: string;
67
66
  }
68
67
  export interface PageParent {
69
- id: string;
68
+ uid: string;
70
69
  name: string;
71
70
  type: PageType;
72
71
  }
73
72
  export interface PageChild {
74
- id: string;
73
+ uid: string;
75
74
  name: string;
76
75
  type: PageType;
77
76
  }
78
77
  export interface PageUser {
79
- id: string;
78
+ uid: string;
80
79
  name: string;
81
80
  }
82
81
  export interface PageAttributes {
@@ -86,7 +85,7 @@ export interface PageApiResponse {
86
85
  result: PageDetailed;
87
86
  }
88
87
  export interface PersonDetailed {
89
- id: string;
88
+ uid: string;
90
89
  name: string;
91
90
  email: string;
92
91
  url: string;
@@ -130,7 +129,7 @@ export interface SearchApiResponse {
130
129
  summary: string;
131
130
  }
132
131
  export interface TypeDefinitionDetailed {
133
- id: string;
132
+ uid: string;
134
133
  internalName: string;
135
134
  workspaceId: string;
136
135
  localizedNames: Record<string, string>;
@@ -166,7 +165,7 @@ export interface ApiEndpoints {
166
165
  export declare class CplaceApiClient {
167
166
  private config;
168
167
  constructor(config: CplaceConfig);
169
- makeApiRequest<T extends keyof ApiEndpoints>(endpoint: T, method?: 'GET' | 'POST', params?: Record<string, any>, data?: any): Promise<ApiEndpoints[T]>;
170
- makeApiRequest<T = any>(endpoint: string, method?: 'GET' | 'POST', params?: Record<string, any>, data?: any): Promise<T>;
168
+ makeApiRequest<T extends keyof ApiEndpoints>(endpoint: T, method?: 'GET' | 'POST' | 'PATCH', params?: Record<string, any>, data?: any): Promise<ApiEndpoints[T]>;
169
+ makeApiRequest<T = any>(endpoint: string, method?: 'GET' | 'POST' | 'PATCH', params?: Record<string, any>, data?: any): Promise<T>;
171
170
  }
172
171
  //# sourceMappingURL=api.d.ts.map
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,YAAY,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,oBAAoB,CAAC;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,eAAe,EAAE,wBAAwB,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,cAAc,EAAE,GAAG,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,uBAAuB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,aAAa,CAAC;IACzB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,WAAW,EAAE,eAAe,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,YAAY,EAAE,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;IACvE,UAAU,EAAE,GAAG,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,sBAAsB,CAAC;CAChC;AAGD,MAAM,WAAW,YAAY;IAC3B,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;IACvC,WAAW,EAAE,YAAY,CAAC;IAC1B,aAAa,EAAE,cAAc,CAAC;IAC9B,aAAa,EAAE,iBAAiB,CAAC;IACjC,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,sBAAsB,EAAE,iBAAiB,CAAC;CAC3C;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,YAAY;IAK1B,cAAc,CAAC,CAAC,SAAS,MAAM,YAAY,EAC/C,QAAQ,EAAE,CAAC,EACX,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,EACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAGrB,cAAc,CAAC,CAAC,GAAG,GAAG,EAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,EACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,CAAC,CAAC;CAuDd"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/api.js CHANGED
@@ -1,26 +1,47 @@
1
1
  import axios from 'axios';
2
+ import { debugLogWithTag } from './logger.js';
2
3
  export class CplaceApiClient {
3
4
  config;
4
5
  constructor(config) {
5
6
  this.config = config;
6
7
  }
7
8
  async makeApiRequest(endpoint, method = 'GET', params, data) {
9
+ debugLogWithTag('API_CLIENT', `Making ${method} request to endpoint: ${endpoint}`);
10
+ debugLogWithTag('API_CLIENT', `Params: ${JSON.stringify(params)}`);
11
+ debugLogWithTag('API_CLIENT', `Data: ${JSON.stringify(data)}`);
8
12
  if (!this.config.url || !this.config.apiToken) {
9
13
  throw new Error('CPLACE_URL and API_TOKEN environment variables are required');
10
14
  }
11
15
  try {
12
16
  const headers = {
13
17
  'X-Cplace-Api-Token': this.config.apiToken,
14
- 'Content-Type': 'application/json'
18
+ 'Content-Type': 'application/json',
19
+ 'Accept': 'application/json'
15
20
  };
21
+ if (method === 'POST' || method === 'PATCH') {
22
+ headers['X-Requested-With'] = 'XMLHttpRequest';
23
+ headers['X-CSRF-TOKEN'] = 'fetch';
24
+ }
16
25
  const url = new URL(`cplace-api/cf.cplace.citizenAi/mcp/${endpoint}`, this.config.url).toString();
26
+ debugLogWithTag('API_CLIENT', `Full URL: ${url}`);
27
+ debugLogWithTag('API_CLIENT', `Headers: ${JSON.stringify(headers)}`);
17
28
  let response;
29
+ debugLogWithTag('API_CLIENT', `About to make ${method} request`);
18
30
  if (method === 'GET') {
19
31
  response = await axios.get(url, { headers, params });
20
32
  }
21
- else {
33
+ else if (method === 'POST') {
34
+ debugLogWithTag('API_CLIENT', `POST request body: ${JSON.stringify(data)}`);
22
35
  response = await axios.post(url, data, { headers });
23
36
  }
37
+ else if (method === 'PATCH') {
38
+ debugLogWithTag('API_CLIENT', `PATCH request body: ${JSON.stringify(data)}`);
39
+ response = await axios.patch(url, data, { headers });
40
+ }
41
+ else {
42
+ throw new Error(`Unsupported HTTP method: ${method}`);
43
+ }
44
+ debugLogWithTag('API_CLIENT', `Response status: ${response.status}`);
24
45
  const responseData = response.data;
25
46
  if (responseData.result !== undefined) {
26
47
  const result = responseData.result;
@@ -37,14 +58,20 @@ export class CplaceApiClient {
37
58
  }
38
59
  }
39
60
  else {
40
- throw new Error(`API Error: ${responseData.error || 'Unknown error'}`);
61
+ debugLogWithTag('API_CLIENT', `API returned error response: ${JSON.stringify(responseData)}`);
62
+ const errorMessage = responseData.error || responseData.errorMessage || 'Unknown error';
63
+ throw new Error(`API Error: ${errorMessage} (Status: ${response.status})`);
41
64
  }
42
65
  }
43
66
  catch (error) {
44
67
  if (axios.isAxiosError(error)) {
45
- throw new Error(`Request failed: ${error.message}`);
68
+ debugLogWithTag('API_CLIENT', `HTTP Error: ${error.response?.status} - ${error.response?.statusText}`);
69
+ debugLogWithTag('API_CLIENT', `Response data: ${JSON.stringify(error.response?.data)}`);
70
+ debugLogWithTag('API_CLIENT', `Full error: ${error.message}`);
71
+ throw new Error(`Request failed: ${error.message} (Status: ${error.response?.status})`);
46
72
  }
47
73
  else {
74
+ debugLogWithTag('API_CLIENT', `Non-HTTP error: ${error}`);
48
75
  throw error;
49
76
  }
50
77
  }
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAsM7C,MAAM,OAAO,eAAe;IAClB,MAAM,CAAe;IAE7B,YAAY,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAkBD,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,SAAyB,KAAK,EAC9B,MAA4B,EAC5B,IAAU;QAEV,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG;gBACd,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAC1C,cAAc,EAAE,kBAAkB;aACnC,CAAC;YAEF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,sCAAsC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YAElG,IAAI,QAAuC,CAAC;YAE5C,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;YAEnC,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;gBAGnC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBACtH,IAAI,CAAC;wBACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC5B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBAEf,OAAO,MAAM,CAAC;oBAChB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBAEN,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,cAAc,YAAY,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { PageDetailed } from './api.js';
2
+ import { CplaceApiClient } from './api.js';
3
+ export declare function escapeCSVValue(value: any): string;
4
+ export declare function flattenComplexAttribute(value: any): string;
5
+ export declare function resolveReferences(value: any, client: CplaceApiClient): Promise<string>;
6
+ export declare function convertPagesToCsv(pages: PageDetailed[], client: CplaceApiClient, includeAttributes?: string[]): Promise<string>;
7
+ //# sourceMappingURL=csvUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csvUtils.d.ts","sourceRoot":"","sources":["../src/csvUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAa,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAK3C,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAajD;AAKD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAqC1D;AAKD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAwC5F;AAYD,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,YAAY,EAAE,EACrB,MAAM,EAAE,eAAe,EACvB,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC,CAsEjB"}
@@ -0,0 +1,125 @@
1
+ export function escapeCSVValue(value) {
2
+ if (value === null || value === undefined) {
3
+ return '';
4
+ }
5
+ const stringValue = String(value);
6
+ if (stringValue.includes(',') || stringValue.includes('"') || stringValue.includes('\n') || stringValue.includes('\r')) {
7
+ return `"${stringValue.replace(/"/g, '""')}"`;
8
+ }
9
+ return stringValue;
10
+ }
11
+ export function flattenComplexAttribute(value) {
12
+ if (value === null || value === undefined) {
13
+ return '';
14
+ }
15
+ if (Array.isArray(value)) {
16
+ return value.map(item => {
17
+ if (typeof item === 'object' && item !== null) {
18
+ return item.name || item.displayName || item.id || JSON.stringify(item);
19
+ }
20
+ return String(item);
21
+ }).join('; ');
22
+ }
23
+ if (typeof value === 'object' && value !== null) {
24
+ if ('name' in value)
25
+ return String(value.name);
26
+ if ('displayName' in value)
27
+ return String(value.displayName);
28
+ if ('id' in value)
29
+ return String(value.id);
30
+ if (value instanceof Date) {
31
+ return value.toISOString();
32
+ }
33
+ if (typeof value === 'string' && /^\d{4}-\d{2}-\d{2}/.test(value)) {
34
+ return value;
35
+ }
36
+ return JSON.stringify(value);
37
+ }
38
+ return String(value);
39
+ }
40
+ export async function resolveReferences(value, client) {
41
+ if (typeof value === 'string') {
42
+ if (value.startsWith('page/')) {
43
+ try {
44
+ const pageData = await client.makeApiRequest('json/page', 'GET', { id: value });
45
+ return pageData.name || value;
46
+ }
47
+ catch (error) {
48
+ return value;
49
+ }
50
+ }
51
+ if (value.startsWith('person/')) {
52
+ try {
53
+ const personData = await client.makeApiRequest('json/person', 'GET', { id: value });
54
+ return personData.name || value;
55
+ }
56
+ catch (error) {
57
+ return value;
58
+ }
59
+ }
60
+ }
61
+ if (Array.isArray(value)) {
62
+ const resolved = await Promise.all(value.map(async (item) => await resolveReferences(item, client)));
63
+ return resolved.join('; ');
64
+ }
65
+ if (typeof value === 'object' && value !== null) {
66
+ if ('id' in value && typeof value.id === 'string') {
67
+ return await resolveReferences(value.id, client);
68
+ }
69
+ return flattenComplexAttribute(value);
70
+ }
71
+ return flattenComplexAttribute(value);
72
+ }
73
+ function stripHtml(html) {
74
+ return html.replace(/<[^>]*>/g, '').trim();
75
+ }
76
+ export async function convertPagesToCsv(pages, client, includeAttributes) {
77
+ if (pages.length === 0) {
78
+ const headers = ['id', 'name', 'url', 'type', 'workspace', 'creator', 'modifier'];
79
+ return headers.map(escapeCSVValue).join(',') + '\n';
80
+ }
81
+ let attributesToInclude = [];
82
+ if (includeAttributes && includeAttributes.length > 0) {
83
+ attributesToInclude = includeAttributes;
84
+ }
85
+ else {
86
+ const allAttributeKeys = new Set();
87
+ pages.forEach(page => {
88
+ if (page.attributes) {
89
+ Object.keys(page.attributes).forEach(key => allAttributeKeys.add(key));
90
+ }
91
+ });
92
+ attributesToInclude = Array.from(allAttributeKeys).sort();
93
+ }
94
+ const coreHeaders = ['id', 'name', 'url', 'type', 'workspace', 'creator', 'modifier'];
95
+ const headers = [...coreHeaders, ...attributesToInclude];
96
+ const csvRows = [];
97
+ csvRows.push(headers.map(escapeCSVValue).join(','));
98
+ for (const page of pages) {
99
+ const row = [];
100
+ row.push(escapeCSVValue(page.uid));
101
+ row.push(escapeCSVValue(page.name));
102
+ row.push(escapeCSVValue(page.url));
103
+ row.push(escapeCSVValue(page.type?.localizedNames?.en || page.type?.internalName || ''));
104
+ row.push(escapeCSVValue(page.workspace?.name || ''));
105
+ row.push(escapeCSVValue(page.creator?.name || ''));
106
+ row.push(escapeCSVValue(page.modifier?.name || ''));
107
+ for (const attributeName of attributesToInclude) {
108
+ const attributeValue = page.attributes?.[attributeName];
109
+ try {
110
+ const resolvedValue = await resolveReferences(attributeValue, client);
111
+ let finalValue = resolvedValue;
112
+ if (typeof finalValue === 'string' && finalValue.includes('<') && finalValue.includes('>')) {
113
+ finalValue = stripHtml(finalValue);
114
+ }
115
+ row.push(escapeCSVValue(finalValue));
116
+ }
117
+ catch (error) {
118
+ row.push(escapeCSVValue(flattenComplexAttribute(attributeValue)));
119
+ }
120
+ }
121
+ csvRows.push(row.join(','));
122
+ }
123
+ return csvRows.join('\n') + '\n';
124
+ }
125
+ //# sourceMappingURL=csvUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csvUtils.js","sourceRoot":"","sources":["../src/csvUtils.ts"],"names":[],"mappings":"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"}