@terminalfour/terminalfour-js 1.0.0-rc.1

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 (253) hide show
  1. package/LICENSE.md +106 -0
  2. package/README.md +169 -0
  3. package/dist/cjs/element-resolver.d.ts +115 -0
  4. package/dist/cjs/element-resolver.d.ts.map +1 -0
  5. package/dist/cjs/element-resolver.js +391 -0
  6. package/dist/cjs/element-resolver.js.map +1 -0
  7. package/dist/cjs/errors.d.ts +21 -0
  8. package/dist/cjs/errors.d.ts.map +1 -0
  9. package/dist/cjs/errors.js +21 -0
  10. package/dist/cjs/errors.js.map +1 -0
  11. package/dist/cjs/handlebars.d.ts +123 -0
  12. package/dist/cjs/handlebars.d.ts.map +1 -0
  13. package/dist/cjs/handlebars.js +306 -0
  14. package/dist/cjs/handlebars.js.map +1 -0
  15. package/dist/cjs/http-client.d.ts +21 -0
  16. package/dist/cjs/http-client.d.ts.map +1 -0
  17. package/dist/cjs/http-client.js +126 -0
  18. package/dist/cjs/http-client.js.map +1 -0
  19. package/dist/cjs/index.d.ts +37 -0
  20. package/dist/cjs/index.d.ts.map +1 -0
  21. package/dist/cjs/index.js +55 -0
  22. package/dist/cjs/index.js.map +1 -0
  23. package/dist/cjs/media-category-ref.d.ts +78 -0
  24. package/dist/cjs/media-category-ref.d.ts.map +1 -0
  25. package/dist/cjs/media-category-ref.js +184 -0
  26. package/dist/cjs/media-category-ref.js.map +1 -0
  27. package/dist/cjs/media-library.d.ts +30 -0
  28. package/dist/cjs/media-library.d.ts.map +1 -0
  29. package/dist/cjs/media-library.js +77 -0
  30. package/dist/cjs/media-library.js.map +1 -0
  31. package/dist/cjs/models/content-item.d.ts +80 -0
  32. package/dist/cjs/models/content-item.d.ts.map +1 -0
  33. package/dist/cjs/models/content-item.js +682 -0
  34. package/dist/cjs/models/content-item.js.map +1 -0
  35. package/dist/cjs/models/media-category-item.d.ts +29 -0
  36. package/dist/cjs/models/media-category-item.d.ts.map +1 -0
  37. package/dist/cjs/models/media-category-item.js +33 -0
  38. package/dist/cjs/models/media-category-item.js.map +1 -0
  39. package/dist/cjs/models/media-item.d.ts +74 -0
  40. package/dist/cjs/models/media-item.d.ts.map +1 -0
  41. package/dist/cjs/models/media-item.js +188 -0
  42. package/dist/cjs/models/media-item.js.map +1 -0
  43. package/dist/cjs/models/section-item.d.ts +58 -0
  44. package/dist/cjs/models/section-item.d.ts.map +1 -0
  45. package/dist/cjs/models/section-item.js +166 -0
  46. package/dist/cjs/models/section-item.js.map +1 -0
  47. package/dist/cjs/package.json +1 -0
  48. package/dist/cjs/resources/channel-resource.d.ts +112 -0
  49. package/dist/cjs/resources/channel-resource.d.ts.map +1 -0
  50. package/dist/cjs/resources/channel-resource.js +107 -0
  51. package/dist/cjs/resources/channel-resource.js.map +1 -0
  52. package/dist/cjs/resources/content-resource.d.ts +50 -0
  53. package/dist/cjs/resources/content-resource.d.ts.map +1 -0
  54. package/dist/cjs/resources/content-resource.js +286 -0
  55. package/dist/cjs/resources/content-resource.js.map +1 -0
  56. package/dist/cjs/resources/content-type-resource.d.ts +283 -0
  57. package/dist/cjs/resources/content-type-resource.d.ts.map +1 -0
  58. package/dist/cjs/resources/content-type-resource.js +970 -0
  59. package/dist/cjs/resources/content-type-resource.js.map +1 -0
  60. package/dist/cjs/resources/group-resource.d.ts +96 -0
  61. package/dist/cjs/resources/group-resource.d.ts.map +1 -0
  62. package/dist/cjs/resources/group-resource.js +213 -0
  63. package/dist/cjs/resources/group-resource.js.map +1 -0
  64. package/dist/cjs/resources/list-resource.d.ts +111 -0
  65. package/dist/cjs/resources/list-resource.d.ts.map +1 -0
  66. package/dist/cjs/resources/list-resource.js +179 -0
  67. package/dist/cjs/resources/list-resource.js.map +1 -0
  68. package/dist/cjs/resources/media-resource.d.ts +69 -0
  69. package/dist/cjs/resources/media-resource.d.ts.map +1 -0
  70. package/dist/cjs/resources/media-resource.js +210 -0
  71. package/dist/cjs/resources/media-resource.js.map +1 -0
  72. package/dist/cjs/resources/media-type-resource.d.ts +70 -0
  73. package/dist/cjs/resources/media-type-resource.d.ts.map +1 -0
  74. package/dist/cjs/resources/media-type-resource.js +195 -0
  75. package/dist/cjs/resources/media-type-resource.js.map +1 -0
  76. package/dist/cjs/resources/navigation-resource.d.ts +664 -0
  77. package/dist/cjs/resources/navigation-resource.d.ts.map +1 -0
  78. package/dist/cjs/resources/navigation-resource.js +2349 -0
  79. package/dist/cjs/resources/navigation-resource.js.map +1 -0
  80. package/dist/cjs/resources/page-layout-resource.d.ts +83 -0
  81. package/dist/cjs/resources/page-layout-resource.d.ts.map +1 -0
  82. package/dist/cjs/resources/page-layout-resource.js +214 -0
  83. package/dist/cjs/resources/page-layout-resource.js.map +1 -0
  84. package/dist/cjs/resources/user-resource.d.ts +126 -0
  85. package/dist/cjs/resources/user-resource.d.ts.map +1 -0
  86. package/dist/cjs/resources/user-resource.js +317 -0
  87. package/dist/cjs/resources/user-resource.js.map +1 -0
  88. package/dist/cjs/section-ref.d.ts +185 -0
  89. package/dist/cjs/section-ref.d.ts.map +1 -0
  90. package/dist/cjs/section-ref.js +813 -0
  91. package/dist/cjs/section-ref.js.map +1 -0
  92. package/dist/cjs/site-structure.d.ts +18 -0
  93. package/dist/cjs/site-structure.d.ts.map +1 -0
  94. package/dist/cjs/site-structure.js +57 -0
  95. package/dist/cjs/site-structure.js.map +1 -0
  96. package/dist/cjs/t4-client.d.ts +121 -0
  97. package/dist/cjs/t4-client.d.ts.map +1 -0
  98. package/dist/cjs/t4-client.js +190 -0
  99. package/dist/cjs/t4-client.js.map +1 -0
  100. package/dist/cjs/type-registry.d.ts +31 -0
  101. package/dist/cjs/type-registry.d.ts.map +1 -0
  102. package/dist/cjs/type-registry.js +76 -0
  103. package/dist/cjs/type-registry.js.map +1 -0
  104. package/dist/cjs/types.d.ts +211 -0
  105. package/dist/cjs/types.d.ts.map +1 -0
  106. package/dist/cjs/types.js +3 -0
  107. package/dist/cjs/types.js.map +1 -0
  108. package/dist/cjs/utils.d.ts +147 -0
  109. package/dist/cjs/utils.d.ts.map +1 -0
  110. package/dist/cjs/utils.js +408 -0
  111. package/dist/cjs/utils.js.map +1 -0
  112. package/dist/esm/element-resolver.d.ts +115 -0
  113. package/dist/esm/element-resolver.d.ts.map +1 -0
  114. package/dist/esm/element-resolver.js +387 -0
  115. package/dist/esm/element-resolver.js.map +1 -0
  116. package/dist/esm/errors.d.ts +21 -0
  117. package/dist/esm/errors.d.ts.map +1 -0
  118. package/dist/esm/errors.js +17 -0
  119. package/dist/esm/errors.js.map +1 -0
  120. package/dist/esm/handlebars.d.ts +123 -0
  121. package/dist/esm/handlebars.d.ts.map +1 -0
  122. package/dist/esm/handlebars.js +300 -0
  123. package/dist/esm/handlebars.js.map +1 -0
  124. package/dist/esm/http-client.d.ts +21 -0
  125. package/dist/esm/http-client.d.ts.map +1 -0
  126. package/dist/esm/http-client.js +122 -0
  127. package/dist/esm/http-client.js.map +1 -0
  128. package/dist/esm/index.d.ts +37 -0
  129. package/dist/esm/index.d.ts.map +1 -0
  130. package/dist/esm/index.js +26 -0
  131. package/dist/esm/index.js.map +1 -0
  132. package/dist/esm/media-category-ref.d.ts +78 -0
  133. package/dist/esm/media-category-ref.d.ts.map +1 -0
  134. package/dist/esm/media-category-ref.js +180 -0
  135. package/dist/esm/media-category-ref.js.map +1 -0
  136. package/dist/esm/media-library.d.ts +30 -0
  137. package/dist/esm/media-library.d.ts.map +1 -0
  138. package/dist/esm/media-library.js +73 -0
  139. package/dist/esm/media-library.js.map +1 -0
  140. package/dist/esm/models/content-item.d.ts +80 -0
  141. package/dist/esm/models/content-item.d.ts.map +1 -0
  142. package/dist/esm/models/content-item.js +676 -0
  143. package/dist/esm/models/content-item.js.map +1 -0
  144. package/dist/esm/models/media-category-item.d.ts +29 -0
  145. package/dist/esm/models/media-category-item.d.ts.map +1 -0
  146. package/dist/esm/models/media-category-item.js +29 -0
  147. package/dist/esm/models/media-category-item.js.map +1 -0
  148. package/dist/esm/models/media-item.d.ts +74 -0
  149. package/dist/esm/models/media-item.d.ts.map +1 -0
  150. package/dist/esm/models/media-item.js +184 -0
  151. package/dist/esm/models/media-item.js.map +1 -0
  152. package/dist/esm/models/section-item.d.ts +58 -0
  153. package/dist/esm/models/section-item.d.ts.map +1 -0
  154. package/dist/esm/models/section-item.js +162 -0
  155. package/dist/esm/models/section-item.js.map +1 -0
  156. package/dist/esm/resources/channel-resource.d.ts +112 -0
  157. package/dist/esm/resources/channel-resource.d.ts.map +1 -0
  158. package/dist/esm/resources/channel-resource.js +102 -0
  159. package/dist/esm/resources/channel-resource.js.map +1 -0
  160. package/dist/esm/resources/content-resource.d.ts +50 -0
  161. package/dist/esm/resources/content-resource.d.ts.map +1 -0
  162. package/dist/esm/resources/content-resource.js +282 -0
  163. package/dist/esm/resources/content-resource.js.map +1 -0
  164. package/dist/esm/resources/content-type-resource.d.ts +283 -0
  165. package/dist/esm/resources/content-type-resource.d.ts.map +1 -0
  166. package/dist/esm/resources/content-type-resource.js +964 -0
  167. package/dist/esm/resources/content-type-resource.js.map +1 -0
  168. package/dist/esm/resources/group-resource.d.ts +96 -0
  169. package/dist/esm/resources/group-resource.d.ts.map +1 -0
  170. package/dist/esm/resources/group-resource.js +208 -0
  171. package/dist/esm/resources/group-resource.js.map +1 -0
  172. package/dist/esm/resources/list-resource.d.ts +111 -0
  173. package/dist/esm/resources/list-resource.d.ts.map +1 -0
  174. package/dist/esm/resources/list-resource.js +174 -0
  175. package/dist/esm/resources/list-resource.js.map +1 -0
  176. package/dist/esm/resources/media-resource.d.ts +69 -0
  177. package/dist/esm/resources/media-resource.d.ts.map +1 -0
  178. package/dist/esm/resources/media-resource.js +206 -0
  179. package/dist/esm/resources/media-resource.js.map +1 -0
  180. package/dist/esm/resources/media-type-resource.d.ts +70 -0
  181. package/dist/esm/resources/media-type-resource.d.ts.map +1 -0
  182. package/dist/esm/resources/media-type-resource.js +190 -0
  183. package/dist/esm/resources/media-type-resource.js.map +1 -0
  184. package/dist/esm/resources/navigation-resource.d.ts +664 -0
  185. package/dist/esm/resources/navigation-resource.d.ts.map +1 -0
  186. package/dist/esm/resources/navigation-resource.js +2344 -0
  187. package/dist/esm/resources/navigation-resource.js.map +1 -0
  188. package/dist/esm/resources/page-layout-resource.d.ts +83 -0
  189. package/dist/esm/resources/page-layout-resource.d.ts.map +1 -0
  190. package/dist/esm/resources/page-layout-resource.js +209 -0
  191. package/dist/esm/resources/page-layout-resource.js.map +1 -0
  192. package/dist/esm/resources/user-resource.d.ts +126 -0
  193. package/dist/esm/resources/user-resource.d.ts.map +1 -0
  194. package/dist/esm/resources/user-resource.js +312 -0
  195. package/dist/esm/resources/user-resource.js.map +1 -0
  196. package/dist/esm/section-ref.d.ts +185 -0
  197. package/dist/esm/section-ref.d.ts.map +1 -0
  198. package/dist/esm/section-ref.js +808 -0
  199. package/dist/esm/section-ref.js.map +1 -0
  200. package/dist/esm/site-structure.d.ts +18 -0
  201. package/dist/esm/site-structure.d.ts.map +1 -0
  202. package/dist/esm/site-structure.js +53 -0
  203. package/dist/esm/site-structure.js.map +1 -0
  204. package/dist/esm/t4-client.d.ts +121 -0
  205. package/dist/esm/t4-client.d.ts.map +1 -0
  206. package/dist/esm/t4-client.js +186 -0
  207. package/dist/esm/t4-client.js.map +1 -0
  208. package/dist/esm/type-registry.d.ts +31 -0
  209. package/dist/esm/type-registry.d.ts.map +1 -0
  210. package/dist/esm/type-registry.js +72 -0
  211. package/dist/esm/type-registry.js.map +1 -0
  212. package/dist/esm/types.d.ts +211 -0
  213. package/dist/esm/types.d.ts.map +1 -0
  214. package/dist/esm/types.js +2 -0
  215. package/dist/esm/types.js.map +1 -0
  216. package/dist/esm/utils.d.ts +147 -0
  217. package/dist/esm/utils.d.ts.map +1 -0
  218. package/dist/esm/utils.js +355 -0
  219. package/dist/esm/utils.js.map +1 -0
  220. package/docs/channels.md +62 -0
  221. package/docs/content-types.md +313 -0
  222. package/docs/content.md +199 -0
  223. package/docs/error-handling.md +86 -0
  224. package/docs/getting-started.md +146 -0
  225. package/docs/groups-and-users.md +167 -0
  226. package/docs/handlebars.md +145 -0
  227. package/docs/lists.md +98 -0
  228. package/docs/media-types.md +111 -0
  229. package/docs/media.md +169 -0
  230. package/docs/navigation/a-to-z.md +62 -0
  231. package/docs/navigation/breadcrumbs.md +67 -0
  232. package/docs/navigation/css-selector.md +53 -0
  233. package/docs/navigation/generate-file.md +48 -0
  234. package/docs/navigation/keyword-search.md +134 -0
  235. package/docs/navigation/language-switcher.md +37 -0
  236. package/docs/navigation/link-menu.md +105 -0
  237. package/docs/navigation/pagination.md +80 -0
  238. package/docs/navigation/previous-next-fulltext.md +43 -0
  239. package/docs/navigation/publish-to-one-file.md +93 -0
  240. package/docs/navigation/related-content.md +79 -0
  241. package/docs/navigation/related-section-branch.md +31 -0
  242. package/docs/navigation/return-to-index.md +35 -0
  243. package/docs/navigation/section-details.md +51 -0
  244. package/docs/navigation/section-iterator.md +33 -0
  245. package/docs/navigation/section-meta-info.md +39 -0
  246. package/docs/navigation/site-map.md +58 -0
  247. package/docs/navigation/top-content.md +80 -0
  248. package/docs/navigation/top-stories.md +47 -0
  249. package/docs/navigation.md +134 -0
  250. package/docs/page-layouts.md +71 -0
  251. package/docs/sections.md +224 -0
  252. package/docs/typescript.md +124 -0
  253. package/package.json +64 -0
