@deckflow/deckuse 1.2.1 → 1.3.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 (282) hide show
  1. package/README.es.md +342 -0
  2. package/README.fr.md +342 -0
  3. package/README.ja.md +342 -0
  4. package/README.ko.md +342 -0
  5. package/README.md +60 -8
  6. package/README.pt-BR.md +342 -0
  7. package/README.ru.md +342 -0
  8. package/README.zh-CN.md +367 -0
  9. package/assets/default.docx +0 -0
  10. package/assets/default.pptx +0 -0
  11. package/dist/bin.js +188 -21
  12. package/dist/bin.js.map +1 -1
  13. package/dist/core/adapter.d.ts +24 -0
  14. package/dist/core/adapter.d.ts.map +1 -0
  15. package/dist/core/adapter.js +20 -0
  16. package/dist/core/adapter.js.map +1 -0
  17. package/dist/core/executor.d.ts +24 -0
  18. package/dist/core/executor.d.ts.map +1 -0
  19. package/dist/core/executor.js +65 -0
  20. package/dist/core/executor.js.map +1 -0
  21. package/dist/core/index.d.ts +7 -0
  22. package/dist/core/index.d.ts.map +1 -0
  23. package/dist/core/index.js +7 -0
  24. package/dist/core/index.js.map +1 -0
  25. package/dist/core/length.d.ts +27 -0
  26. package/dist/core/length.d.ts.map +1 -0
  27. package/dist/core/length.js +63 -0
  28. package/dist/core/length.js.map +1 -0
  29. package/dist/core/measure.d.ts +24 -0
  30. package/dist/core/measure.d.ts.map +1 -0
  31. package/dist/core/measure.js +79 -0
  32. package/dist/core/measure.js.map +1 -0
  33. package/dist/core/not-implemented.d.ts +3 -0
  34. package/dist/core/not-implemented.d.ts.map +1 -0
  35. package/dist/core/not-implemented.js +12 -0
  36. package/dist/core/not-implemented.js.map +1 -0
  37. package/dist/core/schema.d.ts +3065 -0
  38. package/dist/core/schema.d.ts.map +1 -0
  39. package/dist/core/schema.js +799 -0
  40. package/dist/core/schema.js.map +1 -0
  41. package/dist/default-template.d.ts +8 -0
  42. package/dist/default-template.d.ts.map +1 -0
  43. package/dist/default-template.js +29 -0
  44. package/dist/default-template.js.map +1 -0
  45. package/dist/docx/adapter.d.ts +29 -0
  46. package/dist/docx/adapter.d.ts.map +1 -0
  47. package/dist/docx/adapter.js +442 -0
  48. package/dist/docx/adapter.js.map +1 -0
  49. package/dist/docx/addressing.d.ts +18 -0
  50. package/dist/docx/addressing.d.ts.map +1 -0
  51. package/dist/docx/addressing.js +111 -0
  52. package/dist/docx/addressing.js.map +1 -0
  53. package/dist/docx/blank.d.ts +4 -0
  54. package/dist/docx/blank.d.ts.map +1 -0
  55. package/dist/docx/blank.js +75 -0
  56. package/dist/docx/blank.js.map +1 -0
  57. package/dist/docx/index-sync.d.ts +7 -0
  58. package/dist/docx/index-sync.d.ts.map +1 -0
  59. package/dist/docx/index-sync.js +24 -0
  60. package/dist/docx/index-sync.js.map +1 -0
  61. package/dist/docx/index.d.ts +5 -0
  62. package/dist/docx/index.d.ts.map +1 -0
  63. package/dist/docx/index.js +4 -0
  64. package/dist/docx/index.js.map +1 -0
  65. package/dist/docx/indexer.d.ts +41 -0
  66. package/dist/docx/indexer.d.ts.map +1 -0
  67. package/dist/docx/indexer.js +353 -0
  68. package/dist/docx/indexer.js.map +1 -0
  69. package/dist/docx/mutations.d.ts +5 -0
  70. package/dist/docx/mutations.d.ts.map +1 -0
  71. package/dist/docx/mutations.js +311 -0
  72. package/dist/docx/mutations.js.map +1 -0
  73. package/dist/docx/paragraphs.d.ts +26 -0
  74. package/dist/docx/paragraphs.d.ts.map +1 -0
  75. package/dist/docx/paragraphs.js +314 -0
  76. package/dist/docx/paragraphs.js.map +1 -0
  77. package/dist/docx/properties.d.ts +23 -0
  78. package/dist/docx/properties.d.ts.map +1 -0
  79. package/dist/docx/properties.js +414 -0
  80. package/dist/docx/properties.js.map +1 -0
  81. package/dist/docx/tables.d.ts +4 -0
  82. package/dist/docx/tables.d.ts.map +1 -0
  83. package/dist/docx/tables.js +64 -0
  84. package/dist/docx/tables.js.map +1 -0
  85. package/dist/docx/text-spans.d.ts +25 -0
  86. package/dist/docx/text-spans.d.ts.map +1 -0
  87. package/dist/docx/text-spans.js +142 -0
  88. package/dist/docx/text-spans.js.map +1 -0
  89. package/dist/docx/types.d.ts +27 -0
  90. package/dist/docx/types.d.ts.map +1 -0
  91. package/dist/docx/types.js +2 -0
  92. package/dist/docx/types.js.map +1 -0
  93. package/dist/docx/workspace.d.ts +20 -0
  94. package/dist/docx/workspace.d.ts.map +1 -0
  95. package/dist/docx/workspace.js +145 -0
  96. package/dist/docx/workspace.js.map +1 -0
  97. package/dist/docx/xml.d.ts +18 -0
  98. package/dist/docx/xml.d.ts.map +1 -0
  99. package/dist/docx/xml.js +87 -0
  100. package/dist/docx/xml.js.map +1 -0
  101. package/dist/edition-config/index.d.ts +25 -0
  102. package/dist/edition-config/index.d.ts.map +1 -0
  103. package/dist/edition-config/index.js +22 -0
  104. package/dist/edition-config/index.js.map +1 -0
  105. package/dist/edition.d.ts +2 -2
  106. package/dist/edition.d.ts.map +1 -1
  107. package/dist/edition.js +1 -1
  108. package/dist/edition.js.map +1 -1
  109. package/dist/help.d.ts.map +1 -1
  110. package/dist/help.js +124 -32
  111. package/dist/help.js.map +1 -1
  112. package/dist/index.d.ts +1 -1
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +6 -6
  115. package/dist/index.js.map +1 -1
  116. package/dist/key/index.d.ts +2 -0
  117. package/dist/key/index.d.ts.map +1 -0
  118. package/dist/key/index.js +3 -0
  119. package/dist/key/index.js.map +1 -0
  120. package/dist/monitor-daemon.d.ts +21 -8
  121. package/dist/monitor-daemon.d.ts.map +1 -1
  122. package/dist/monitor-daemon.js +189 -51
  123. package/dist/monitor-daemon.js.map +1 -1
  124. package/dist/monitor-registry.d.ts +34 -0
  125. package/dist/monitor-registry.d.ts.map +1 -0
  126. package/dist/monitor-registry.js +191 -0
  127. package/dist/monitor-registry.js.map +1 -0
  128. package/dist/monitor.d.ts.map +1 -1
  129. package/dist/monitor.js +2 -12
  130. package/dist/monitor.js.map +1 -1
  131. package/dist/numbers/index.d.ts +2 -0
  132. package/dist/numbers/index.d.ts.map +1 -0
  133. package/dist/numbers/index.js +3 -0
  134. package/dist/numbers/index.js.map +1 -0
  135. package/dist/opc/index.d.ts +96 -0
  136. package/dist/opc/index.d.ts.map +1 -0
  137. package/dist/opc/index.js +596 -0
  138. package/dist/opc/index.js.map +1 -0
  139. package/dist/pptx/adapter.d.ts +167 -0
  140. package/dist/pptx/adapter.d.ts.map +1 -0
  141. package/dist/pptx/adapter.js +841 -0
  142. package/dist/pptx/adapter.js.map +1 -0
  143. package/dist/pptx/addressing.d.ts +47 -0
  144. package/dist/pptx/addressing.d.ts.map +1 -0
  145. package/dist/pptx/addressing.js +481 -0
  146. package/dist/pptx/addressing.js.map +1 -0
  147. package/dist/pptx/align.d.ts +24 -0
  148. package/dist/pptx/align.d.ts.map +1 -0
  149. package/dist/pptx/align.js +112 -0
  150. package/dist/pptx/align.js.map +1 -0
  151. package/dist/pptx/chart-classify.d.ts +10 -0
  152. package/dist/pptx/chart-classify.d.ts.map +1 -0
  153. package/dist/pptx/chart-classify.js +58 -0
  154. package/dist/pptx/chart-classify.js.map +1 -0
  155. package/dist/pptx/chart.d.ts +42 -0
  156. package/dist/pptx/chart.d.ts.map +1 -0
  157. package/dist/pptx/chart.js +614 -0
  158. package/dist/pptx/chart.js.map +1 -0
  159. package/dist/pptx/edition-extension.d.ts +25 -0
  160. package/dist/pptx/edition-extension.d.ts.map +1 -0
  161. package/dist/pptx/edition-extension.js +10 -0
  162. package/dist/pptx/edition-extension.js.map +1 -0
  163. package/dist/pptx/edition.d.ts +20 -0
  164. package/dist/pptx/edition.d.ts.map +1 -0
  165. package/dist/pptx/edition.js +69 -0
  166. package/dist/pptx/edition.js.map +1 -0
  167. package/dist/pptx/elements.d.ts +12 -0
  168. package/dist/pptx/elements.d.ts.map +1 -0
  169. package/dist/pptx/elements.js +224 -0
  170. package/dist/pptx/elements.js.map +1 -0
  171. package/dist/pptx/hyperlink.d.ts +7 -0
  172. package/dist/pptx/hyperlink.d.ts.map +1 -0
  173. package/dist/pptx/hyperlink.js +81 -0
  174. package/dist/pptx/hyperlink.js.map +1 -0
  175. package/dist/pptx/index-sync.d.ts +7 -0
  176. package/dist/pptx/index-sync.d.ts.map +1 -0
  177. package/dist/pptx/index-sync.js +24 -0
  178. package/dist/pptx/index-sync.js.map +1 -0
  179. package/dist/pptx/index.d.ts +10 -0
  180. package/dist/pptx/index.d.ts.map +1 -0
  181. package/dist/pptx/index.js +7 -0
  182. package/dist/pptx/index.js.map +1 -0
  183. package/dist/pptx/indexer.d.ts +19 -0
  184. package/dist/pptx/indexer.d.ts.map +1 -0
  185. package/dist/pptx/indexer.js +320 -0
  186. package/dist/pptx/indexer.js.map +1 -0
  187. package/dist/pptx/layout-ref.d.ts +41 -0
  188. package/dist/pptx/layout-ref.d.ts.map +1 -0
  189. package/dist/pptx/layout-ref.js +145 -0
  190. package/dist/pptx/layout-ref.js.map +1 -0
  191. package/dist/pptx/media.d.ts +15 -0
  192. package/dist/pptx/media.d.ts.map +1 -0
  193. package/dist/pptx/media.js +145 -0
  194. package/dist/pptx/media.js.map +1 -0
  195. package/dist/pptx/mutations.d.ts +11 -0
  196. package/dist/pptx/mutations.d.ts.map +1 -0
  197. package/dist/pptx/mutations.js +1114 -0
  198. package/dist/pptx/mutations.js.map +1 -0
  199. package/dist/pptx/picture.d.ts +25 -0
  200. package/dist/pptx/picture.d.ts.map +1 -0
  201. package/dist/pptx/picture.js +118 -0
  202. package/dist/pptx/picture.js.map +1 -0
  203. package/dist/pptx/placeholder-role.d.ts +19 -0
  204. package/dist/pptx/placeholder-role.d.ts.map +1 -0
  205. package/dist/pptx/placeholder-role.js +71 -0
  206. package/dist/pptx/placeholder-role.js.map +1 -0
  207. package/dist/pptx/properties.d.ts +13 -0
  208. package/dist/pptx/properties.d.ts.map +1 -0
  209. package/dist/pptx/properties.js +587 -0
  210. package/dist/pptx/properties.js.map +1 -0
  211. package/dist/pptx/resolve-properties.d.ts +17 -0
  212. package/dist/pptx/resolve-properties.d.ts.map +1 -0
  213. package/dist/pptx/resolve-properties.js +623 -0
  214. package/dist/pptx/resolve-properties.js.map +1 -0
  215. package/dist/pptx/slide-size.d.ts +9 -0
  216. package/dist/pptx/slide-size.d.ts.map +1 -0
  217. package/dist/pptx/slide-size.js +29 -0
  218. package/dist/pptx/slide-size.js.map +1 -0
  219. package/dist/pptx/slides.d.ts +15 -0
  220. package/dist/pptx/slides.d.ts.map +1 -0
  221. package/dist/pptx/slides.js +247 -0
  222. package/dist/pptx/slides.js.map +1 -0
  223. package/dist/pptx/table-measure.d.ts +43 -0
  224. package/dist/pptx/table-measure.d.ts.map +1 -0
  225. package/dist/pptx/table-measure.js +70 -0
  226. package/dist/pptx/table-measure.js.map +1 -0
  227. package/dist/pptx/table.d.ts +26 -0
  228. package/dist/pptx/table.d.ts.map +1 -0
  229. package/dist/pptx/table.js +638 -0
  230. package/dist/pptx/table.js.map +1 -0
  231. package/dist/pptx/types.d.ts +27 -0
  232. package/dist/pptx/types.d.ts.map +1 -0
  233. package/dist/pptx/types.js +2 -0
  234. package/dist/pptx/types.js.map +1 -0
  235. package/dist/pptx/workspace.d.ts +23 -0
  236. package/dist/pptx/workspace.d.ts.map +1 -0
  237. package/dist/pptx/workspace.js +148 -0
  238. package/dist/pptx/workspace.js.map +1 -0
  239. package/dist/pptx/xml.d.ts +75 -0
  240. package/dist/pptx/xml.d.ts.map +1 -0
  241. package/dist/pptx/xml.js +390 -0
  242. package/dist/pptx/xml.js.map +1 -0
  243. package/dist/render.d.ts.map +1 -1
  244. package/dist/render.js +14 -2
  245. package/dist/render.js.map +1 -1
  246. package/dist/version.d.ts +1 -1
  247. package/dist/version.js +1 -1
  248. package/dist/workspace/git.d.ts +7 -0
  249. package/dist/workspace/git.d.ts.map +1 -0
  250. package/dist/workspace/git.js +119 -0
  251. package/dist/workspace/git.js.map +1 -0
  252. package/dist/workspace/index.d.ts +7 -0
  253. package/dist/workspace/index.d.ts.map +1 -0
  254. package/dist/workspace/index.js +7 -0
  255. package/dist/workspace/index.js.map +1 -0
  256. package/dist/workspace/lock.d.ts +5 -0
  257. package/dist/workspace/lock.d.ts.map +1 -0
  258. package/dist/workspace/lock.js +104 -0
  259. package/dist/workspace/lock.js.map +1 -0
  260. package/dist/workspace/metadata.d.ts +4 -0
  261. package/dist/workspace/metadata.d.ts.map +1 -0
  262. package/dist/workspace/metadata.js +21 -0
  263. package/dist/workspace/metadata.js.map +1 -0
  264. package/dist/workspace/operations.d.ts +14 -0
  265. package/dist/workspace/operations.d.ts.map +1 -0
  266. package/dist/workspace/operations.js +35 -0
  267. package/dist/workspace/operations.js.map +1 -0
  268. package/dist/workspace/paths.d.ts +11 -0
  269. package/dist/workspace/paths.d.ts.map +1 -0
  270. package/dist/workspace/paths.js +12 -0
  271. package/dist/workspace/paths.js.map +1 -0
  272. package/dist/workspace/revision.d.ts +6 -0
  273. package/dist/workspace/revision.d.ts.map +1 -0
  274. package/dist/workspace/revision.js +15 -0
  275. package/dist/workspace/revision.js.map +1 -0
  276. package/dist/xlsx/index.d.ts +2 -0
  277. package/dist/xlsx/index.d.ts.map +1 -0
  278. package/dist/xlsx/index.js +3 -0
  279. package/dist/xlsx/index.js.map +1 -0
  280. package/package.json +51 -27
  281. package/schema/command.schema.json +2405 -0
  282. package/dist/.tsbuildinfo +0 -1
