digital-tools 2.1.1 → 2.3.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 (293) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +2 -0
  3. package/dist/client.d.ts +109 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +69 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/define.d.ts +2 -2
  8. package/dist/define.d.ts.map +1 -1
  9. package/dist/define.js +22 -20
  10. package/dist/define.js.map +1 -1
  11. package/dist/function-ref.d.ts +229 -0
  12. package/dist/function-ref.d.ts.map +1 -0
  13. package/dist/function-ref.js +28 -0
  14. package/dist/function-ref.js.map +1 -0
  15. package/dist/function-sugar.d.ts +57 -0
  16. package/dist/function-sugar.d.ts.map +1 -0
  17. package/dist/function-sugar.js +79 -0
  18. package/dist/function-sugar.js.map +1 -0
  19. package/dist/index.d.ts +10 -3
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +24 -4
  22. package/dist/index.js.map +1 -1
  23. package/dist/providers/analytics/mixpanel.d.ts.map +1 -1
  24. package/dist/providers/analytics/mixpanel.js +21 -18
  25. package/dist/providers/analytics/mixpanel.js.map +1 -1
  26. package/dist/providers/calendar/cal-com.d.ts.map +1 -1
  27. package/dist/providers/calendar/cal-com.js +10 -10
  28. package/dist/providers/calendar/cal-com.js.map +1 -1
  29. package/dist/providers/calendar/google-calendar.d.ts.map +1 -1
  30. package/dist/providers/calendar/google-calendar.js +4 -4
  31. package/dist/providers/calendar/google-calendar.js.map +1 -1
  32. package/dist/providers/crm/hubspot.d.ts.map +1 -1
  33. package/dist/providers/crm/hubspot.js +107 -85
  34. package/dist/providers/crm/hubspot.js.map +1 -1
  35. package/dist/providers/development/github.d.ts.map +1 -1
  36. package/dist/providers/development/github.js +40 -43
  37. package/dist/providers/development/github.js.map +1 -1
  38. package/dist/providers/ecommerce/shopify.d.ts.map +1 -1
  39. package/dist/providers/ecommerce/shopify.js +79 -62
  40. package/dist/providers/ecommerce/shopify.js.map +1 -1
  41. package/dist/providers/email/resend.d.ts.map +1 -1
  42. package/dist/providers/email/resend.js +20 -16
  43. package/dist/providers/email/resend.js.map +1 -1
  44. package/dist/providers/email/sendgrid.d.ts.map +1 -1
  45. package/dist/providers/email/sendgrid.js +12 -9
  46. package/dist/providers/email/sendgrid.js.map +1 -1
  47. package/dist/providers/finance/stripe.d.ts.map +1 -1
  48. package/dist/providers/finance/stripe.js +44 -42
  49. package/dist/providers/finance/stripe.js.map +1 -1
  50. package/dist/providers/forms/typeform.d.ts.map +1 -1
  51. package/dist/providers/forms/typeform.js +68 -58
  52. package/dist/providers/forms/typeform.js.map +1 -1
  53. package/dist/providers/knowledge/notion.d.ts.map +1 -1
  54. package/dist/providers/knowledge/notion.js +75 -41
  55. package/dist/providers/knowledge/notion.js.map +1 -1
  56. package/dist/providers/marketing/mailchimp.d.ts.map +1 -1
  57. package/dist/providers/marketing/mailchimp.js +74 -61
  58. package/dist/providers/marketing/mailchimp.js.map +1 -1
  59. package/dist/providers/media/cloudinary.d.ts.map +1 -1
  60. package/dist/providers/media/cloudinary.js +30 -28
  61. package/dist/providers/media/cloudinary.js.map +1 -1
  62. package/dist/providers/messaging/slack.d.ts.map +1 -1
  63. package/dist/providers/messaging/slack.js +75 -58
  64. package/dist/providers/messaging/slack.js.map +1 -1
  65. package/dist/providers/messaging/twilio-sms.d.ts.map +1 -1
  66. package/dist/providers/messaging/twilio-sms.js +33 -15
  67. package/dist/providers/messaging/twilio-sms.js.map +1 -1
  68. package/dist/providers/project-management/linear.d.ts.map +1 -1
  69. package/dist/providers/project-management/linear.js +31 -27
  70. package/dist/providers/project-management/linear.js.map +1 -1
  71. package/dist/providers/spreadsheet/google-sheets.d.ts.map +1 -1
  72. package/dist/providers/spreadsheet/google-sheets.js +21 -18
  73. package/dist/providers/spreadsheet/google-sheets.js.map +1 -1
  74. package/dist/providers/spreadsheet/xlsx.d.ts.map +1 -1
  75. package/dist/providers/spreadsheet/xlsx.js +4 -4
  76. package/dist/providers/spreadsheet/xlsx.js.map +1 -1
  77. package/dist/providers/storage/index.js +1 -0
  78. package/dist/providers/storage/index.js.map +1 -1
  79. package/dist/providers/storage/s3.d.ts.map +1 -1
  80. package/dist/providers/storage/s3.js +36 -27
  81. package/dist/providers/storage/s3.js.map +1 -1
  82. package/dist/providers/support/zendesk.d.ts.map +1 -1
  83. package/dist/providers/support/zendesk.js +24 -25
  84. package/dist/providers/support/zendesk.js.map +1 -1
  85. package/dist/providers/tasks/todoist.d.ts.map +1 -1
  86. package/dist/providers/tasks/todoist.js +18 -18
  87. package/dist/providers/tasks/todoist.js.map +1 -1
  88. package/dist/providers/video-conferencing/google-meet.d.ts.map +1 -1
  89. package/dist/providers/video-conferencing/google-meet.js +11 -11
  90. package/dist/providers/video-conferencing/google-meet.js.map +1 -1
  91. package/dist/providers/video-conferencing/jitsi.js +14 -14
  92. package/dist/providers/video-conferencing/jitsi.js.map +1 -1
  93. package/dist/providers/video-conferencing/teams.d.ts.map +1 -1
  94. package/dist/providers/video-conferencing/teams.js +9 -7
  95. package/dist/providers/video-conferencing/teams.js.map +1 -1
  96. package/dist/providers/video-conferencing/zoom.d.ts.map +1 -1
  97. package/dist/providers/video-conferencing/zoom.js +26 -24
  98. package/dist/providers/video-conferencing/zoom.js.map +1 -1
  99. package/dist/tools/data.d.ts.map +1 -1
  100. package/dist/tools/data.js +5 -12
  101. package/dist/tools/data.js.map +1 -1
  102. package/dist/tools/index.d.ts +1 -0
  103. package/dist/tools/index.d.ts.map +1 -1
  104. package/dist/tools/index.js +1 -0
  105. package/dist/tools/index.js.map +1 -1
  106. package/dist/tools/system.d.ts +289 -0
  107. package/dist/tools/system.d.ts.map +1 -0
  108. package/dist/tools/system.js +752 -0
  109. package/dist/tools/system.js.map +1 -0
  110. package/dist/tools/web.d.ts.map +1 -1
  111. package/dist/tools/web.js +22 -10
  112. package/dist/tools/web.js.map +1 -1
  113. package/dist/track-record.d.ts +101 -0
  114. package/dist/track-record.d.ts.map +1 -0
  115. package/dist/track-record.js +17 -0
  116. package/dist/track-record.js.map +1 -0
  117. package/dist/types.d.ts +210 -9
  118. package/dist/types.d.ts.map +1 -1
  119. package/dist/verb-registration.d.ts +122 -0
  120. package/dist/verb-registration.d.ts.map +1 -0
  121. package/dist/verb-registration.js +176 -0
  122. package/dist/verb-registration.js.map +1 -0
  123. package/dist/worker.d.ts +93 -0
  124. package/dist/worker.d.ts.map +1 -0
  125. package/dist/worker.js +315 -0
  126. package/dist/worker.js.map +1 -0
  127. package/dist/wrap.d.ts +89 -0
  128. package/dist/wrap.d.ts.map +1 -0
  129. package/dist/wrap.js +225 -0
  130. package/dist/wrap.js.map +1 -0
  131. package/package.json +21 -4
  132. package/src/client.ts +136 -0
  133. package/src/define.ts +31 -37
  134. package/src/function-ref.ts +264 -0
  135. package/src/function-sugar.ts +134 -0
  136. package/src/index.ts +132 -10
  137. package/src/providers/analytics/mixpanel.ts +19 -18
  138. package/src/providers/calendar/cal-com.ts +29 -18
  139. package/src/providers/calendar/google-calendar.ts +20 -14
  140. package/src/providers/crm/hubspot.ts +225 -99
  141. package/src/providers/development/github.ts +206 -135
  142. package/src/providers/ecommerce/shopify.ts +250 -89
  143. package/src/providers/email/resend.ts +101 -28
  144. package/src/providers/email/sendgrid.ts +12 -9
  145. package/src/providers/finance/stripe.ts +128 -49
  146. package/src/providers/forms/typeform.ts +74 -58
  147. package/src/providers/knowledge/notion.ts +340 -88
  148. package/src/providers/marketing/mailchimp.ts +86 -70
  149. package/src/providers/media/cloudinary.ts +99 -41
  150. package/src/providers/messaging/slack.ts +283 -85
  151. package/src/providers/messaging/twilio-sms.ts +35 -15
  152. package/src/providers/project-management/linear.ts +143 -55
  153. package/src/providers/spreadsheet/google-sheets.ts +222 -56
  154. package/src/providers/spreadsheet/xlsx.ts +47 -16
  155. package/src/providers/storage/s3.ts +119 -47
  156. package/src/providers/support/zendesk.ts +196 -46
  157. package/src/providers/tasks/todoist.ts +20 -26
  158. package/src/providers/video-conferencing/google-meet.ts +17 -20
  159. package/src/providers/video-conferencing/jitsi.ts +14 -14
  160. package/src/providers/video-conferencing/teams.ts +14 -13
  161. package/src/providers/video-conferencing/zoom.ts +54 -49
  162. package/src/tools/data.ts +6 -16
  163. package/src/tools/index.ts +1 -0
  164. package/src/tools/system.ts +887 -0
  165. package/src/tools/web.ts +22 -10
  166. package/src/track-record.ts +106 -0
  167. package/src/types.ts +241 -13
  168. package/src/verb-registration.ts +197 -0
  169. package/src/worker.ts +370 -0
  170. package/src/wrap.ts +260 -0
  171. package/test/client.test.ts +146 -0
  172. package/test/communication-tools-extended.test.ts +734 -0
  173. package/test/data-tools-extended.test.ts +743 -0
  174. package/test/define-extended.test.ts +819 -0
  175. package/test/define.test.ts +150 -41
  176. package/test/entities.test.ts +623 -0
  177. package/test/extended-entities.test.ts +1228 -0
  178. package/test/provider-implementations.test.ts +725 -0
  179. package/test/provider-registry-extended.test.ts +583 -0
  180. package/test/providers/google-sheets.test.ts +851 -0
  181. package/test/providers/helpers.ts +554 -0
  182. package/test/providers/hubspot.test.ts +576 -0
  183. package/test/providers/slack.test.ts +932 -0
  184. package/test/providers/stripe.test.ts +701 -0
  185. package/test/providers.test.ts +578 -0
  186. package/test/system-tools-extended.test.ts +632 -0
  187. package/test/system.test.ts +673 -0
  188. package/test/tools.test.ts +15 -11
  189. package/test/types.test.ts +402 -0
  190. package/test/verb-registration.test.ts +395 -0
  191. package/test/web-tools.test.ts +553 -0
  192. package/test/worker-extended.test.ts +699 -0
  193. package/test/worker.test.ts +576 -0
  194. package/test/wrap.test.ts +366 -0
  195. package/tsconfig.json +3 -13
  196. package/vitest.config.ts +37 -0
  197. package/wrangler.jsonc +9 -0
  198. package/.turbo/turbo-build.log +0 -5
  199. package/dist/providers/voice/vapi.d.ts +0 -27
  200. package/dist/providers/voice/vapi.d.ts.map +0 -1
  201. package/dist/providers/voice/vapi.js +0 -440
  202. package/dist/providers/voice/vapi.js.map +0 -1
  203. package/src/define.js +0 -267
  204. package/src/entities/advertising.js +0 -999
  205. package/src/entities/ai.js +0 -756
  206. package/src/entities/analytics.js +0 -1588
  207. package/src/entities/automation.js +0 -601
  208. package/src/entities/communication.js +0 -1150
  209. package/src/entities/crm.js +0 -1386
  210. package/src/entities/design.js +0 -546
  211. package/src/entities/development.js +0 -2212
  212. package/src/entities/document.js +0 -874
  213. package/src/entities/ecommerce.js +0 -1429
  214. package/src/entities/experiment.js +0 -1039
  215. package/src/entities/finance.js +0 -3478
  216. package/src/entities/forms.js +0 -1892
  217. package/src/entities/hr.js +0 -661
  218. package/src/entities/identity.js +0 -997
  219. package/src/entities/index.js +0 -282
  220. package/src/entities/infrastructure.js +0 -1153
  221. package/src/entities/knowledge.js +0 -1438
  222. package/src/entities/marketing.js +0 -1610
  223. package/src/entities/media.js +0 -1634
  224. package/src/entities/notification.js +0 -1199
  225. package/src/entities/presentation.js +0 -1274
  226. package/src/entities/productivity.js +0 -1317
  227. package/src/entities/project-management.js +0 -1136
  228. package/src/entities/recruiting.js +0 -736
  229. package/src/entities/shipping.js +0 -509
  230. package/src/entities/signature.js +0 -1102
  231. package/src/entities/site.js +0 -222
  232. package/src/entities/spreadsheet.js +0 -1341
  233. package/src/entities/storage.js +0 -1198
  234. package/src/entities/support.js +0 -1166
  235. package/src/entities/video-conferencing.js +0 -1750
  236. package/src/entities/video.js +0 -950
  237. package/src/entities.js +0 -1663
  238. package/src/index.js +0 -74
  239. package/src/providers/analytics/index.js +0 -17
  240. package/src/providers/analytics/mixpanel.js +0 -255
  241. package/src/providers/calendar/cal-com.js +0 -303
  242. package/src/providers/calendar/google-calendar.js +0 -335
  243. package/src/providers/calendar/index.js +0 -20
  244. package/src/providers/crm/hubspot.js +0 -566
  245. package/src/providers/crm/index.js +0 -17
  246. package/src/providers/development/github.js +0 -472
  247. package/src/providers/development/index.js +0 -17
  248. package/src/providers/ecommerce/index.js +0 -17
  249. package/src/providers/ecommerce/shopify.js +0 -378
  250. package/src/providers/email/index.js +0 -20
  251. package/src/providers/email/resend.js +0 -258
  252. package/src/providers/email/sendgrid.js +0 -161
  253. package/src/providers/finance/index.js +0 -17
  254. package/src/providers/finance/stripe.js +0 -549
  255. package/src/providers/forms/index.js +0 -17
  256. package/src/providers/forms/typeform.js +0 -500
  257. package/src/providers/index.js +0 -123
  258. package/src/providers/knowledge/index.js +0 -17
  259. package/src/providers/knowledge/notion.js +0 -389
  260. package/src/providers/marketing/index.js +0 -17
  261. package/src/providers/marketing/mailchimp.js +0 -443
  262. package/src/providers/media/cloudinary.js +0 -318
  263. package/src/providers/media/index.js +0 -17
  264. package/src/providers/messaging/index.js +0 -20
  265. package/src/providers/messaging/slack.js +0 -393
  266. package/src/providers/messaging/twilio-sms.js +0 -249
  267. package/src/providers/project-management/index.js +0 -17
  268. package/src/providers/project-management/linear.js +0 -575
  269. package/src/providers/registry.js +0 -86
  270. package/src/providers/spreadsheet/google-sheets.js +0 -375
  271. package/src/providers/spreadsheet/index.js +0 -20
  272. package/src/providers/spreadsheet/xlsx.js +0 -423
  273. package/src/providers/storage/index.js +0 -24
  274. package/src/providers/storage/s3.js +0 -419
  275. package/src/providers/support/index.js +0 -17
  276. package/src/providers/support/zendesk.js +0 -373
  277. package/src/providers/tasks/index.js +0 -17
  278. package/src/providers/tasks/todoist.js +0 -286
  279. package/src/providers/types.js +0 -9
  280. package/src/providers/video-conferencing/google-meet.js +0 -286
  281. package/src/providers/video-conferencing/index.js +0 -31
  282. package/src/providers/video-conferencing/jitsi.js +0 -254
  283. package/src/providers/video-conferencing/teams.js +0 -270
  284. package/src/providers/video-conferencing/zoom.js +0 -332
  285. package/src/registry.js +0 -128
  286. package/src/tools/communication.js +0 -184
  287. package/src/tools/data.js +0 -205
  288. package/src/tools/index.js +0 -11
  289. package/src/tools/web.js +0 -137
  290. package/src/types.js +0 -10
  291. package/test/define.test.js +0 -306
  292. package/test/registry.test.js +0 -357
  293. package/test/tools.test.js +0 -363