@@ -0,0 +1,126 @@
1
+ import { HttpClient } from '../http-client.js';
2
+ /** Symbol used to restrict _initCustomFields() access to UserResource.get() in this module */
3
+ declare const INIT_CUSTOM_FIELDS: unique symbol;
4
+ /** A user returned to developers */
5
+ export interface UserData {
6
+ id: number;
7
+ username: string;
8
+ firstName: string;
9
+ lastName: string;
10
+ emailAddress: string;
11
+ userLevel: string;
12
+ enabled: boolean;
13
+ accountLocked: boolean;
14
+ /** When the user last logged in. `null` if they have never logged in (or T4 version doesn't track it). */
15
+ lastLogin: Date | null;
16
+ }
17
+ /** Raw user detail from GET /user/{id} */
18
+ interface RawUserDetail {
19
+ id: number;
20
+ username: string;
21
+ firstName: string;
22
+ lastName: string;
23
+ emailAddress: string;
24
+ userLevel: number;
25
+ defaultLanguage?: string;
26
+ enabled: boolean;
27
+ lastLoginDate?: number;
28
+ groupUser?: Array<{
29
+ id: number;
30
+ name: string;
31
+ }>;
32
+ authenticationMappingList?: Array<{
33
+ id: number;
34
+ identifier?: string;
35
+ enabled?: boolean;
36
+ }>;
37
+ [key: string]: unknown;
38
+ }
39
+ /** A group the user belongs to */
40
+ export interface UserGroup {
41
+ id: number;
42
+ name: string;
43
+ }
44
+ /** Auth method entry — true/false for simple enable/disable, or object with identifier */
45
+ export type AuthMethodValue = boolean | {
46
+ enabled: boolean;
47
+ identifier: string;
48
+ };
49
+ /** Auth methods on a user */
50
+ export interface AuthMethods {
51
+ local?: boolean;
52
+ ldap?: AuthMethodValue;
53
+ saml?: AuthMethodValue;
54
+ cas?: AuthMethodValue;
55
+ remoteuser?: boolean;
56
+ }
57
+ /** A mutable user object. Modify properties and call save() to persist. */
58
+ export declare class User {
59
+ readonly id: number;
60
+ username: string;
61
+ firstName: string;
62
+ lastName: string;
63
+ emailAddress: string;
64
+ userLevel: string;
65
+ defaultLanguage: string;
66
+ enabled: boolean;
67
+ /** Set to change the user's password. Leave undefined to keep unchanged. */
68
+ password?: string;
69
+ readonly groups: UserGroup[];
70
+ /** Authentication methods configured for this user. */
71
+ authMethods: AuthMethods;
72
+ /** When the user last logged in. `null` if they have never logged in (or T4 version doesn't track it). */
73
+ readonly lastLogin: Date | null;
74
+ /** Custom fields from the user extensible object. Only present when configured. */
75
+ customFields: Record<string, unknown> | null;
76
+ private readonly _httpClient;
77
+ private _rawData;
78
+ private _customFieldKeyMap;
79
+ constructor(raw: RawUserDetail, httpClient: HttpClient);
80
+ /** @internal Async initialization for custom fields. Only callable via UserResource.get(). */
81
+ [INIT_CUSTOM_FIELDS](): Promise<void>;
82
+ /** Persists current property values to the server via PUT. */
83
+ save(): Promise<void>;
84
+ }
85
+ /**
86
+ * Resource for user operations.
87
+ */
88
+ export declare class UserResource {
89
+ private readonly httpClient;
90
+ constructor(httpClient: HttpClient);
91
+ /** Lists users. Optionally filter by user level. */
92
+ list(options?: {
93
+ userLevel?: string;
94
+ }): Promise<UserData[]>;
95
+ /** Gets a single user by ID. Returns a mutable User object. */
96
+ get(id: number): Promise<User>;
97
+ /** Updates a user's properties (immutable pattern). */
98
+ update(id: number, data: {
99
+ username?: string;
100
+ firstName?: string;
101
+ lastName?: string;
102
+ emailAddress?: string;
103
+ userLevel?: string;
104
+ defaultLanguage?: string;
105
+ enabled?: boolean;
106
+ password?: string;
107
+ authMethods?: AuthMethods;
108
+ customFields?: Record<string, unknown>;
109
+ }): Promise<User>;
110
+ /** Creates a new user. */
111
+ create(data: {
112
+ username: string;
113
+ firstName: string;
114
+ lastName: string;
115
+ emailAddress: string;
116
+ password: string;
117
+ userLevel?: string;
118
+ defaultLanguage?: string;
119
+ enabled?: boolean;
120
+ authMethods?: AuthMethods;
121
+ }): Promise<User>;
122
+ /** Deletes a user by ID. */
123
+ delete(id: number): Promise<void>;
124
+ }
125
+ export {};
126
+ //# sourceMappingURL=user-resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-resource.d.ts","sourceRoot":"","sources":["../../../src/resources/user-resource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,312 @@
1
+ import { parseElementKey, AUTH_LEVEL_MAP, AUTH_LEVEL_REVERSE, debugWarn } from '../utils.js';
2
+ /** Symbol used to restrict _initCustomFields() access to UserResource.get() in this module */
3
+ const INIT_CUSTOM_FIELDS = Symbol('User.initCustomFields');
4
+ /** Maps auth method IDs to friendly names */
5
+ const AUTH_METHOD_MAP = {
6
+ 1: 'local',
7
+ 2: 'ldap',
8
+ 4: 'saml',
9
+ 5: 'cas',
10
+ 6: 'remoteuser',
11
+ };
12
+ const AUTH_METHOD_REVERSE = {
13
+ 'local': 1,
14
+ 'ldap': 2,
15
+ 'saml': 4,
16
+ 'cas': 5,
17
+ 'remoteuser': 6,
18
+ };
19
+ /** Auth methods that never have an identifier */
20
+ const NO_IDENTIFIER_METHODS = new Set(['local', 'remoteuser']);
21
+ function mapUser(raw) {
22
+ return {
23
+ id: raw.id,
24
+ username: raw.username,
25
+ firstName: raw.firstName,
26
+ lastName: raw.lastName,
27
+ emailAddress: raw.emailAddress,
28
+ userLevel: AUTH_LEVEL_MAP[raw.authLevel] ?? `unknown (${raw.authLevel})`,
29
+ enabled: raw.enabled,
30
+ accountLocked: raw.accountLocked,
31
+ lastLogin: raw.lastLoginDate ? new Date(raw.lastLoginDate) : null,
32
+ };
33
+ }
34
+ /**
35
+ * Converts the raw authenticationMappingList to a friendly AuthMethods object.
36
+ */
37
+ function parseAuthMethods(list) {
38
+ const result = {};
39
+ if (!list)
40
+ return result;
41
+ for (const entry of list) {
42
+ const name = AUTH_METHOD_MAP[entry.id];
43
+ if (!name)
44
+ continue;
45
+ if (NO_IDENTIFIER_METHODS.has(name)) {
46
+ // local and remoteuser: just a boolean
47
+ result[name] = entry.enabled ?? false;
48
+ }
49
+ else {
50
+ // ldap, saml, cas: object with enabled + identifier
51
+ if (entry.enabled || entry.identifier) {
52
+ result[name] = {
53
+ enabled: entry.enabled ?? false,
54
+ identifier: entry.identifier ?? '',
55
+ };
56
+ }
57
+ else {
58
+ result[name] = false;
59
+ }
60
+ }
61
+ }
62
+ return result;
63
+ }
64
+ /**
65
+ * Converts a friendly AuthMethods object back to the API's authenticationMappingList.
66
+ */
67
+ function buildAuthMappingList(authMethods) {
68
+ const result = [];
69
+ for (const [name, value] of Object.entries(authMethods)) {
70
+ const id = AUTH_METHOD_REVERSE[name];
71
+ if (id === undefined)
72
+ continue;
73
+ if (value === false || value === undefined) {
74
+ // Disabled — omit from the list entirely
75
+ continue;
76
+ }
77
+ else if (value === true) {
78
+ // Enabled, no identifier (local/remoteuser)
79
+ result.push({ id: String(id) });
80
+ }
81
+ else if (typeof value === 'object') {
82
+ if (!value.enabled)
83
+ continue; // Disabled — omit
84
+ // Enabled with identifier (ldap/saml/cas)
85
+ const entry = { id: String(id) };
86
+ if (value.identifier)
87
+ entry.identifier = value.identifier;
88
+ result.push(entry);
89
+ }
90
+ }
91
+ return result;
92
+ }
93
+ /** A mutable user object. Modify properties and call save() to persist. */
94
+ export class User {
95
+ constructor(raw, httpClient) {
96
+ this.id = raw.id;
97
+ this.username = raw.username;
98
+ this.firstName = raw.firstName;
99
+ this.lastName = raw.lastName;
100
+ this.emailAddress = raw.emailAddress;
101
+ this.userLevel = AUTH_LEVEL_MAP[raw.userLevel] ?? `unknown (${raw.userLevel})`;
102
+ this.defaultLanguage = raw.defaultLanguage ?? 'en';
103
+ this.enabled = raw.enabled;
104
+ this.groups = (raw.groupUser ?? []).map((g) => ({ id: g.id, name: g.name }));
105
+ this.authMethods = parseAuthMethods(raw.authenticationMappingList);
106
+ this.lastLogin = raw.lastLoginDate ? new Date(raw.lastLoginDate) : null;
107
+ // customFields starts as null and non-enumerable; _initCustomFields makes it enumerable if configured
108
+ Object.defineProperty(this, 'customFields', { value: null, enumerable: false, writable: true, configurable: true });
109
+ Object.defineProperty(this, '_httpClient', { value: httpClient, enumerable: false });
110
+ Object.defineProperty(this, '_rawData', { value: raw, enumerable: false, writable: true });
111
+ Object.defineProperty(this, '_customFieldKeyMap', { value: null, enumerable: false, writable: true });
112
+ }
113
+ /** @internal Async initialization for custom fields. Only callable via UserResource.get(). */
114
+ async [INIT_CUSTOM_FIELDS]() {
115
+ const dto = this._rawData.userExtensibleObjectDto;
116
+ if (!dto?.elements)
117
+ return;
118
+ // Fetch the content type template to get aliases
119
+ let templateElements = [];
120
+ try {
121
+ const ct = await this._httpClient.request({
122
+ method: 'GET',
123
+ path: `/contenttype/${dto.contentTypeID}`,
124
+ });
125
+ templateElements = ct.contentTypeElements ?? [];
126
+ }
127
+ catch (error) {
128
+ debugWarn(`Failed to fetch user custom fields template (contentTypeID: ${dto.contentTypeID})`, error);
129
+ }
130
+ this.customFields = {};
131
+ this._customFieldKeyMap = new Map();
132
+ for (const [rawKey, value] of Object.entries(dto.elements)) {
133
+ const parsed = parseElementKey(rawKey);
134
+ if (!parsed)
135
+ continue;
136
+ if (parsed.name.toLowerCase() === 'name')
137
+ continue;
138
+ const templateEl = templateElements.find((el) => el.name === parsed.name);
139
+ const friendlyName = templateEl?.alias || parsed.name;
140
+ this.customFields[friendlyName] = value;
141
+ this._customFieldKeyMap.set(friendlyName.toLowerCase(), rawKey);
142
+ }
143
+ // Make customFields enumerable now that it has values
144
+ Object.defineProperty(this, 'customFields', { value: this.customFields, enumerable: true, writable: true, configurable: true });
145
+ }
146
+ /** Persists current property values to the server via PUT. */
147
+ async save() {
148
+ if (!this.username?.trim())
149
+ throw new Error('Username is required');
150
+ if (!this.firstName?.trim())
151
+ throw new Error('First name is required');
152
+ if (!this.lastName?.trim())
153
+ throw new Error('Last name is required');
154
+ if (!this.emailAddress?.trim())
155
+ throw new Error('Email address is required');
156
+ const authLevel = AUTH_LEVEL_REVERSE[this.userLevel];
157
+ if (authLevel === undefined) {
158
+ const valid = Object.keys(AUTH_LEVEL_REVERSE).join(', ');
159
+ throw new Error(`Unknown user level "${this.userLevel}". Valid options: ${valid}`);
160
+ }
161
+ const updated = {
162
+ ...this._rawData,
163
+ username: this.username,
164
+ firstName: this.firstName,
165
+ lastName: this.lastName,
166
+ emailAddress: this.emailAddress,
167
+ userLevel: String(authLevel),
168
+ defaultLanguage: this.defaultLanguage,
169
+ enabled: this.enabled,
170
+ password: this.password ?? '',
171
+ authenticationMappingList: buildAuthMappingList(this.authMethods),
172
+ };
173
+ // Sync custom fields back to the extensible object DTO
174
+ if (this.customFields && this._customFieldKeyMap) {
175
+ const dto = updated.userExtensibleObjectDto;
176
+ if (dto?.elements) {
177
+ for (const [friendlyName, value] of Object.entries(this.customFields)) {
178
+ const rawKey = this._customFieldKeyMap.get(friendlyName.toLowerCase());
179
+ if (rawKey) {
180
+ dto.elements[rawKey] = value;
181
+ }
182
+ }
183
+ }
184
+ }
185
+ await this._httpClient.request({
186
+ method: 'PUT',
187
+ path: `/user/${this.id}`,
188
+ body: updated,
189
+ });
190
+ this._rawData = updated;
191
+ }
192
+ }
193
+ /**
194
+ * Resource for user operations.
195
+ */
196
+ export class UserResource {
197
+ constructor(httpClient) {
198
+ this.httpClient = httpClient;
199
+ }
200
+ /** Lists users. Optionally filter by user level. */
201
+ async list(options) {
202
+ let authLevel = 100; // all users
203
+ if (options?.userLevel) {
204
+ const level = AUTH_LEVEL_REVERSE[options.userLevel];
205
+ if (level === undefined) {
206
+ const valid = Object.keys(AUTH_LEVEL_REVERSE).join(', ');
207
+ throw new Error(`Unknown user level "${options.userLevel}". Valid options: ${valid}`);
208
+ }
209
+ authLevel = level;
210
+ }
211
+ const raw = await this.httpClient.request({
212
+ method: 'GET',
213
+ path: `/userSearch?authLevel=${authLevel}&allUsers=true`,
214
+ });
215
+ return (raw.userList ?? []).map(mapUser);
216
+ }
217
+ /** Gets a single user by ID. Returns a mutable User object. */
218
+ async get(id) {
219
+ const raw = await this.httpClient.request({
220
+ method: 'GET',
221
+ path: `/user/${id}`,
222
+ });
223
+ const user = new User(raw, this.httpClient);
224
+ await user[INIT_CUSTOM_FIELDS]();
225
+ return user;
226
+ }
227
+ /** Updates a user's properties (immutable pattern). */
228
+ async update(id, data) {
229
+ const user = await this.get(id);
230
+ if (data.username !== undefined)
231
+ user.username = data.username;
232
+ if (data.firstName !== undefined)
233
+ user.firstName = data.firstName;
234
+ if (data.lastName !== undefined)
235
+ user.lastName = data.lastName;
236
+ if (data.emailAddress !== undefined)
237
+ user.emailAddress = data.emailAddress;
238
+ if (data.userLevel !== undefined)
239
+ user.userLevel = data.userLevel;
240
+ if (data.defaultLanguage !== undefined)
241
+ user.defaultLanguage = data.defaultLanguage;
242
+ if (data.enabled !== undefined)
243
+ user.enabled = data.enabled;
244
+ if (data.password !== undefined)
245
+ user.password = data.password;
246
+ if (data.authMethods !== undefined)
247
+ Object.assign(user.authMethods, data.authMethods);
248
+ if (data.customFields !== undefined && user.customFields) {
249
+ Object.assign(user.customFields, data.customFields);
250
+ }
251
+ await user.save();
252
+ return user;
253
+ }
254
+ /** Creates a new user. */
255
+ async create(data) {
256
+ if (!data.username?.trim())
257
+ throw new Error('Username is required');
258
+ if (!data.firstName?.trim())
259
+ throw new Error('First name is required');
260
+ if (!data.lastName?.trim())
261
+ throw new Error('Last name is required');
262
+ if (!data.emailAddress?.trim())
263
+ throw new Error('Email address is required');
264
+ if (!data.password?.trim())
265
+ throw new Error('Password is required');
266
+ const level = AUTH_LEVEL_REVERSE[data.userLevel ?? 'contributor'];
267
+ if (level === undefined) {
268
+ const valid = Object.keys(AUTH_LEVEL_REVERSE).join(', ');
269
+ throw new Error(`Unknown user level "${data.userLevel}". Valid options: ${valid}`);
270
+ }
271
+ // Default to local auth only if no authMethods provided
272
+ const authMethods = data.authMethods ?? { local: true };
273
+ const authMappingList = buildAuthMappingList(authMethods);
274
+ await this.httpClient.request({
275
+ method: 'POST',
276
+ path: '/user',
277
+ body: {
278
+ username: data.username,
279
+ firstName: data.firstName,
280
+ lastName: data.lastName,
281
+ emailAddress: data.emailAddress,
282
+ password: data.password,
283
+ userLevel: String(level),
284
+ defaultLanguage: data.defaultLanguage ?? 'en',
285
+ enabled: data.enabled ?? true,
286
+ defaultPreviewChannel: '0',
287
+ extranetAccess: 'A',
288
+ htmlEditor: '5',
289
+ assignedChannelsList: [],
290
+ authenticationMappingList: authMappingList,
291
+ },
292
+ });
293
+ // API returns id: 0 on create — look up the real user by username
294
+ const allUsers = await this.httpClient.request({
295
+ method: 'GET',
296
+ path: '/userSearch?authLevel=100&allUsers=true',
297
+ });
298
+ const created = (allUsers.userList ?? []).find((u) => u.username === data.username);
299
+ if (!created) {
300
+ throw new Error(`User "${data.username}" was created but could not be found`);
301
+ }
302
+ return this.get(created.id);
303
+ }
304
+ /** Deletes a user by ID. */
305
+ async delete(id) {
306
+ await this.httpClient.request({
307
+ method: 'DELETE',
308
+ path: `/user/${id}`,
309
+ });
310
+ }
311
+ }
312
+ //# sourceMappingURL=user-resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-resource.js","sourceRoot":"","sources":["../../../src/resources/user-resource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,185 @@
1
+ import { HttpClient } from './http-client.js';
2
+ import { LanguageOption, SectionChannel, Owner, AddSectionData } from './types.js';
3
+ import { ContentResource } from './resources/content-resource.js';
4
+ import { SectionItem } from './models/section-item.js';
5
+ import { MediaCreateFn } from './element-resolver.js';
6
+ /** A node in the section hierarchy tree */
7
+ export interface SectionTreeNode {
8
+ id: number;
9
+ name: string;
10
+ status?: string;
11
+ children?: SectionTreeNode[];
12
+ }
13
+ /** Clears the meta tag cache for a specific HttpClient instance */
14
+ export declare function clearMetaTagCache(httpClient: HttpClient): void;
15
+ /**
16
+ * A section reference scoped to a specific section ID.
17
+ * Provides content operations, section metadata, hierarchy navigation,
18
+ * child section creation, and deletion — all from a single entry point.
19
+ */
20
+ export declare class SectionRef {
21
+ readonly content: ContentResource;
22
+ private readonly httpClient;
23
+ private readonly sectionId;
24
+ private readonly defaultLanguage;
25
+ private readonly mediaCreateFn;
26
+ constructor(httpClient: HttpClient, sectionId: number, defaultLanguage: string, mediaCreateFn?: MediaCreateFn | null);
27
+ /** Returns a mutable section object. Modify properties and call save() to persist. */
28
+ get(options?: LanguageOption): Promise<SectionItem>;
29
+ /** Returns the list of channels associated with this section. */
30
+ channels(): Promise<SectionChannel[]>;
31
+ /**
32
+ * Returns the page layouts for this section, one entry per channel.
33
+ *
34
+ * Each entry has two fields:
35
+ * - `pageLayout` — the layout applied to *this* section for the channel.
36
+ * Either directly set (`inherited: false`) or inherited from a parent (`inherited: true`).
37
+ * `null` if no layout is set or inherited.
38
+ * - `childPageLayout` — the layout that descendant sections will inherit
39
+ * when they don't have their own explicit layout. `null` if not set.
40
+ *
41
+ * Data sources in the API response:
42
+ * - `channels[].pageLayout` — directly assigned layout on this section (non-zero = direct)
43
+ * - `inheritedPageLayouts[channelId]` — layout inherited from a parent (used when no direct assignment)
44
+ * - `channels[].inheritedPageLayout` — the "apply to descendants" layout
45
+ */
46
+ pageLayouts(options?: LanguageOption): Promise<Array<{
47
+ channel: {
48
+ id: number;
49
+ name: string;
50
+ };
51
+ pageLayout: {
52
+ id: number;
53
+ name: string;
54
+ inherited: boolean;
55
+ } | null;
56
+ childPageLayout: {
57
+ id: number;
58
+ name: string;
59
+ } | null;
60
+ }>>;
61
+ /**
62
+ * Updates page layout assignments on this section. Additive — only the channels
63
+ * you pass are changed; others keep their existing values.
64
+ *
65
+ * Each entry requires a `channelId` and at least one of:
66
+ * - `pageLayout` — the layout to apply directly to this section for the channel
67
+ * - `childPageLayout` — the layout that descendant sections will inherit
68
+ *
69
+ * Pass `null` for either to clear that assignment (sets to 0).
70
+ */
71
+ setPageLayouts(layouts: Array<{
72
+ channelId: number;
73
+ pageLayout?: number | null;
74
+ childPageLayout?: number | null;
75
+ }>, options?: LanguageOption): Promise<void>;
76
+ /** Returns the owner information for this section, including user details. */
77
+ owner(options?: LanguageOption): Promise<Owner>;
78
+ /**
79
+ * Returns the section's meta data values with friendly tag names.
80
+ * Maps meta tag IDs to their names (e.g. id 19 → "og:title").
81
+ */
82
+ metaDatas(options?: LanguageOption): Promise<Record<string, string>>;
83
+ /** Fetches and caches meta tag definitions from GET /meta */
84
+ private getMetaTagDefinitions;
85
+ /**
86
+ * Updates meta data values on this section.
87
+ * Only updates the tags you pass — existing values are preserved.
88
+ * Uses friendly tag names (e.g. "og:title", "description").
89
+ */
90
+ setMetaDatas(values: Record<string, string>, options?: LanguageOption): Promise<void>;
91
+ /**
92
+ * Returns the section hierarchy tree starting from this section.
93
+ */
94
+ tree(options?: LanguageOption): Promise<SectionTreeNode>;
95
+ /** Recursively maps API tree nodes to clean SectionTreeNode objects */
96
+ private mapTreeNode;
97
+ /** Lists direct child sections (one level below). */
98
+ subsections(options?: LanguageOption): Promise<Array<{
99
+ id: number;
100
+ name: string;
101
+ lastModified: Date | null;
102
+ }>>;
103
+ /** Returns users and groups with edit rights on this section, including inherited rights. */
104
+ editRights(options?: LanguageOption): Promise<{
105
+ users: Array<{
106
+ id: number;
107
+ username: string;
108
+ firstName: string;
109
+ lastName: string;
110
+ emailAddress: string;
111
+ inherited: boolean;
112
+ }>;
113
+ groups: Array<{
114
+ id: number;
115
+ name: string;
116
+ inherited: boolean;
117
+ }>;
118
+ }>;
119
+ /** Sets direct (non-inherited) edit rights on this section. At least one of users or groups is required. */
120
+ setEditRights(data: {
121
+ users?: number[];
122
+ groups?: number[];
123
+ }, options?: LanguageOption): Promise<void>;
124
+ /** Removes users and/or groups from direct edit rights on this section. */
125
+ removeEditRights(data: {
126
+ users?: number[];
127
+ groups?: number[];
128
+ }, options?: LanguageOption): Promise<void>;
129
+ /** Lists content types enabled in this section, with name, description, and scope. */
130
+ contentTypes(options?: LanguageOption): Promise<Array<{
131
+ id: number;
132
+ name: string;
133
+ description: string;
134
+ scope: 'branch' | 'section';
135
+ }>>;
136
+ /** Adds or updates content types on this section. Merges with existing content type scopes. */
137
+ setContentTypes(types: Array<{
138
+ id: number;
139
+ scope: 'branch' | 'section';
140
+ }>, options?: LanguageOption): Promise<void>;
141
+ /** Removes content types from this section by ID. */
142
+ removeContentTypes(ids: number[], options?: LanguageOption): Promise<void>;
143
+ /**
144
+ * Creates a child section under this section.
145
+ * Automatically inherits channels, page layouts, and type IDs from this section.
146
+ * If `data.customFields` is provided, creates and saves section metadata content.
147
+ */
148
+ addSection(data: Omit<AddSectionData, 'parentId'>, options?: LanguageOption): Promise<SectionItem>;
149
+ /** Deletes (deactivates) this section by setting its status to inactive. */
150
+ delete(options?: LanguageOption): Promise<void>;
151
+ /**
152
+ * Permanently removes this section. The section must be inactive first.
153
+ * Call delete() before purge() if the section is still active.
154
+ */
155
+ purge(options?: LanguageOption): Promise<void>;
156
+ /**
157
+ * Moves this section under a new parent section.
158
+ */
159
+ move(newParentId: number): Promise<void>;
160
+ /**
161
+ * Updates section properties. Fetches the current section, merges your
162
+ * changes, and PUTs the full body back. Only pass the fields you want to change.
163
+ * Returns the updated SectionItem.
164
+ */
165
+ update(data: {
166
+ name?: string;
167
+ show?: boolean;
168
+ status?: 'approved' | 'pending' | 'inactive';
169
+ customFields?: Record<string, unknown>;
170
+ }, options?: LanguageOption): Promise<SectionItem>;
171
+ /**
172
+ * Publishes this section (or its entire branch) to a channel.
173
+ *
174
+ * If the section belongs to a single channel, `channelId` is optional — the SDK
175
+ * auto-selects it. If the section belongs to multiple channels, `channelId` is
176
+ * required and the error message lists the valid options.
177
+ *
178
+ * Pass `{ branch: true }` to publish the entire branch below this section.
179
+ */
180
+ publish(options?: {
181
+ channelId?: number;
182
+ branch?: boolean;
183
+ } & LanguageOption): Promise<void>;
184
+ }
185
+ //# sourceMappingURL=section-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section-ref.d.ts","sourceRoot":"","sources":["../../src/section-ref.ts"],"names":[],"mappings":"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"}