@@ -0,0 +1,142 @@
1
+ import { children, writeTextNode } from './xml.js';
2
+ const PROTECTED = new Set([
3
+ 'sdt',
4
+ 'del',
5
+ 'ins',
6
+ 'moveFrom',
7
+ 'moveTo',
8
+ 'oMath',
9
+ 'oMathPara',
10
+ 'fldSimple',
11
+ 'fldChar',
12
+ 'instrText',
13
+ 'customXml',
14
+ 'commentRangeStart',
15
+ 'commentRangeEnd',
16
+ 'commentReference',
17
+ ]);
18
+ const SKIP = new Set([
19
+ 'pPr',
20
+ 'rPr',
21
+ 'bookmarkStart',
22
+ 'bookmarkEnd',
23
+ 'proofErr',
24
+ 'permStart',
25
+ 'permEnd',
26
+ 'sectPr',
27
+ 'lastRenderedPageBreak',
28
+ ]);
29
+ /**
30
+ * Concatenate visible `w:t` text in a paragraph. `w:proofErr` and bookmarks are
31
+ * skipped so a match can cross run boundaries. Protected markup (revisions,
32
+ * fields, content controls) stays in the string so overlap can be rejected.
33
+ */
34
+ export const collectSpans = (paragraph) => {
35
+ const acc = { text: '', spans: [] };
36
+ walk(paragraph, acc, false);
37
+ return acc;
38
+ };
39
+ const walk = (container, acc, inheritedProtected) => {
40
+ for (const child of children(container)) {
41
+ const name = child.localName ?? '';
42
+ const protectedHere = inheritedProtected || PROTECTED.has(name);
43
+ if (name === 'r') {
44
+ for (const inner of children(child)) {
45
+ if (inner.localName !== 't')
46
+ continue;
47
+ const value = inner.textContent ?? '';
48
+ const start = acc.text.length;
49
+ acc.text += value;
50
+ acc.spans.push({
51
+ start,
52
+ end: start + value.length,
53
+ node: inner,
54
+ run: child,
55
+ protected: protectedHere,
56
+ });
57
+ }
58
+ continue;
59
+ }
60
+ if (SKIP.has(name))
61
+ continue;
62
+ if (children(child).length > 0)
63
+ walk(child, acc, protectedHere);
64
+ }
65
+ };
66
+ export const visibleRuns = (paragraph) => {
67
+ const runs = [];
68
+ const seen = new Set();
69
+ for (const span of collectSpans(paragraph).spans) {
70
+ if (span.protected || seen.has(span.run))
71
+ continue;
72
+ seen.add(span.run);
73
+ runs.push(span.run);
74
+ }
75
+ return runs;
76
+ };
77
+ const applyRange = (spans, start, end, replacement) => {
78
+ const first = spans[0];
79
+ const last = spans[spans.length - 1];
80
+ if (!first || !last)
81
+ return;
82
+ const firstText = first.node.textContent ?? '';
83
+ const lastText = last.node.textContent ?? '';
84
+ const prefix = firstText.slice(0, Math.max(0, start - first.start));
85
+ const suffix = lastText.slice(Math.max(0, end - last.start));
86
+ if (first === last) {
87
+ writeTextNode(first.node, `${prefix}${replacement}${suffix}`);
88
+ return;
89
+ }
90
+ writeTextNode(first.node, `${prefix}${replacement}`);
91
+ for (let index = 1; index < spans.length - 1; index += 1) {
92
+ const span = spans[index];
93
+ if (span)
94
+ writeTextNode(span.node, '');
95
+ }
96
+ writeTextNode(last.node, suffix);
97
+ };
98
+ export const replaceInParagraph = (paragraph, find, replacement, regex, maxMatches) => {
99
+ let pattern;
100
+ if (regex) {
101
+ try {
102
+ pattern = new RegExp(find, 'g');
103
+ }
104
+ catch (cause) {
105
+ return { error: cause instanceof Error ? cause.message : 'Invalid regular expression' };
106
+ }
107
+ }
108
+ let matched = 0;
109
+ for (let guard = 0; guard < 10_000; guard += 1) {
110
+ const { text, spans } = collectSpans(paragraph);
111
+ let start = -1;
112
+ let end = -1;
113
+ if (pattern) {
114
+ pattern.lastIndex = 0;
115
+ const found = pattern.exec(text);
116
+ if (!found || found[0].length === 0)
117
+ break;
118
+ start = found.index;
119
+ end = start + found[0].length;
120
+ }
121
+ else {
122
+ start = text.indexOf(find);
123
+ if (start < 0)
124
+ break;
125
+ end = start + find.length;
126
+ }
127
+ const overlapping = spans.filter((span) => span.end > start && span.start < end);
128
+ if (overlapping.length === 0)
129
+ break;
130
+ if (overlapping.some((span) => span.protected)) {
131
+ return {
132
+ error: 'Match overlaps tracked changes, fields, comments, content controls, or equations',
133
+ };
134
+ }
135
+ applyRange(overlapping, start, end, replacement);
136
+ matched += 1;
137
+ if (maxMatches !== undefined && matched >= maxMatches)
138
+ break;
139
+ }
140
+ return { matched };
141
+ };
142
+ //# sourceMappingURL=text-spans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-spans.js","sourceRoot":"","sources":["../../src/docx/text-spans.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { Diagnostic, ElementRef } from '../core/index.js';
2
+ export type ElementKind = 'paragraph' | 'run' | 'table' | 'tableCell' | 'section' | 'style' | 'bookmark';
3
+ export interface IndexedElement {
4
+ ref: ElementRef;
5
+ kind: ElementKind;
6
+ partUri: string;
7
+ name?: string;
8
+ text?: string;
9
+ parentId?: string;
10
+ location?: Record<string, unknown>;
11
+ payload?: Record<string, unknown>;
12
+ }
13
+ export interface IndexFile {
14
+ revision: string;
15
+ elements: IndexedElement[];
16
+ }
17
+ export interface MutationOutcome {
18
+ changed: boolean;
19
+ matched?: number;
20
+ refs?: ElementRef[];
21
+ partUri?: string;
22
+ slides?: number[];
23
+ diagnostics?: Diagnostic[];
24
+ changedTargets?: string[];
25
+ changedParts?: string[];
26
+ }
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/docx/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,MAAM,WAAW,GACrB,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AAEjF,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,UAAU,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/docx/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import type { WorkspaceManifest } from '../core/index.js';
2
+ import { type OpcArchive as OpcArchiveType } from '../opc/index.js';
3
+ import type { IndexFile } from './types.js';
4
+ export { revision, nextRevision, sourceDir, readManifest, readHistory, withWriteLock, } from '../workspace/index.js';
5
+ export type { OperationRecord } from '../workspace/index.js';
6
+ export declare const packagePath: (workspace: string) => string;
7
+ export declare const readIndex: (workspace: string) => Promise<IndexFile>;
8
+ export declare function hashSourceTree(workspace: string): Promise<string>;
9
+ export declare const isPackageStale: (workspace: string, manifest?: WorkspaceManifest) => Promise<boolean>;
10
+ export declare function repackWorkspace(workspace: string): Promise<{
11
+ manifest: WorkspaceManifest;
12
+ packagePath: string;
13
+ }>;
14
+ export declare function initializeWorkspace(workspace: string, archive: OpcArchiveType, manifest: WorkspaceManifest, index: IndexFile): Promise<WorkspaceManifest>;
15
+ export declare function persistWrite(workspace: string, archive: OpcArchiveType, manifest: WorkspaceManifest, index: IndexFile, operation: unknown, slides: number[]): Promise<WorkspaceManifest>;
16
+ export declare function undoWrites(workspace: string, steps: number): Promise<{
17
+ undone: number;
18
+ revision: string;
19
+ }>;
20
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/docx/workspace.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAA+B,KAAK,UAAU,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAejG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,WAAW,EACX,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,eAAO,MAAM,WAAW,GAAI,WAAW,MAAM,WAA6C,CAAC;AAE3F,eAAO,MAAM,SAAS,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,SAAS,CACE,CAAC;AAExE,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBvE;AAgBD,eAAO,MAAM,cAAc,GACzB,WAAW,MAAM,EACjB,WAAW,iBAAiB,KAC3B,OAAO,CAAC,OAAO,CAMjB,CAAC;AAsBF,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAChE,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAaD;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,iBAAiB,CAAC,CAe5B;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,iBAAiB,CAAC,CA2B5B;AAED,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB/C"}
@@ -0,0 +1,145 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { mkdir, readFile, readdir, rename, rm } from 'node:fs/promises';
3
+ import { basename, join, resolve } from 'node:path';
4
+ import { OpcArchive, snapshotArchive } from '../opc/index.js';
5
+ import { appendOperationCommit, deckuseDir, indexPath, initGitRepo, readManifest, readOperations, resetGit, sourceDir, withWriteLock, writeMetadata, writeOperations, } from '../workspace/index.js';
6
+ import { loadIndex } from './index-sync.js';
7
+ const DOCX_MEDIA_TYPE = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
8
+ export { revision, nextRevision, sourceDir, readManifest, readHistory, withWriteLock, } from '../workspace/index.js';
9
+ export const packagePath = (workspace) => join(resolve(workspace), 'package.docx');
10
+ export const readIndex = async (workspace) => JSON.parse(await readFile(indexPath(workspace), 'utf8'));
11
+ export async function hashSourceTree(workspace) {
12
+ const root = sourceDir(workspace);
13
+ const entries = [];
14
+ const walk = async (dir, prefix = '') => {
15
+ for (const entry of await readdir(dir, { withFileTypes: true })) {
16
+ const relative = prefix ? `${prefix}/${entry.name}` : entry.name;
17
+ const absolute = join(dir, entry.name);
18
+ if (entry.isDirectory()) {
19
+ await walk(absolute, relative);
20
+ continue;
21
+ }
22
+ if (!entry.isFile())
23
+ continue;
24
+ entries.push({ relative: relative.replaceAll('\\', '/'), data: await readFile(absolute) });
25
+ }
26
+ };
27
+ await walk(root);
28
+ entries.sort((a, b) => a.relative.localeCompare(b.relative));
29
+ const hash = createHash('sha256');
30
+ for (const entry of entries) {
31
+ hash.update(entry.relative);
32
+ hash.update('\0');
33
+ hash.update(entry.data);
34
+ }
35
+ return hash.digest('hex');
36
+ }
37
+ const withSourceContentHash = async (workspace, manifest) => {
38
+ const sourceContentHash = await hashSourceTree(workspace);
39
+ return {
40
+ ...manifest,
41
+ metadata: {
42
+ ...(manifest.metadata ?? {}),
43
+ sourceContentHash,
44
+ },
45
+ };
46
+ };
47
+ export const isPackageStale = async (workspace, manifest) => {
48
+ const current = manifest ?? (await readManifest(workspace));
49
+ const stored = current.metadata?.['sourceContentHash'];
50
+ if (typeof stored !== 'string' || stored.length === 0)
51
+ return false;
52
+ const live = await hashSourceTree(workspace);
53
+ return live !== stored;
54
+ };
55
+ const packPackage = async (workspace, archive, manifest) => {
56
+ const path = packagePath(workspace);
57
+ const { checksum } = await snapshotArchive(archive, path);
58
+ const withFiles = {
59
+ ...manifest,
60
+ files: [
61
+ {
62
+ path: basename(path),
63
+ mediaType: DOCX_MEDIA_TYPE,
64
+ checksum,
65
+ },
66
+ ],
67
+ };
68
+ return withSourceContentHash(workspace, withFiles);
69
+ };
70
+ export async function repackWorkspace(workspace) {
71
+ const root = resolve(workspace);
72
+ return withWriteLock(root, async () => {
73
+ const manifest = await readManifest(root);
74
+ const archive = await OpcArchive.openDirectory(sourceDir(root));
75
+ const index = await loadIndex(root, archive, manifest, { persist: true });
76
+ const packed = await packPackage(root, archive, {
77
+ ...manifest,
78
+ updatedAt: new Date().toISOString(),
79
+ });
80
+ await writeMetadata(root, packed, index);
81
+ return { manifest: packed, packagePath: packagePath(root) };
82
+ });
83
+ }
84
+ export async function initializeWorkspace(workspace, archive, manifest, index) {
85
+ const root = resolve(workspace);
86
+ await mkdir(root, { recursive: true });
87
+ await mkdir(deckuseDir(root), { recursive: true });
88
+ await archive.writeDirectory(sourceDir(root), true);
89
+ const packed = await packPackage(root, archive, manifest);
90
+ const next = {
91
+ ...packed,
92
+ revision: index.revision,
93
+ updatedAt: new Date().toISOString(),
94
+ };
95
+ await writeMetadata(root, next, index);
96
+ await writeOperations(root, []);
97
+ await initGitRepo(root, 'deckuse: init');
98
+ return next;
99
+ }
100
+ export async function persistWrite(workspace, archive, manifest, index, operation, slides) {
101
+ const root = resolve(workspace);
102
+ const rev = index.revision;
103
+ const source = sourceDir(root);
104
+ const sourceTmp = `${source}.${randomUUID()}.tmp`;
105
+ try {
106
+ await archive.writeDirectory(sourceTmp);
107
+ await rm(source, { recursive: true, force: true });
108
+ await rename(sourceTmp, source);
109
+ const next = {
110
+ ...manifest,
111
+ revision: rev,
112
+ updatedAt: new Date().toISOString(),
113
+ };
114
+ const packed = await packPackage(root, archive, next);
115
+ await writeMetadata(root, packed, index);
116
+ await appendOperationCommit(root, {
117
+ at: new Date().toISOString(),
118
+ revision: rev,
119
+ operation,
120
+ slides: [...new Set(slides)].sort((a, b) => a - b),
121
+ });
122
+ return packed;
123
+ }
124
+ catch (error) {
125
+ await rm(sourceTmp, { recursive: true, force: true });
126
+ throw error;
127
+ }
128
+ }
129
+ export async function undoWrites(workspace, steps) {
130
+ const root = resolve(workspace);
131
+ const records = await readOperations(root);
132
+ if (steps > records.length)
133
+ throw new Error(`Cannot undo ${String(steps)} step(s); only ${String(records.length)} available`);
134
+ await resetGit(root, steps);
135
+ const manifest = await readManifest(root);
136
+ const archive = await OpcArchive.openDirectory(sourceDir(root));
137
+ const index = await loadIndex(root, archive, manifest, { persist: true });
138
+ const packed = await packPackage(root, archive, {
139
+ ...manifest,
140
+ updatedAt: new Date().toISOString(),
141
+ });
142
+ await writeMetadata(root, packed, index);
143
+ return { undone: steps, revision: index.revision };
144
+ }
145
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/docx/workspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { Document, Element, Node } from '@xmldom/xmldom';
2
+ export declare const NS: {
3
+ readonly w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
4
+ readonly w14: "http://schemas.microsoft.com/office/word/2010/wordml";
5
+ readonly mc: "http://schemas.openxmlformats.org/markup-compatibility/2006";
6
+ };
7
+ export declare const DOCUMENT_PART = "/word/document.xml";
8
+ export declare const STYLES_PART = "/word/styles.xml";
9
+ export declare const children: (node: Node) => Element[];
10
+ export declare const descendants: (node: Node, localName?: string) => Element[];
11
+ export declare const attr: (node: Element | undefined, name: string) => string | undefined;
12
+ export declare const wEl: (doc: Document, name: string) => Element;
13
+ export declare const documentBody: (doc: Document) => Element;
14
+ export declare const paraIdOf: (paragraph: Element) => string | undefined;
15
+ export declare const ensureW14: (doc: Document) => void;
16
+ export declare const protectionReason: (node: Element) => string | undefined;
17
+ export declare const writeTextNode: (node: Element, value: string) => void;
18
+ //# sourceMappingURL=xml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml.d.ts","sourceRoot":"","sources":["../../src/docx/xml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE9D,eAAO,MAAM,EAAE;;;;CAIL,CAAC;AAEX,eAAO,MAAM,aAAa,uBAAuB,CAAC;AAClD,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAmB9C,eAAO,MAAM,QAAQ,GAAI,MAAM,IAAI,KAAG,OAAO,EACuC,CAAC;AAErF,eAAO,MAAM,WAAW,GAAI,MAAM,IAAI,EAAE,YAAY,MAAM,KAAG,OAAO,EAUnE,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,MAAM,OAAO,GAAG,SAAS,EAAE,MAAM,MAAM,KAAG,MAAM,GAAG,SAIvE,CAAC;AAEF,eAAO,MAAM,GAAG,GAAI,KAAK,QAAQ,EAAE,MAAM,MAAM,KAAG,OAAiD,CAAC;AAEpG,eAAO,MAAM,YAAY,GAAI,KAAK,QAAQ,KAAG,OAO5C,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,WAAW,OAAO,KAAG,MAAM,GAAG,SAMtD,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,KAAK,QAAQ,KAAG,IAQzC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,OAAO,KAAG,MAAM,GAAG,SAMzD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,MAAM,OAAO,EAAE,OAAO,MAAM,KAAG,IAI5D,CAAC"}
@@ -0,0 +1,87 @@
1
+ export const NS = {
2
+ w: 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
3
+ w14: 'http://schemas.microsoft.com/office/word/2010/wordml',
4
+ mc: 'http://schemas.openxmlformats.org/markup-compatibility/2006',
5
+ };
6
+ export const DOCUMENT_PART = '/word/document.xml';
7
+ export const STYLES_PART = '/word/styles.xml';
8
+ const PROTECTED = new Set([
9
+ 'sdt',
10
+ 'del',
11
+ 'ins',
12
+ 'moveFrom',
13
+ 'moveTo',
14
+ 'oMath',
15
+ 'oMathPara',
16
+ 'fldSimple',
17
+ 'fldChar',
18
+ 'instrText',
19
+ 'customXml',
20
+ 'commentRangeStart',
21
+ 'commentRangeEnd',
22
+ 'commentReference',
23
+ ]);
24
+ export const children = (node) => Array.from(node.childNodes).filter((item) => item.nodeType === 1);
25
+ export const descendants = (node, localName) => {
26
+ const result = [];
27
+ const visit = (current) => {
28
+ for (const child of children(current)) {
29
+ if (!localName || child.localName === localName)
30
+ result.push(child);
31
+ visit(child);
32
+ }
33
+ };
34
+ visit(node);
35
+ return result;
36
+ };
37
+ export const attr = (node, name) => {
38
+ if (!node)
39
+ return undefined;
40
+ const value = node.getAttribute(name);
41
+ return value === null || value === '' ? undefined : value;
42
+ };
43
+ export const wEl = (doc, name) => doc.createElementNS(NS.w, `w:${name}`);
44
+ export const documentBody = (doc) => {
45
+ const root = doc.documentElement;
46
+ if (!root)
47
+ throw new Error('word/document.xml has no document element');
48
+ const body = children(root).find((child) => child.localName === 'body') ?? descendants(root, 'body')[0];
49
+ if (!body)
50
+ throw new Error('word/document.xml has no w:body');
51
+ return body;
52
+ };
53
+ export const paraIdOf = (paragraph) => {
54
+ const raw = paragraph.getAttributeNS(NS.w14, 'paraId') ??
55
+ paragraph.getAttribute('w14:paraId') ??
56
+ paragraph.getAttribute('paraId');
57
+ return raw ? raw.toUpperCase() : undefined;
58
+ };
59
+ export const ensureW14 = (doc) => {
60
+ const root = doc.documentElement;
61
+ if (!root)
62
+ return;
63
+ if (!root.getAttribute('xmlns:w14'))
64
+ root.setAttribute('xmlns:w14', NS.w14);
65
+ if (!root.getAttribute('xmlns:mc'))
66
+ root.setAttribute('xmlns:mc', NS.mc);
67
+ const ignorable = root.getAttribute('mc:Ignorable') ?? '';
68
+ const tokens = ignorable.split(/\s+/).filter(Boolean);
69
+ if (!tokens.includes('w14'))
70
+ root.setAttribute('mc:Ignorable', [...tokens, 'w14'].join(' '));
71
+ };
72
+ export const protectionReason = (node) => {
73
+ const hit = PROTECTED.has(node.localName ?? '')
74
+ ? node
75
+ : descendants(node).find((item) => PROTECTED.has(item.localName ?? ''));
76
+ if (!hit)
77
+ return undefined;
78
+ return `Cannot rewrite ${hit.localName ?? 'markup'}; tracked changes, fields, comments, content controls, and equations are preserved`;
79
+ };
80
+ export const writeTextNode = (node, value) => {
81
+ node.textContent = value;
82
+ if (/^\s|\s$/.test(value) || value.includes(' '))
83
+ node.setAttribute('xml:space', 'preserve');
84
+ else if (node.hasAttribute('xml:space'))
85
+ node.removeAttribute('xml:space');
86
+ };
87
+ //# sourceMappingURL=xml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/docx/xml.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,CAAC,EAAE,8DAA8D;IACjE,GAAG,EAAE,sDAAsD;IAC3D,EAAE,EAAE,6DAA6D;CACzD,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAClD,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAE9C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,KAAK;IACL,KAAK;IACL,KAAK;IACL,UAAU;IACV,QAAQ;IACR,OAAO;IACP,WAAW;IACX,WAAW;IACX,SAAS;IACT,WAAW;IACX,WAAW;IACX,mBAAmB;IACnB,iBAAiB;IACjB,kBAAkB;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAa,EAAE,CAChD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAmB,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAU,EAAE,SAAkB,EAAa,EAAE;IACvE,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,CAAC,OAAa,EAAQ,EAAE;QACpC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpE,KAAK,CAAC,KAAK,CAAC,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,CAAC;IACZ,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,IAAyB,EAAE,IAAY,EAAsB,EAAE;IAClF,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAa,EAAE,IAAY,EAAW,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;AAEpG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAa,EAAW,EAAE;IACrD,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC;IACjC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACxE,MAAM,IAAI,GACR,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAkB,EAAsB,EAAE;IACjE,MAAM,GAAG,GACP,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC1C,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;QACpC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAa,EAAQ,EAAE;IAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC;IACjC,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC5E,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;QAAE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAAsB,EAAE;IACpE,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QAC7C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,OAAO,kBAAkB,GAAG,CAAC,SAAS,IAAI,QAAQ,oFAAoF,CAAC;AACzI,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAa,EAAE,KAAa,EAAQ,EAAE;IAClE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IACzB,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;SACzF,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;AAC7E,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /** Product edition for a DeckUse build. */
2
+ export type Edition = 'community' | 'commercial';
3
+ /** Community defaults. Commercial overlays must not rewrite this module in-tree. */
4
+ export declare const EDITION: Edition;
5
+ export declare const EDITION_VARIANT = "community";
6
+ export declare const DISTRIBUTION_CHANNEL = "oss";
7
+ /**
8
+ * Status / documentation capability claims for this edition.
9
+ * Master / layout / theme / advanced-chart *writes* are hard-denied in shared
10
+ * pptx code unless a proprietary `PptxEditionExtension` is registered —
11
+ * flipping these flags alone never opens those write paths.
12
+ */
13
+ export declare const editionCapabilities: {
14
+ readonly mastersEdit: false;
15
+ readonly layoutsEdit: false;
16
+ readonly themeEdit: false;
17
+ readonly chartBasicOnly: true;
18
+ };
19
+ export type EditionCapabilities = typeof editionCapabilities;
20
+ export declare const editionMetadata: {
21
+ readonly edition: "community";
22
+ readonly variant: "community";
23
+ readonly 'distribution-channel': "oss";
24
+ };
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/edition-config/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,YAAY,CAAC;AAEjD,oFAAoF;AACpF,eAAO,MAAM,OAAO,EAAE,OAAqB,CAAC;AAC5C,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;CAKtB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC;AAE7D,eAAO,MAAM,eAAe;;;;CAIlB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /** Community defaults. Commercial overlays must not rewrite this module in-tree. */
2
+ export const EDITION = 'community';
3
+ export const EDITION_VARIANT = 'community';
4
+ export const DISTRIBUTION_CHANNEL = 'oss';
5
+ /**
6
+ * Status / documentation capability claims for this edition.
7
+ * Master / layout / theme / advanced-chart *writes* are hard-denied in shared
8
+ * pptx code unless a proprietary `PptxEditionExtension` is registered —
9
+ * flipping these flags alone never opens those write paths.
10
+ */
11
+ export const editionCapabilities = {
12
+ mastersEdit: false,
13
+ layoutsEdit: false,
14
+ themeEdit: false,
15
+ chartBasicOnly: true,
16
+ };
17
+ export const editionMetadata = {
18
+ edition: EDITION,
19
+ variant: EDITION_VARIANT,
20
+ 'distribution-channel': DISTRIBUTION_CHANNEL,
21
+ };
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/edition-config/index.ts"],"names":[],"mappings":"AAGA,oFAAoF;AACpF,MAAM,CAAC,MAAM,OAAO,GAAY,WAAW,CAAC;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAC3C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,WAAW,EAAE,KAAK;IAClB,WAAW,EAAE,KAAK;IAClB,SAAS,EAAE,KAAK;IAChB,cAAc,EAAE,IAAI;CACZ,CAAC;AAIX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,eAAe;IACxB,sBAAsB,EAAE,oBAAoB;CACpC,CAAC"}
package/dist/edition.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /** Product edition metadata for the DeckUse CLI package (re-export of edition-config). */
2
- export type { Edition, EditionCapabilities } from '@deckflow/deckuse-edition-config';
3
- export { EDITION, EDITION_VARIANT, DISTRIBUTION_CHANNEL, editionCapabilities, editionMetadata, } from '@deckflow/deckuse-edition-config';
2
+ export type { Edition, EditionCapabilities } from './edition-config/index.js';
3
+ export { EDITION, EDITION_VARIANT, DISTRIBUTION_CHANNEL, editionCapabilities, editionMetadata, } from './edition-config/index.js';
4
4
  //# sourceMappingURL=edition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"edition.d.ts","sourceRoot":"","sources":["../src/edition.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EACL,OAAO,EACP,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,GAChB,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"edition.d.ts","sourceRoot":"","sources":["../src/edition.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EACL,OAAO,EACP,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,GAChB,MAAM,2BAA2B,CAAC"}
package/dist/edition.js CHANGED
@@ -1,2 +1,2 @@
1
- export { EDITION, EDITION_VARIANT, DISTRIBUTION_CHANNEL, editionCapabilities, editionMetadata, } from '@deckflow/deckuse-edition-config';
1
+ export { EDITION, EDITION_VARIANT, DISTRIBUTION_CHANNEL, editionCapabilities, editionMetadata, } from './edition-config/index.js';
2
2
  //# sourceMappingURL=edition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edition.js","sourceRoot":"","sources":["../src/edition.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,OAAO,EACP,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,GAChB,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"edition.js","sourceRoot":"","sources":["../src/edition.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,OAAO,EACP,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,GAChB,MAAM,2BAA2B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,SAAS,QAgCrB,CAAC;AAkqBF,2EAA2E;AAC3E,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,EAAE,KAAG,MAwB7C,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,EAAE,KAAG,MAAM,EAAE,GAAG,IAW9D,CAAC"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,SAAS,QAiCrB,CAAC;AAowBF,2EAA2E;AAC3E,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,EAAE,KAAG,MAsB7C,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,EAAE,KAAG,MAAM,EAAE,GAAG,IAa9D,CAAC"}