@@ -1,1341 +0,0 @@
1
- /**
2
- * Spreadsheet Entity Types (Nouns)
3
- *
4
- * Semantic type definitions for spreadsheets that support
5
- * Google Sheets, Microsoft Excel/XLSX, and CSV formats.
6
- * Each entity defines:
7
- * - Properties: The data fields
8
- * - Actions: Operations that can be performed (Verbs)
9
- * - Events: State changes that occur
10
- *
11
- * @packageDocumentation
12
- */
13
- // =============================================================================
14
- // Spreadsheet
15
- // =============================================================================
16
- /**
17
- * Spreadsheet entity
18
- *
19
- * Represents a spreadsheet workbook containing one or more sheets.
20
- * Supports Google Sheets, Microsoft Excel/XLSX, and CSV formats.
21
- */
22
- export const Spreadsheet = {
23
- singular: 'spreadsheet',
24
- plural: 'spreadsheets',
25
- description: 'A spreadsheet workbook for organizing and analyzing data',
26
- properties: {
27
- // Identity
28
- title: {
29
- type: 'string',
30
- description: 'Spreadsheet title',
31
- },
32
- slug: {
33
- type: 'string',
34
- optional: true,
35
- description: 'URL-friendly identifier',
36
- },
37
- description: {
38
- type: 'string',
39
- optional: true,
40
- description: 'Spreadsheet description',
41
- },
42
- // Format
43
- format: {
44
- type: 'string',
45
- description: 'Spreadsheet format: xlsx, gsheet, csv, tsv, ods',
46
- examples: ['xlsx', 'gsheet', 'csv', 'tsv', 'ods'],
47
- },
48
- fileSize: {
49
- type: 'number',
50
- optional: true,
51
- description: 'File size in bytes',
52
- },
53
- // Status
54
- status: {
55
- type: 'string',
56
- description: 'Spreadsheet status: draft, active, archived',
57
- examples: ['draft', 'active', 'archived'],
58
- },
59
- visibility: {
60
- type: 'string',
61
- description: 'Visibility: private, internal, public',
62
- examples: ['private', 'internal', 'public'],
63
- },
64
- // Structure
65
- sheetCount: {
66
- type: 'number',
67
- optional: true,
68
- description: 'Number of sheets in the workbook',
69
- },
70
- totalRows: {
71
- type: 'number',
72
- optional: true,
73
- description: 'Total rows across all sheets',
74
- },
75
- totalColumns: {
76
- type: 'number',
77
- optional: true,
78
- description: 'Total columns across all sheets',
79
- },
80
- totalCells: {
81
- type: 'number',
82
- optional: true,
83
- description: 'Total cells across all sheets',
84
- },
85
- // Settings
86
- locale: {
87
- type: 'string',
88
- optional: true,
89
- description: 'Locale for number and date formatting',
90
- },
91
- timezone: {
92
- type: 'string',
93
- optional: true,
94
- description: 'Timezone for date/time values',
95
- },
96
- defaultDateFormat: {
97
- type: 'string',
98
- optional: true,
99
- description: 'Default date format string',
100
- },
101
- defaultNumberFormat: {
102
- type: 'string',
103
- optional: true,
104
- description: 'Default number format string',
105
- },
106
- currency: {
107
- type: 'string',
108
- optional: true,
109
- description: 'Default currency code',
110
- },
111
- // Recalculation
112
- autoRecalculate: {
113
- type: 'boolean',
114
- optional: true,
115
- description: 'Whether formulas auto-recalculate',
116
- },
117
- iterativeCalculation: {
118
- type: 'boolean',
119
- optional: true,
120
- description: 'Whether iterative calculation is enabled',
121
- },
122
- maxIterations: {
123
- type: 'number',
124
- optional: true,
125
- description: 'Maximum calculation iterations',
126
- },
127
- // Collaboration
128
- allowComments: {
129
- type: 'boolean',
130
- optional: true,
131
- description: 'Whether comments are enabled',
132
- },
133
- shareMode: {
134
- type: 'string',
135
- optional: true,
136
- description: 'Sharing mode: view, comment, edit',
137
- examples: ['view', 'comment', 'edit'],
138
- },
139
- allowDownload: {
140
- type: 'boolean',
141
- optional: true,
142
- description: 'Whether download is allowed',
143
- },
144
- allowCopy: {
145
- type: 'boolean',
146
- optional: true,
147
- description: 'Whether copying is allowed',
148
- },
149
- allowPrint: {
150
- type: 'boolean',
151
- optional: true,
152
- description: 'Whether printing is allowed',
153
- },
154
- // Protection
155
- protected: {
156
- type: 'boolean',
157
- optional: true,
158
- description: 'Whether spreadsheet is protected',
159
- },
160
- password: {
161
- type: 'string',
162
- optional: true,
163
- description: 'Protection password',
164
- },
165
- // Templates
166
- isTemplate: {
167
- type: 'boolean',
168
- optional: true,
169
- description: 'Whether this is a template',
170
- },
171
- templateId: {
172
- type: 'string',
173
- optional: true,
174
- description: 'ID of template this was created from',
175
- },
176
- templateCategory: {
177
- type: 'string',
178
- optional: true,
179
- description: 'Template category',
180
- examples: ['budget', 'schedule', 'tracker', 'analysis', 'report'],
181
- },
182
- // Integration
183
- externalId: {
184
- type: 'string',
185
- optional: true,
186
- description: 'External system ID (Google Sheets ID, OneDrive ID, etc.)',
187
- },
188
- externalUrl: {
189
- type: 'url',
190
- optional: true,
191
- description: 'URL in external system',
192
- },
193
- syncEnabled: {
194
- type: 'boolean',
195
- optional: true,
196
- description: 'Whether sync is enabled',
197
- },
198
- lastSyncedAt: {
199
- type: 'datetime',
200
- optional: true,
201
- description: 'Last sync timestamp',
202
- },
203
- dataSource: {
204
- type: 'json',
205
- optional: true,
206
- description: 'External data source configuration',
207
- },
208
- // Metadata
209
- tags: {
210
- type: 'string',
211
- array: true,
212
- optional: true,
213
- description: 'Tags for categorization',
214
- },
215
- category: {
216
- type: 'string',
217
- optional: true,
218
- description: 'Spreadsheet category',
219
- },
220
- folder: {
221
- type: 'string',
222
- optional: true,
223
- description: 'Folder or workspace path',
224
- },
225
- customMetadata: {
226
- type: 'json',
227
- optional: true,
228
- description: 'Custom metadata fields',
229
- },
230
- // Analytics
231
- viewCount: {
232
- type: 'number',
233
- optional: true,
234
- description: 'Number of views',
235
- },
236
- editCount: {
237
- type: 'number',
238
- optional: true,
239
- description: 'Number of edits',
240
- },
241
- downloadCount: {
242
- type: 'number',
243
- optional: true,
244
- description: 'Number of downloads',
245
- },
246
- lastViewedAt: {
247
- type: 'datetime',
248
- optional: true,
249
- description: 'Last view timestamp',
250
- },
251
- lastEditedAt: {
252
- type: 'datetime',
253
- optional: true,
254
- description: 'Last edit timestamp',
255
- },
256
- },
257
- relationships: {
258
- owner: {
259
- type: 'Contact',
260
- description: 'Spreadsheet owner',
261
- },
262
- creator: {
263
- type: 'Contact',
264
- description: 'User who created the spreadsheet',
265
- },
266
- lastEditor: {
267
- type: 'Contact',
268
- required: false,
269
- description: 'User who last edited',
270
- },
271
- sheets: {
272
- type: 'Sheet[]',
273
- backref: 'spreadsheet',
274
- description: 'Sheets in this workbook',
275
- },
276
- charts: {
277
- type: 'Chart[]',
278
- backref: 'spreadsheet',
279
- description: 'Charts in the spreadsheet',
280
- },
281
- pivotTables: {
282
- type: 'PivotTable[]',
283
- backref: 'spreadsheet',
284
- description: 'Pivot tables in the spreadsheet',
285
- },
286
- collaborators: {
287
- type: 'Contact[]',
288
- description: 'Users with access',
289
- },
290
- },
291
- actions: [
292
- 'create',
293
- 'open',
294
- 'edit',
295
- 'save',
296
- 'saveAs',
297
- 'duplicate',
298
- 'rename',
299
- 'delete',
300
- 'restore',
301
- 'export',
302
- 'download',
303
- 'print',
304
- 'share',
305
- 'unshare',
306
- 'archive',
307
- 'unarchive',
308
- 'move',
309
- 'copy',
310
- 'protect',
311
- 'unprotect',
312
- 'addSheet',
313
- 'removeSheet',
314
- 'reorderSheets',
315
- 'makeTemplate',
316
- 'createFromTemplate',
317
- 'importData',
318
- 'exportData',
319
- 'refreshData',
320
- 'calculate',
321
- 'sort',
322
- 'filter',
323
- 'search',
324
- 'findAndReplace',
325
- 'insertChart',
326
- 'insertPivotTable',
327
- 'merge',
328
- 'split',
329
- 'freeze',
330
- 'unfreeze',
331
- 'hideSheet',
332
- 'unhideSheet',
333
- ],
334
- events: [
335
- 'created',
336
- 'opened',
337
- 'edited',
338
- 'saved',
339
- 'renamed',
340
- 'deleted',
341
- 'restored',
342
- 'exported',
343
- 'downloaded',
344
- 'printed',
345
- 'shared',
346
- 'unshared',
347
- 'archived',
348
- 'unarchived',
349
- 'moved',
350
- 'copied',
351
- 'protected',
352
- 'unprotected',
353
- 'sheetAdded',
354
- 'sheetRemoved',
355
- 'sheetReordered',
356
- 'dataImported',
357
- 'dataExported',
358
- 'dataRefreshed',
359
- 'calculated',
360
- 'chartInserted',
361
- 'pivotTableInserted',
362
- 'collaboratorAdded',
363
- 'collaboratorRemoved',
364
- 'permissionChanged',
365
- 'synced',
366
- 'viewed',
367
- ],
368
- };
369
- // =============================================================================
370
- // Sheet
371
- // =============================================================================
372
- /**
373
- * Sheet entity
374
- *
375
- * Represents a single worksheet within a spreadsheet workbook.
376
- */
377
- export const Sheet = {
378
- singular: 'sheet',
379
- plural: 'sheets',
380
- description: 'A worksheet within a spreadsheet workbook',
381
- properties: {
382
- // Identity
383
- name: {
384
- type: 'string',
385
- description: 'Sheet name',
386
- },
387
- index: {
388
- type: 'number',
389
- description: 'Sheet position in workbook (0-based)',
390
- },
391
- sheetId: {
392
- type: 'string',
393
- optional: true,
394
- description: 'Internal sheet identifier',
395
- },
396
- // Dimensions
397
- rowCount: {
398
- type: 'number',
399
- description: 'Number of rows',
400
- },
401
- columnCount: {
402
- type: 'number',
403
- description: 'Number of columns',
404
- },
405
- frozenRows: {
406
- type: 'number',
407
- optional: true,
408
- description: 'Number of frozen rows',
409
- },
410
- frozenColumns: {
411
- type: 'number',
412
- optional: true,
413
- description: 'Number of frozen columns',
414
- },
415
- // Visibility
416
- hidden: {
417
- type: 'boolean',
418
- optional: true,
419
- description: 'Whether sheet is hidden',
420
- },
421
- veryHidden: {
422
- type: 'boolean',
423
- optional: true,
424
- description: 'Whether sheet is very hidden (Excel)',
425
- },
426
- // Color and styling
427
- tabColor: {
428
- type: 'string',
429
- optional: true,
430
- description: 'Sheet tab color (hex)',
431
- },
432
- gridLinesVisible: {
433
- type: 'boolean',
434
- optional: true,
435
- description: 'Whether grid lines are visible',
436
- },
437
- gridLinesColor: {
438
- type: 'string',
439
- optional: true,
440
- description: 'Grid line color',
441
- },
442
- // Protection
443
- protected: {
444
- type: 'boolean',
445
- optional: true,
446
- description: 'Whether sheet is protected',
447
- },
448
- protectedRanges: {
449
- type: 'json',
450
- optional: true,
451
- description: 'Protected cell ranges',
452
- },
453
- // Data
454
- data: {
455
- type: 'json',
456
- optional: true,
457
- description: 'Sheet data as 2D array or object',
458
- },
459
- hasHeaders: {
460
- type: 'boolean',
461
- optional: true,
462
- description: 'Whether first row contains headers',
463
- },
464
- dataRange: {
465
- type: 'string',
466
- optional: true,
467
- description: 'Range containing data (e.g., A1:Z100)',
468
- },
469
- // Filters and sorts
470
- hasFilters: {
471
- type: 'boolean',
472
- optional: true,
473
- description: 'Whether filters are applied',
474
- },
475
- filterRange: {
476
- type: 'string',
477
- optional: true,
478
- description: 'Range with filters applied',
479
- },
480
- sortSpecs: {
481
- type: 'json',
482
- optional: true,
483
- description: 'Active sort specifications',
484
- },
485
- // Named ranges
486
- namedRanges: {
487
- type: 'json',
488
- optional: true,
489
- description: 'Named ranges in this sheet',
490
- },
491
- // Conditional formatting
492
- conditionalFormats: {
493
- type: 'json',
494
- optional: true,
495
- description: 'Conditional formatting rules',
496
- },
497
- // Data validation
498
- dataValidations: {
499
- type: 'json',
500
- optional: true,
501
- description: 'Data validation rules by range',
502
- },
503
- // Metadata
504
- notes: {
505
- type: 'string',
506
- optional: true,
507
- description: 'Sheet notes or description',
508
- },
509
- metadata: {
510
- type: 'json',
511
- optional: true,
512
- description: 'Custom metadata',
513
- },
514
- },
515
- relationships: {
516
- spreadsheet: {
517
- type: 'Spreadsheet',
518
- backref: 'sheets',
519
- description: 'Parent spreadsheet',
520
- },
521
- charts: {
522
- type: 'Chart[]',
523
- backref: 'sheet',
524
- description: 'Charts in this sheet',
525
- },
526
- pivotTables: {
527
- type: 'PivotTable[]',
528
- backref: 'sheet',
529
- description: 'Pivot tables in this sheet',
530
- },
531
- },
532
- actions: [
533
- 'create',
534
- 'rename',
535
- 'delete',
536
- 'duplicate',
537
- 'move',
538
- 'hide',
539
- 'unhide',
540
- 'protect',
541
- 'unprotect',
542
- 'clear',
543
- 'clearFormats',
544
- 'clearData',
545
- 'insertRow',
546
- 'insertRows',
547
- 'deleteRow',
548
- 'deleteRows',
549
- 'insertColumn',
550
- 'insertColumns',
551
- 'deleteColumn',
552
- 'deleteColumns',
553
- 'freeze',
554
- 'unfreeze',
555
- 'sort',
556
- 'filter',
557
- 'clearFilter',
558
- 'autoResize',
559
- 'setTabColor',
560
- 'addChart',
561
- 'addPivotTable',
562
- 'addConditionalFormat',
563
- 'addDataValidation',
564
- 'addNamedRange',
565
- 'merge',
566
- 'unmerge',
567
- 'format',
568
- 'copyFormat',
569
- 'pasteFormat',
570
- ],
571
- events: [
572
- 'created',
573
- 'renamed',
574
- 'deleted',
575
- 'duplicated',
576
- 'moved',
577
- 'hidden',
578
- 'unhidden',
579
- 'protected',
580
- 'unprotected',
581
- 'cleared',
582
- 'rowInserted',
583
- 'rowDeleted',
584
- 'columnInserted',
585
- 'columnDeleted',
586
- 'frozen',
587
- 'unfrozen',
588
- 'sorted',
589
- 'filtered',
590
- 'filterCleared',
591
- 'chartAdded',
592
- 'pivotTableAdded',
593
- 'conditionalFormatAdded',
594
- 'dataValidationAdded',
595
- 'namedRangeAdded',
596
- 'cellsMerged',
597
- 'cellsUnmerged',
598
- 'formatted',
599
- ],
600
- };
601
- // =============================================================================
602
- // Cell
603
- // =============================================================================
604
- /**
605
- * Cell entity
606
- *
607
- * Represents a single cell in a spreadsheet.
608
- */
609
- export const Cell = {
610
- singular: 'cell',
611
- plural: 'cells',
612
- description: 'A single cell in a spreadsheet',
613
- properties: {
614
- // Location
615
- row: {
616
- type: 'number',
617
- description: 'Row index (0-based)',
618
- },
619
- column: {
620
- type: 'number',
621
- description: 'Column index (0-based)',
622
- },
623
- address: {
624
- type: 'string',
625
- optional: true,
626
- description: 'Cell address (e.g., A1, B2)',
627
- },
628
- // Value
629
- value: {
630
- type: 'string',
631
- optional: true,
632
- description: 'Display value',
633
- },
634
- rawValue: {
635
- type: 'string',
636
- optional: true,
637
- description: 'Raw value before formatting',
638
- },
639
- dataType: {
640
- type: 'string',
641
- optional: true,
642
- description: 'Data type: string, number, boolean, date, formula, error',
643
- examples: ['string', 'number', 'boolean', 'date', 'formula', 'error', 'null'],
644
- },
645
- // Formula
646
- formula: {
647
- type: 'string',
648
- optional: true,
649
- description: 'Cell formula',
650
- },
651
- hasFormula: {
652
- type: 'boolean',
653
- optional: true,
654
- description: 'Whether cell contains a formula',
655
- },
656
- // Formatting
657
- format: {
658
- type: 'json',
659
- optional: true,
660
- description: 'Cell format configuration',
661
- },
662
- numberFormat: {
663
- type: 'string',
664
- optional: true,
665
- description: 'Number format string',
666
- },
667
- fontFamily: {
668
- type: 'string',
669
- optional: true,
670
- description: 'Font family',
671
- },
672
- fontSize: {
673
- type: 'number',
674
- optional: true,
675
- description: 'Font size in points',
676
- },
677
- fontWeight: {
678
- type: 'string',
679
- optional: true,
680
- description: 'Font weight: normal, bold',
681
- examples: ['normal', 'bold'],
682
- },
683
- fontStyle: {
684
- type: 'string',
685
- optional: true,
686
- description: 'Font style: normal, italic',
687
- examples: ['normal', 'italic'],
688
- },
689
- textColor: {
690
- type: 'string',
691
- optional: true,
692
- description: 'Text color (hex)',
693
- },
694
- backgroundColor: {
695
- type: 'string',
696
- optional: true,
697
- description: 'Background color (hex)',
698
- },
699
- horizontalAlignment: {
700
- type: 'string',
701
- optional: true,
702
- description: 'Horizontal alignment: left, center, right',
703
- examples: ['left', 'center', 'right'],
704
- },
705
- verticalAlignment: {
706
- type: 'string',
707
- optional: true,
708
- description: 'Vertical alignment: top, middle, bottom',
709
- examples: ['top', 'middle', 'bottom'],
710
- },
711
- wrapText: {
712
- type: 'boolean',
713
- optional: true,
714
- description: 'Whether text wraps',
715
- },
716
- // Borders
717
- borders: {
718
- type: 'json',
719
- optional: true,
720
- description: 'Border configuration',
721
- },
722
- // Validation
723
- dataValidation: {
724
- type: 'json',
725
- optional: true,
726
- description: 'Data validation rules',
727
- },
728
- isValid: {
729
- type: 'boolean',
730
- optional: true,
731
- description: 'Whether value passes validation',
732
- },
733
- // Merge
734
- isMerged: {
735
- type: 'boolean',
736
- optional: true,
737
- description: 'Whether cell is part of merged range',
738
- },
739
- mergeRange: {
740
- type: 'string',
741
- optional: true,
742
- description: 'Merged cell range',
743
- },
744
- // Notes and comments
745
- note: {
746
- type: 'string',
747
- optional: true,
748
- description: 'Cell note',
749
- },
750
- hasComment: {
751
- type: 'boolean',
752
- optional: true,
753
- description: 'Whether cell has a comment',
754
- },
755
- // Links
756
- hyperlink: {
757
- type: 'url',
758
- optional: true,
759
- description: 'Hyperlink URL',
760
- },
761
- // Protection
762
- locked: {
763
- type: 'boolean',
764
- optional: true,
765
- description: 'Whether cell is locked',
766
- },
767
- },
768
- relationships: {
769
- sheet: {
770
- type: 'Sheet',
771
- description: 'Parent sheet',
772
- },
773
- },
774
- actions: [
775
- 'setValue',
776
- 'setFormula',
777
- 'clear',
778
- 'clearFormat',
779
- 'format',
780
- 'merge',
781
- 'unmerge',
782
- 'lock',
783
- 'unlock',
784
- 'addNote',
785
- 'removeNote',
786
- 'addComment',
787
- 'addHyperlink',
788
- 'removeHyperlink',
789
- 'copy',
790
- 'cut',
791
- 'paste',
792
- 'validate',
793
- ],
794
- events: [
795
- 'valueChanged',
796
- 'formulaSet',
797
- 'cleared',
798
- 'formatted',
799
- 'merged',
800
- 'unmerged',
801
- 'locked',
802
- 'unlocked',
803
- 'noteAdded',
804
- 'noteRemoved',
805
- 'commentAdded',
806
- 'hyperlinkAdded',
807
- 'hyperlinkRemoved',
808
- 'copied',
809
- 'pasted',
810
- ],
811
- };
812
- // =============================================================================
813
- // Range
814
- // =============================================================================
815
- /**
816
- * Range entity
817
- *
818
- * Represents a range of cells in a spreadsheet.
819
- */
820
- export const Range = {
821
- singular: 'range',
822
- plural: 'ranges',
823
- description: 'A range of cells in a spreadsheet',
824
- properties: {
825
- // Location
826
- startRow: {
827
- type: 'number',
828
- description: 'Starting row index (0-based)',
829
- },
830
- startColumn: {
831
- type: 'number',
832
- description: 'Starting column index (0-based)',
833
- },
834
- endRow: {
835
- type: 'number',
836
- description: 'Ending row index (0-based)',
837
- },
838
- endColumn: {
839
- type: 'number',
840
- description: 'Ending column index (0-based)',
841
- },
842
- address: {
843
- type: 'string',
844
- optional: true,
845
- description: 'Range address (e.g., A1:B10)',
846
- },
847
- // Dimensions
848
- rowCount: {
849
- type: 'number',
850
- optional: true,
851
- description: 'Number of rows in range',
852
- },
853
- columnCount: {
854
- type: 'number',
855
- optional: true,
856
- description: 'Number of columns in range',
857
- },
858
- cellCount: {
859
- type: 'number',
860
- optional: true,
861
- description: 'Total number of cells',
862
- },
863
- // Data
864
- values: {
865
- type: 'json',
866
- optional: true,
867
- description: 'Cell values as 2D array',
868
- },
869
- formulas: {
870
- type: 'json',
871
- optional: true,
872
- description: 'Cell formulas as 2D array',
873
- },
874
- // Named range
875
- name: {
876
- type: 'string',
877
- optional: true,
878
- description: 'Named range identifier',
879
- },
880
- isNamed: {
881
- type: 'boolean',
882
- optional: true,
883
- description: 'Whether this is a named range',
884
- },
885
- // Format
886
- format: {
887
- type: 'json',
888
- optional: true,
889
- description: 'Range format configuration',
890
- },
891
- // Protection
892
- protected: {
893
- type: 'boolean',
894
- optional: true,
895
- description: 'Whether range is protected',
896
- },
897
- },
898
- relationships: {
899
- sheet: {
900
- type: 'Sheet',
901
- description: 'Parent sheet',
902
- },
903
- },
904
- actions: [
905
- 'select',
906
- 'setValue',
907
- 'setValues',
908
- 'setFormula',
909
- 'setFormulas',
910
- 'clear',
911
- 'clearFormat',
912
- 'clearData',
913
- 'format',
914
- 'copy',
915
- 'cut',
916
- 'paste',
917
- 'merge',
918
- 'unmerge',
919
- 'sort',
920
- 'filter',
921
- 'protect',
922
- 'unprotect',
923
- 'autoFill',
924
- 'insertRows',
925
- 'insertColumns',
926
- 'deleteRows',
927
- 'deleteColumns',
928
- 'name',
929
- 'unname',
930
- ],
931
- events: [
932
- 'selected',
933
- 'valuesChanged',
934
- 'formulasSet',
935
- 'cleared',
936
- 'formatted',
937
- 'copied',
938
- 'pasted',
939
- 'merged',
940
- 'unmerged',
941
- 'sorted',
942
- 'filtered',
943
- 'protected',
944
- 'unprotected',
945
- 'autoFilled',
946
- 'rowsInserted',
947
- 'columnsInserted',
948
- 'rowsDeleted',
949
- 'columnsDeleted',
950
- 'named',
951
- 'unnamed',
952
- ],
953
- };
954
- // =============================================================================
955
- // Chart
956
- // =============================================================================
957
- /**
958
- * Chart entity
959
- *
960
- * Represents a chart or graph in a spreadsheet.
961
- */
962
- export const Chart = {
963
- singular: 'chart',
964
- plural: 'charts',
965
- description: 'A chart or graph visualizing spreadsheet data',
966
- properties: {
967
- // Identity
968
- title: {
969
- type: 'string',
970
- description: 'Chart title',
971
- },
972
- subtitle: {
973
- type: 'string',
974
- optional: true,
975
- description: 'Chart subtitle',
976
- },
977
- // Type
978
- type: {
979
- type: 'string',
980
- description: 'Chart type',
981
- examples: [
982
- 'line',
983
- 'bar',
984
- 'column',
985
- 'pie',
986
- 'scatter',
987
- 'area',
988
- 'combo',
989
- 'histogram',
990
- 'waterfall',
991
- 'candlestick',
992
- 'treemap',
993
- 'gauge',
994
- 'radar',
995
- ],
996
- },
997
- subtype: {
998
- type: 'string',
999
- optional: true,
1000
- description: 'Chart subtype variant',
1001
- },
1002
- // Data source
1003
- dataRange: {
1004
- type: 'string',
1005
- description: 'Source data range',
1006
- },
1007
- hasHeaders: {
1008
- type: 'boolean',
1009
- optional: true,
1010
- description: 'Whether data includes headers',
1011
- },
1012
- series: {
1013
- type: 'json',
1014
- optional: true,
1015
- description: 'Data series configuration',
1016
- },
1017
- // Position and size
1018
- position: {
1019
- type: 'json',
1020
- optional: true,
1021
- description: 'Chart position on sheet',
1022
- },
1023
- width: {
1024
- type: 'number',
1025
- optional: true,
1026
- description: 'Chart width in pixels',
1027
- },
1028
- height: {
1029
- type: 'number',
1030
- optional: true,
1031
- description: 'Chart height in pixels',
1032
- },
1033
- // Axes
1034
- xAxis: {
1035
- type: 'json',
1036
- optional: true,
1037
- description: 'X-axis configuration',
1038
- },
1039
- yAxis: {
1040
- type: 'json',
1041
- optional: true,
1042
- description: 'Y-axis configuration',
1043
- },
1044
- secondaryAxis: {
1045
- type: 'json',
1046
- optional: true,
1047
- description: 'Secondary axis configuration',
1048
- },
1049
- // Legend
1050
- showLegend: {
1051
- type: 'boolean',
1052
- optional: true,
1053
- description: 'Whether to show legend',
1054
- },
1055
- legendPosition: {
1056
- type: 'string',
1057
- optional: true,
1058
- description: 'Legend position: top, bottom, left, right',
1059
- examples: ['top', 'bottom', 'left', 'right'],
1060
- },
1061
- // Styling
1062
- theme: {
1063
- type: 'string',
1064
- optional: true,
1065
- description: 'Chart theme',
1066
- },
1067
- colors: {
1068
- type: 'string',
1069
- array: true,
1070
- optional: true,
1071
- description: 'Custom colors for series',
1072
- },
1073
- backgroundColor: {
1074
- type: 'string',
1075
- optional: true,
1076
- description: 'Background color',
1077
- },
1078
- // Options
1079
- showDataLabels: {
1080
- type: 'boolean',
1081
- optional: true,
1082
- description: 'Whether to show data labels',
1083
- },
1084
- showGridLines: {
1085
- type: 'boolean',
1086
- optional: true,
1087
- description: 'Whether to show grid lines',
1088
- },
1089
- stacked: {
1090
- type: 'boolean',
1091
- optional: true,
1092
- description: 'Whether chart is stacked',
1093
- },
1094
- smooth: {
1095
- type: 'boolean',
1096
- optional: true,
1097
- description: 'Whether to smooth line charts',
1098
- },
1099
- // Interaction
1100
- interactive: {
1101
- type: 'boolean',
1102
- optional: true,
1103
- description: 'Whether chart is interactive',
1104
- },
1105
- allowFiltering: {
1106
- type: 'boolean',
1107
- optional: true,
1108
- description: 'Whether filtering is allowed',
1109
- },
1110
- // Metadata
1111
- description: {
1112
- type: 'string',
1113
- optional: true,
1114
- description: 'Chart description',
1115
- },
1116
- },
1117
- relationships: {
1118
- spreadsheet: {
1119
- type: 'Spreadsheet',
1120
- backref: 'charts',
1121
- description: 'Parent spreadsheet',
1122
- },
1123
- sheet: {
1124
- type: 'Sheet',
1125
- backref: 'charts',
1126
- description: 'Sheet containing the chart',
1127
- },
1128
- },
1129
- actions: [
1130
- 'create',
1131
- 'edit',
1132
- 'delete',
1133
- 'duplicate',
1134
- 'move',
1135
- 'resize',
1136
- 'refresh',
1137
- 'changeType',
1138
- 'updateData',
1139
- 'export',
1140
- 'copyImage',
1141
- 'setTitle',
1142
- 'setTheme',
1143
- 'showLegend',
1144
- 'hideLegend',
1145
- 'addSeries',
1146
- 'removeSeries',
1147
- ],
1148
- events: [
1149
- 'created',
1150
- 'edited',
1151
- 'deleted',
1152
- 'duplicated',
1153
- 'moved',
1154
- 'resized',
1155
- 'refreshed',
1156
- 'typeChanged',
1157
- 'dataUpdated',
1158
- 'exported',
1159
- 'titleSet',
1160
- 'themeSet',
1161
- 'seriesAdded',
1162
- 'seriesRemoved',
1163
- ],
1164
- };
1165
- // =============================================================================
1166
- // PivotTable
1167
- // =============================================================================
1168
- /**
1169
- * PivotTable entity
1170
- *
1171
- * Represents a pivot table for data analysis and summarization.
1172
- */
1173
- export const PivotTable = {
1174
- singular: 'pivot table',
1175
- plural: 'pivot tables',
1176
- description: 'A pivot table for analyzing and summarizing data',
1177
- properties: {
1178
- // Identity
1179
- name: {
1180
- type: 'string',
1181
- description: 'Pivot table name',
1182
- },
1183
- // Source
1184
- sourceRange: {
1185
- type: 'string',
1186
- description: 'Source data range',
1187
- },
1188
- targetRange: {
1189
- type: 'string',
1190
- optional: true,
1191
- description: 'Target range for pivot table output',
1192
- },
1193
- // Configuration
1194
- rows: {
1195
- type: 'json',
1196
- description: 'Row field configuration',
1197
- },
1198
- columns: {
1199
- type: 'json',
1200
- optional: true,
1201
- description: 'Column field configuration',
1202
- },
1203
- values: {
1204
- type: 'json',
1205
- description: 'Value field configuration with aggregations',
1206
- },
1207
- filters: {
1208
- type: 'json',
1209
- optional: true,
1210
- description: 'Filter field configuration',
1211
- },
1212
- // Aggregation
1213
- aggregationFunctions: {
1214
- type: 'json',
1215
- optional: true,
1216
- description: 'Aggregation functions by field',
1217
- },
1218
- // Sorting
1219
- sortBy: {
1220
- type: 'string',
1221
- optional: true,
1222
- description: 'Field to sort by',
1223
- },
1224
- sortOrder: {
1225
- type: 'string',
1226
- optional: true,
1227
- description: 'Sort order: asc, desc',
1228
- examples: ['asc', 'desc'],
1229
- },
1230
- // Filtering
1231
- activeFilters: {
1232
- type: 'json',
1233
- optional: true,
1234
- description: 'Active filter values',
1235
- },
1236
- // Display
1237
- showGrandTotals: {
1238
- type: 'boolean',
1239
- optional: true,
1240
- description: 'Whether to show grand totals',
1241
- },
1242
- showSubtotals: {
1243
- type: 'boolean',
1244
- optional: true,
1245
- description: 'Whether to show subtotals',
1246
- },
1247
- compactLayout: {
1248
- type: 'boolean',
1249
- optional: true,
1250
- description: 'Whether to use compact layout',
1251
- },
1252
- // Refresh
1253
- autoRefresh: {
1254
- type: 'boolean',
1255
- optional: true,
1256
- description: 'Whether to auto-refresh on data change',
1257
- },
1258
- lastRefreshedAt: {
1259
- type: 'datetime',
1260
- optional: true,
1261
- description: 'Last refresh timestamp',
1262
- },
1263
- // Calculated fields
1264
- calculatedFields: {
1265
- type: 'json',
1266
- optional: true,
1267
- description: 'Custom calculated field definitions',
1268
- },
1269
- },
1270
- relationships: {
1271
- spreadsheet: {
1272
- type: 'Spreadsheet',
1273
- backref: 'pivotTables',
1274
- description: 'Parent spreadsheet',
1275
- },
1276
- sheet: {
1277
- type: 'Sheet',
1278
- backref: 'pivotTables',
1279
- description: 'Sheet containing the pivot table',
1280
- },
1281
- },
1282
- actions: [
1283
- 'create',
1284
- 'edit',
1285
- 'delete',
1286
- 'refresh',
1287
- 'addField',
1288
- 'removeField',
1289
- 'moveField',
1290
- 'setAggregation',
1291
- 'filter',
1292
- 'clearFilter',
1293
- 'sort',
1294
- 'expand',
1295
- 'collapse',
1296
- 'expandAll',
1297
- 'collapseAll',
1298
- 'addCalculatedField',
1299
- 'removeCalculatedField',
1300
- 'showFieldList',
1301
- 'export',
1302
- ],
1303
- events: [
1304
- 'created',
1305
- 'edited',
1306
- 'deleted',
1307
- 'refreshed',
1308
- 'fieldAdded',
1309
- 'fieldRemoved',
1310
- 'fieldMoved',
1311
- 'aggregationSet',
1312
- 'filtered',
1313
- 'filterCleared',
1314
- 'sorted',
1315
- 'expanded',
1316
- 'collapsed',
1317
- 'calculatedFieldAdded',
1318
- 'calculatedFieldRemoved',
1319
- 'exported',
1320
- ],
1321
- };
1322
- // =============================================================================
1323
- // Export all entities as a schema
1324
- // =============================================================================
1325
- /**
1326
- * All spreadsheet entity types
1327
- */
1328
- export const SpreadsheetEntities = {
1329
- Spreadsheet,
1330
- Sheet,
1331
- Cell,
1332
- Range,
1333
- Chart,
1334
- PivotTable,
1335
- };
1336
- /**
1337
- * Entity categories for organization
1338
- */
1339
- export const SpreadsheetCategories = {
1340
- spreadsheets: ['Spreadsheet', 'Sheet', 'Cell', 'Range', 'Chart', 'PivotTable'],
1341
- };