@deckflow/deckuse 1.2.0 → 1.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 (281) 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 +401 -0
  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 +183 -19
  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 +3035 -0
  38. package/dist/core/schema.d.ts.map +1 -0
  39. package/dist/core/schema.js +798 -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.js +1 -1
  129. package/dist/monitor.js.map +1 -1
  130. package/dist/numbers/index.d.ts +2 -0
  131. package/dist/numbers/index.d.ts.map +1 -0
  132. package/dist/numbers/index.js +3 -0
  133. package/dist/numbers/index.js.map +1 -0
  134. package/dist/opc/index.d.ts +90 -0
  135. package/dist/opc/index.d.ts.map +1 -0
  136. package/dist/opc/index.js +569 -0
  137. package/dist/opc/index.js.map +1 -0
  138. package/dist/pptx/adapter.d.ts +167 -0
  139. package/dist/pptx/adapter.d.ts.map +1 -0
  140. package/dist/pptx/adapter.js +807 -0
  141. package/dist/pptx/adapter.js.map +1 -0
  142. package/dist/pptx/addressing.d.ts +45 -0
  143. package/dist/pptx/addressing.d.ts.map +1 -0
  144. package/dist/pptx/addressing.js +428 -0
  145. package/dist/pptx/addressing.js.map +1 -0
  146. package/dist/pptx/align.d.ts +24 -0
  147. package/dist/pptx/align.d.ts.map +1 -0
  148. package/dist/pptx/align.js +112 -0
  149. package/dist/pptx/align.js.map +1 -0
  150. package/dist/pptx/chart-classify.d.ts +10 -0
  151. package/dist/pptx/chart-classify.d.ts.map +1 -0
  152. package/dist/pptx/chart-classify.js +58 -0
  153. package/dist/pptx/chart-classify.js.map +1 -0
  154. package/dist/pptx/chart.d.ts +42 -0
  155. package/dist/pptx/chart.d.ts.map +1 -0
  156. package/dist/pptx/chart.js +614 -0
  157. package/dist/pptx/chart.js.map +1 -0
  158. package/dist/pptx/edition-extension.d.ts +25 -0
  159. package/dist/pptx/edition-extension.d.ts.map +1 -0
  160. package/dist/pptx/edition-extension.js +10 -0
  161. package/dist/pptx/edition-extension.js.map +1 -0
  162. package/dist/pptx/edition.d.ts +20 -0
  163. package/dist/pptx/edition.d.ts.map +1 -0
  164. package/dist/pptx/edition.js +69 -0
  165. package/dist/pptx/edition.js.map +1 -0
  166. package/dist/pptx/elements.d.ts +12 -0
  167. package/dist/pptx/elements.d.ts.map +1 -0
  168. package/dist/pptx/elements.js +224 -0
  169. package/dist/pptx/elements.js.map +1 -0
  170. package/dist/pptx/hyperlink.d.ts +7 -0
  171. package/dist/pptx/hyperlink.d.ts.map +1 -0
  172. package/dist/pptx/hyperlink.js +81 -0
  173. package/dist/pptx/hyperlink.js.map +1 -0
  174. package/dist/pptx/index-sync.d.ts +7 -0
  175. package/dist/pptx/index-sync.d.ts.map +1 -0
  176. package/dist/pptx/index-sync.js +24 -0
  177. package/dist/pptx/index-sync.js.map +1 -0
  178. package/dist/pptx/index.d.ts +10 -0
  179. package/dist/pptx/index.d.ts.map +1 -0
  180. package/dist/pptx/index.js +7 -0
  181. package/dist/pptx/index.js.map +1 -0
  182. package/dist/pptx/indexer.d.ts +19 -0
  183. package/dist/pptx/indexer.d.ts.map +1 -0
  184. package/dist/pptx/indexer.js +319 -0
  185. package/dist/pptx/indexer.js.map +1 -0
  186. package/dist/pptx/layout-ref.d.ts +41 -0
  187. package/dist/pptx/layout-ref.d.ts.map +1 -0
  188. package/dist/pptx/layout-ref.js +145 -0
  189. package/dist/pptx/layout-ref.js.map +1 -0
  190. package/dist/pptx/media.d.ts +15 -0
  191. package/dist/pptx/media.d.ts.map +1 -0
  192. package/dist/pptx/media.js +145 -0
  193. package/dist/pptx/media.js.map +1 -0
  194. package/dist/pptx/mutations.d.ts +11 -0
  195. package/dist/pptx/mutations.d.ts.map +1 -0
  196. package/dist/pptx/mutations.js +1111 -0
  197. package/dist/pptx/mutations.js.map +1 -0
  198. package/dist/pptx/picture.d.ts +25 -0
  199. package/dist/pptx/picture.d.ts.map +1 -0
  200. package/dist/pptx/picture.js +118 -0
  201. package/dist/pptx/picture.js.map +1 -0
  202. package/dist/pptx/placeholder-role.d.ts +19 -0
  203. package/dist/pptx/placeholder-role.d.ts.map +1 -0
  204. package/dist/pptx/placeholder-role.js +71 -0
  205. package/dist/pptx/placeholder-role.js.map +1 -0
  206. package/dist/pptx/properties.d.ts +13 -0
  207. package/dist/pptx/properties.d.ts.map +1 -0
  208. package/dist/pptx/properties.js +587 -0
  209. package/dist/pptx/properties.js.map +1 -0
  210. package/dist/pptx/resolve-properties.d.ts +17 -0
  211. package/dist/pptx/resolve-properties.d.ts.map +1 -0
  212. package/dist/pptx/resolve-properties.js +571 -0
  213. package/dist/pptx/resolve-properties.js.map +1 -0
  214. package/dist/pptx/slide-size.d.ts +9 -0
  215. package/dist/pptx/slide-size.d.ts.map +1 -0
  216. package/dist/pptx/slide-size.js +29 -0
  217. package/dist/pptx/slide-size.js.map +1 -0
  218. package/dist/pptx/slides.d.ts +15 -0
  219. package/dist/pptx/slides.d.ts.map +1 -0
  220. package/dist/pptx/slides.js +236 -0
  221. package/dist/pptx/slides.js.map +1 -0
  222. package/dist/pptx/table-measure.d.ts +43 -0
  223. package/dist/pptx/table-measure.d.ts.map +1 -0
  224. package/dist/pptx/table-measure.js +70 -0
  225. package/dist/pptx/table-measure.js.map +1 -0
  226. package/dist/pptx/table.d.ts +23 -0
  227. package/dist/pptx/table.d.ts.map +1 -0
  228. package/dist/pptx/table.js +529 -0
  229. package/dist/pptx/table.js.map +1 -0
  230. package/dist/pptx/types.d.ts +27 -0
  231. package/dist/pptx/types.d.ts.map +1 -0
  232. package/dist/pptx/types.js +2 -0
  233. package/dist/pptx/types.js.map +1 -0
  234. package/dist/pptx/workspace.d.ts +23 -0
  235. package/dist/pptx/workspace.d.ts.map +1 -0
  236. package/dist/pptx/workspace.js +148 -0
  237. package/dist/pptx/workspace.js.map +1 -0
  238. package/dist/pptx/xml.d.ts +67 -0
  239. package/dist/pptx/xml.d.ts.map +1 -0
  240. package/dist/pptx/xml.js +355 -0
  241. package/dist/pptx/xml.js.map +1 -0
  242. package/dist/render.d.ts.map +1 -1
  243. package/dist/render.js +14 -2
  244. package/dist/render.js.map +1 -1
  245. package/dist/version.d.ts +1 -1
  246. package/dist/version.js +1 -1
  247. package/dist/workspace/git.d.ts +7 -0
  248. package/dist/workspace/git.d.ts.map +1 -0
  249. package/dist/workspace/git.js +82 -0
  250. package/dist/workspace/git.js.map +1 -0
  251. package/dist/workspace/index.d.ts +7 -0
  252. package/dist/workspace/index.d.ts.map +1 -0
  253. package/dist/workspace/index.js +7 -0
  254. package/dist/workspace/index.js.map +1 -0
  255. package/dist/workspace/lock.d.ts +3 -0
  256. package/dist/workspace/lock.d.ts.map +1 -0
  257. package/dist/workspace/lock.js +35 -0
  258. package/dist/workspace/lock.js.map +1 -0
  259. package/dist/workspace/metadata.d.ts +4 -0
  260. package/dist/workspace/metadata.d.ts.map +1 -0
  261. package/dist/workspace/metadata.js +21 -0
  262. package/dist/workspace/metadata.js.map +1 -0
  263. package/dist/workspace/operations.d.ts +14 -0
  264. package/dist/workspace/operations.d.ts.map +1 -0
  265. package/dist/workspace/operations.js +35 -0
  266. package/dist/workspace/operations.js.map +1 -0
  267. package/dist/workspace/paths.d.ts +11 -0
  268. package/dist/workspace/paths.d.ts.map +1 -0
  269. package/dist/workspace/paths.js +12 -0
  270. package/dist/workspace/paths.js.map +1 -0
  271. package/dist/workspace/revision.d.ts +6 -0
  272. package/dist/workspace/revision.d.ts.map +1 -0
  273. package/dist/workspace/revision.js +15 -0
  274. package/dist/workspace/revision.js.map +1 -0
  275. package/dist/xlsx/index.d.ts +2 -0
  276. package/dist/xlsx/index.d.ts.map +1 -0
  277. package/dist/xlsx/index.js +3 -0
  278. package/dist/xlsx/index.js.map +1 -0
  279. package/package.json +48 -27
  280. package/schema/command.schema.json +2399 -0
  281. package/dist/.tsbuildinfo +0 -1
package/dist/render.js CHANGED
@@ -1,10 +1,10 @@
1
- import { mkdir, mkdtemp, rm } from 'node:fs/promises';
1
+ import { mkdir, mkdtemp, readFile, rm } from 'node:fs/promises';
2
2
  import { dirname, join, relative, resolve, sep } from 'node:path';
3
3
  import { pathToFileURL } from 'node:url';
4
4
  import { tmpdir } from 'node:os';
5
5
  import office2html from '@deckflow/office2html';
6
6
  import { chromium } from 'playwright-core';
7
- import { ensureGitignore, renderDir } from '@deckflow/deckuse-workspace';
7
+ import { ensureGitignore, renderDir } from './workspace/index.js';
8
8
  import { ensureOffice2HtmlExecutable } from './office2html-exec.js';
9
9
  const PACKAGE_PPTX = 'package.pptx';
10
10
  const DEFAULT_VIEWPORT = { width: 1280, height: 720 };
@@ -83,6 +83,18 @@ export const renderPage = async (workspace, options) => {
83
83
  }
84
84
  const absoluteWorkspace = resolve(workspace);
85
85
  await ensureGitignore(absoluteWorkspace);
86
+ let snapshot = PACKAGE_PPTX;
87
+ try {
88
+ const manifest = JSON.parse(await readFile(join(absoluteWorkspace, '.deckuse', 'manifest.json'), 'utf8'));
89
+ if (manifest.format === 'docx')
90
+ snapshot = 'package.docx';
91
+ }
92
+ catch {
93
+ // Missing manifest keeps the PPTX snapshot path used by existing render callers.
94
+ }
95
+ if (snapshot === 'package.docx') {
96
+ throw new Error('DOCX page render is not available. @deckflow/office2html converts PPTX only and does not paginate Word documents. Export the .docx and open it in Word to check layout.');
97
+ }
86
98
  const output = resolve(options.output ?? joinRenderDefault(absoluteWorkspace, page));
87
99
  const packagePath = resolve(absoluteWorkspace, PACKAGE_PPTX);
88
100
  const converter = options.dependencies?.convert ?? office2html.convert;
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "1.2.0";
1
+ export declare const version = "1.3.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // Generated by scripts/generate-cli-version.mjs. Do not edit.
2
- export const version = '1.2.0';
2
+ export const version = '1.3.0';
3
3
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,7 @@
1
+ export declare const hasWorkspaceGitRepo: (workspace: string) => Promise<boolean>;
2
+ export declare const ensureGitignore: (workspace: string) => Promise<void>;
3
+ export declare const initGitRepo: (workspace: string, message: string) => Promise<string>;
4
+ export declare const commitWorkspace: (workspace: string, message: string) => Promise<string>;
5
+ export declare const resetGit: (workspace: string, steps: number) => Promise<void>;
6
+ export declare const operationCommitMessage: (operation: unknown) => string;
7
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/workspace/git.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,mBAAmB,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,OAAO,CAQ5E,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,IAAI,CAErE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,WAAW,MAAM,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAQpF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,WAAW,MAAM,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAIxF,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAU,WAAW,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAwB7E,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,WAAW,OAAO,KAAG,MAM3D,CAAC"}
@@ -0,0 +1,82 @@
1
+ import fs from 'node:fs';
2
+ import { access, unlink, writeFile } from 'node:fs/promises';
3
+ import { join, resolve } from 'node:path';
4
+ import { add, checkout, commit, currentBranch, init, log } from 'isomorphic-git';
5
+ import { gitignorePath } from './paths.js';
6
+ const WORKSPACE_GITIGNORE = `package.*
7
+ .deckuse/write.lock
8
+ .deckuse/monitor/
9
+ .deckuse/preview/
10
+ .deckuse/preview.next/
11
+ .deckuse/render/
12
+ .deckuse/*.tmp
13
+ `;
14
+ const DEFAULT_BRANCH = 'main';
15
+ const GIT_AUTHOR = {
16
+ name: 'deckuse',
17
+ email: 'deckuse@local',
18
+ };
19
+ const repoDir = (workspace) => resolve(workspace);
20
+ const repoOpts = (workspace) => ({
21
+ fs,
22
+ dir: repoDir(workspace),
23
+ });
24
+ export const hasWorkspaceGitRepo = async (workspace) => {
25
+ try {
26
+ await access(join(repoDir(workspace), '.git'));
27
+ return true;
28
+ }
29
+ catch (error) {
30
+ if (error.code === 'ENOENT')
31
+ return false;
32
+ throw error;
33
+ }
34
+ };
35
+ export const ensureGitignore = async (workspace) => {
36
+ await writeFile(gitignorePath(workspace), WORKSPACE_GITIGNORE);
37
+ };
38
+ export const initGitRepo = async (workspace, message) => {
39
+ const opts = repoOpts(workspace);
40
+ if (!(await hasWorkspaceGitRepo(workspace))) {
41
+ await init({ ...opts, defaultBranch: DEFAULT_BRANCH });
42
+ }
43
+ await ensureGitignore(workspace);
44
+ await add({ ...opts, filepath: '.' });
45
+ return commit({ ...opts, message, author: GIT_AUTHOR });
46
+ };
47
+ export const commitWorkspace = async (workspace, message) => {
48
+ const opts = repoOpts(workspace);
49
+ await add({ ...opts, filepath: '.' });
50
+ return commit({ ...opts, message, author: GIT_AUTHOR });
51
+ };
52
+ export const resetGit = async (workspace, steps) => {
53
+ const dir = repoDir(workspace);
54
+ const opts = repoOpts(workspace);
55
+ const branch = await currentBranch(opts);
56
+ if (!branch)
57
+ throw new Error('Cannot reset workspace: detached HEAD');
58
+ const commits = await log({ ...opts, depth: steps + 1 });
59
+ if (commits.length < steps + 1) {
60
+ throw new Error(`Cannot reset HEAD~${String(steps)}: only ${String(commits.length)} commit(s) available`);
61
+ }
62
+ const target = commits[commits.length - 1];
63
+ const gitdir = join(dir, '.git');
64
+ await writeFile(join(gitdir, 'refs', 'heads', branch), `${target.oid}\n`);
65
+ try {
66
+ await unlink(join(gitdir, 'index'));
67
+ }
68
+ catch (error) {
69
+ if (error.code !== 'ENOENT')
70
+ throw error;
71
+ }
72
+ await checkout({ ...opts, ref: branch, force: true });
73
+ };
74
+ export const operationCommitMessage = (operation) => {
75
+ if (typeof operation === 'object' && operation !== null) {
76
+ const type = operation['type'];
77
+ if (typeof type === 'string')
78
+ return `deckuse: ${type}`;
79
+ }
80
+ return 'deckuse: write';
81
+ };
82
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/workspace/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { sourceDir, deckuseDir, manifestPath, indexPath, operationsPath, monitorDir, previewDir, renderDir, lockPath, gitignorePath, } from './paths.js';
2
+ export { revision, nextRevision, isIntegerRevision, INITIAL_REVISION } from './revision.js';
3
+ export { hasWorkspaceGitRepo, ensureGitignore, initGitRepo, commitWorkspace, resetGit, operationCommitMessage, } from './git.js';
4
+ export { acquireWriteLock, withWriteLock } from './lock.js';
5
+ export { type OperationRecord, readOperations, writeOperations, appendOperationCommit, readHistory, } from './operations.js';
6
+ export { readManifest, writeMetadata } from './metadata.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workspace/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,UAAU,EACV,UAAU,EACV,SAAS,EACT,QAAQ,EACR,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,eAAe,EACf,QAAQ,EACR,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EACL,KAAK,eAAe,EACpB,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { sourceDir, deckuseDir, manifestPath, indexPath, operationsPath, monitorDir, previewDir, renderDir, lockPath, gitignorePath, } from './paths.js';
2
+ export { revision, nextRevision, isIntegerRevision, INITIAL_REVISION } from './revision.js';
3
+ export { hasWorkspaceGitRepo, ensureGitignore, initGitRepo, commitWorkspace, resetGit, operationCommitMessage, } from './git.js';
4
+ export { acquireWriteLock, withWriteLock } from './lock.js';
5
+ export { readOperations, writeOperations, appendOperationCommit, readHistory, } from './operations.js';
6
+ export { readManifest, writeMetadata } from './metadata.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workspace/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,UAAU,EACV,UAAU,EACV,SAAS,EACT,QAAQ,EACR,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,eAAe,EACf,QAAQ,EACR,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAEL,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const acquireWriteLock: (workspace: string) => Promise<() => Promise<void>>;
2
+ export declare const withWriteLock: <T>(workspace: string, operation: () => Promise<T>) => Promise<T>;
3
+ //# sourceMappingURL=lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/workspace/lock.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAmBrF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,CAAC,EACnC,WAAW,MAAM,EACjB,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,KAC1B,OAAO,CAAC,CAAC,CAOX,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { mkdir, open, rm } from 'node:fs/promises';
2
+ import { deckuseDir, lockPath } from './paths.js';
3
+ export const acquireWriteLock = async (workspace) => {
4
+ await mkdir(deckuseDir(workspace), { recursive: true });
5
+ const path = lockPath(workspace);
6
+ const deadline = Date.now() + 30_000;
7
+ let handle;
8
+ while (Date.now() < deadline) {
9
+ try {
10
+ handle = await open(path, 'wx');
11
+ break;
12
+ }
13
+ catch (error) {
14
+ if (error.code !== 'EEXIST')
15
+ throw error;
16
+ await new Promise((resolve) => setTimeout(resolve, 50));
17
+ }
18
+ }
19
+ if (!handle)
20
+ throw new Error('Timed out waiting for workspace write lock');
21
+ return async () => {
22
+ await handle.close();
23
+ await rm(path, { force: true });
24
+ };
25
+ };
26
+ export const withWriteLock = async (workspace, operation) => {
27
+ const release = await acquireWriteLock(workspace);
28
+ try {
29
+ return await operation();
30
+ }
31
+ finally {
32
+ await release();
33
+ }
34
+ };
35
+ //# sourceMappingURL=lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/workspace/lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,SAAiB,EAAgC,EAAE;IACxF,MAAM,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;IACrC,IAAI,MAAoD,CAAC;IACzD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChC,MAAM;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;YACpE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC3E,OAAO,KAAK,IAAI,EAAE;QAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,SAAiB,EACjB,SAA2B,EACf,EAAE;IACd,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { WorkspaceManifest } from '../core/index.js';
2
+ export declare const readManifest: (workspace: string) => Promise<WorkspaceManifest>;
3
+ export declare const writeMetadata: (workspace: string, manifest: WorkspaceManifest, index: unknown) => Promise<void>;
4
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/workspace/metadata.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,eAAO,MAAM,YAAY,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,iBAAiB,CACE,CAAC;AAEnF,eAAO,MAAM,aAAa,GACxB,WAAW,MAAM,EACjB,UAAU,iBAAiB,EAC3B,OAAO,OAAO,KACb,OAAO,CAAC,IAAI,CAcd,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
2
+ import { randomUUID } from 'node:crypto';
3
+ import { deckuseDir, indexPath, manifestPath } from './paths.js';
4
+ export const readManifest = async (workspace) => JSON.parse(await readFile(manifestPath(workspace), 'utf8'));
5
+ export const writeMetadata = async (workspace, manifest, index) => {
6
+ await mkdir(deckuseDir(workspace), { recursive: true });
7
+ const nonce = randomUUID();
8
+ const indexTmp = `${indexPath(workspace)}.${nonce}.tmp`;
9
+ const manifestTmp = `${manifestPath(workspace)}.${nonce}.tmp`;
10
+ try {
11
+ await writeFile(indexTmp, `${JSON.stringify(index, null, 2)}\n`, { flag: 'wx' });
12
+ await writeFile(manifestTmp, `${JSON.stringify(manifest, null, 2)}\n`, { flag: 'wx' });
13
+ await rename(indexTmp, indexPath(workspace));
14
+ await rename(manifestTmp, manifestPath(workspace));
15
+ }
16
+ catch (error) {
17
+ await Promise.all([rm(indexTmp, { force: true }), rm(manifestTmp, { force: true })]);
18
+ throw error;
19
+ }
20
+ };
21
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/workspace/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,SAAiB,EAA8B,EAAE,CAClF,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAsB,CAAC;AAEnF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,SAAiB,EACjB,QAA2B,EAC3B,KAAc,EACC,EAAE;IACjB,MAAM,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC;IACxD,MAAM,WAAW,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACjF,MAAM,SAAS,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvF,MAAM,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface OperationRecord {
2
+ readonly at: string;
3
+ readonly revision: string;
4
+ readonly operation: unknown;
5
+ readonly slides: number[];
6
+ }
7
+ export declare const readOperations: (workspace: string) => Promise<OperationRecord[]>;
8
+ export declare const writeOperations: (workspace: string, records: OperationRecord[]) => Promise<void>;
9
+ export declare const appendOperationCommit: (workspace: string, record: OperationRecord) => Promise<string>;
10
+ export declare const readHistory: (workspace: string, limit: number, offset: number) => Promise<{
11
+ records: OperationRecord[];
12
+ total: number;
13
+ }>;
14
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/workspace/operations.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,eAAe,EAAE,CAWjF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,WAAW,MAAM,EACjB,SAAS,eAAe,EAAE,KACzB,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,WAAW,MAAM,EACjB,QAAQ,eAAe,KACtB,OAAO,CAAC,MAAM,CAKhB,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,QAAQ,MAAM,KACb,OAAO,CAAC;IAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGvD,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
+ import { commitWorkspace, operationCommitMessage } from './git.js';
3
+ import { deckuseDir, operationsPath } from './paths.js';
4
+ export const readOperations = async (workspace) => {
5
+ try {
6
+ const raw = await readFile(operationsPath(workspace), 'utf8');
7
+ return raw
8
+ .split(/\r?\n/)
9
+ .filter(Boolean)
10
+ .map((line) => JSON.parse(line));
11
+ }
12
+ catch (error) {
13
+ if (error.code === 'ENOENT')
14
+ return [];
15
+ throw error;
16
+ }
17
+ };
18
+ export const writeOperations = async (workspace, records) => {
19
+ await mkdir(deckuseDir(workspace), { recursive: true });
20
+ const content = records.length
21
+ ? `${records.map((record) => JSON.stringify(record)).join('\n')}\n`
22
+ : '';
23
+ await writeFile(operationsPath(workspace), content);
24
+ };
25
+ export const appendOperationCommit = async (workspace, record) => {
26
+ const records = await readOperations(workspace);
27
+ records.push(record);
28
+ await writeOperations(workspace, records);
29
+ return commitWorkspace(workspace, operationCommitMessage(record.operation));
30
+ };
31
+ export const readHistory = async (workspace, limit, offset) => {
32
+ const records = await readOperations(workspace);
33
+ return { records: records.slice(offset, offset + limit), total: records.length };
34
+ };
35
+ //# sourceMappingURL=operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/workspace/operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AASxD,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,SAAiB,EAA8B,EAAE;IACpF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,GAAG;aACP,KAAK,CAAC,OAAO,CAAC;aACd,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAClE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,SAAiB,EACjB,OAA0B,EACX,EAAE;IACjB,MAAM,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM;QAC5B,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QACnE,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,SAAiB,EACjB,MAAuB,EACN,EAAE;IACnB,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,eAAe,CAAC,SAAS,EAAE,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,SAAiB,EACjB,KAAa,EACb,MAAc,EAC0C,EAAE;IAC1D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;IAChD,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACnF,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare const sourceDir: (workspace: string) => string;
2
+ export declare const deckuseDir: (workspace: string) => string;
3
+ export declare const manifestPath: (workspace: string) => string;
4
+ export declare const indexPath: (workspace: string) => string;
5
+ export declare const operationsPath: (workspace: string) => string;
6
+ export declare const monitorDir: (workspace: string) => string;
7
+ export declare const previewDir: (workspace: string) => string;
8
+ export declare const renderDir: (workspace: string) => string;
9
+ export declare const lockPath: (workspace: string) => string;
10
+ export declare const gitignorePath: (workspace: string) => string;
11
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/workspace/paths.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,GAAI,WAAW,MAAM,WAAuC,CAAC;AACnF,eAAO,MAAM,UAAU,GAAI,WAAW,MAAM,WAAyC,CAAC;AACtF,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,WAAiD,CAAC;AAChG,eAAO,MAAM,SAAS,GAAI,WAAW,MAAM,WAA8C,CAAC;AAC1F,eAAO,MAAM,cAAc,GAAI,WAAW,MAAM,WACC,CAAC;AAClD,eAAO,MAAM,UAAU,GAAI,WAAW,MAAM,WAA2C,CAAC;AACxF,eAAO,MAAM,UAAU,GAAI,WAAW,MAAM,WAA2C,CAAC;AACxF,eAAO,MAAM,SAAS,GAAI,WAAW,MAAM,WAA0C,CAAC;AACtF,eAAO,MAAM,QAAQ,GAAI,WAAW,MAAM,WAA8C,CAAC;AACzF,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,WAA2C,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { join, resolve } from 'node:path';
2
+ export const sourceDir = (workspace) => join(resolve(workspace), 'source');
3
+ export const deckuseDir = (workspace) => join(resolve(workspace), '.deckuse');
4
+ export const manifestPath = (workspace) => join(deckuseDir(workspace), 'manifest.json');
5
+ export const indexPath = (workspace) => join(deckuseDir(workspace), 'index.json');
6
+ export const operationsPath = (workspace) => join(deckuseDir(workspace), 'operations.jsonl');
7
+ export const monitorDir = (workspace) => join(deckuseDir(workspace), 'monitor');
8
+ export const previewDir = (workspace) => join(deckuseDir(workspace), 'preview');
9
+ export const renderDir = (workspace) => join(deckuseDir(workspace), 'render');
10
+ export const lockPath = (workspace) => join(deckuseDir(workspace), 'write.lock');
11
+ export const gitignorePath = (workspace) => join(resolve(workspace), '.gitignore');
12
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/workspace/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AACnF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC;AAChG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAE,EAAE,CAClD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAClD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;AACxF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;AACxF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;AACzF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Monotonic integer revision as a decimal string (index/manifest stay string-typed). */
2
+ export declare const INITIAL_REVISION = "1";
3
+ export declare const revision: () => string;
4
+ export declare const nextRevision: (current: string) => string;
5
+ export declare const isIntegerRevision: (value: string) => boolean;
6
+ //# sourceMappingURL=revision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revision.d.ts","sourceRoot":"","sources":["../../src/workspace/revision.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,eAAO,MAAM,QAAQ,QAAO,MAA0B,CAAC;AAEvD,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,MAK9C,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,OAGjD,CAAC"}
@@ -0,0 +1,15 @@
1
+ /** Monotonic integer revision as a decimal string (index/manifest stay string-typed). */
2
+ export const INITIAL_REVISION = '1';
3
+ export const revision = () => INITIAL_REVISION;
4
+ export const nextRevision = (current) => {
5
+ const n = Number(current);
6
+ if (Number.isInteger(n) && n >= 0)
7
+ return String(n + 1);
8
+ // Legacy non-integer revisions: start a new integer line after the write.
9
+ return INITIAL_REVISION;
10
+ };
11
+ export const isIntegerRevision = (value) => {
12
+ const n = Number(value);
13
+ return Number.isInteger(n) && n >= 1 && String(n) === value;
14
+ };
15
+ //# sourceMappingURL=revision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revision.js","sourceRoot":"","sources":["../../src/workspace/revision.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEpC,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAW,EAAE,CAAC,gBAAgB,CAAC;AAEvD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAU,EAAE;IACtD,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,0EAA0E;IAC1E,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAW,EAAE;IAC1D,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;AAC9D,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const xlsxAdapter: import("../core/adapter.js").FormatAdapter;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/xlsx/index.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,4CAAsC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { createNotImplementedAdapter } from '../core/index.js';
2
+ export const xlsxAdapter = createNotImplementedAdapter('xlsx');
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/xlsx/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,MAAM,CAAC,MAAM,WAAW,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@deckflow/deckuse",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "license": "AGPL-3.0",
5
5
  "type": "module",
6
6
  "private": false,
7
+ "packageManager": "pnpm@10.6.3",
8
+ "engines": {
9
+ "node": ">=20.19.0"
10
+ },
7
11
  "exports": {
8
12
  ".": {
9
13
  "types": "./dist/index.d.ts",
@@ -12,40 +16,57 @@
12
16
  "./bin": {
13
17
  "types": "./dist/bin.d.ts",
14
18
  "import": "./dist/bin.js"
15
- }
19
+ },
20
+ "./schema/command.json": "./schema/command.schema.json"
16
21
  },
17
22
  "files": [
18
- "dist"
23
+ "dist",
24
+ "assets",
25
+ "schema"
19
26
  ],
20
- "dependencies": {
21
- "@deckflow/office2html": "^0.3.3",
22
- "playwright-core": "^1.62.1",
23
- "@deckflow/deckuse-core": "1.2.0",
24
- "@deckflow/deckuse-docx": "0.1.2",
25
- "@deckflow/deckuse-edition-config": "1.2.0",
26
- "@deckflow/deckuse-numbers": "0.1.2",
27
- "@deckflow/deckuse-pptx": "1.2.0",
28
- "@deckflow/deckuse-xlsx": "0.1.2",
29
- "@deckflow/deckuse-key": "0.1.2",
30
- "@deckflow/deckuse-workspace": "1.1.1"
31
- },
32
- "engines": {
33
- "node": ">=18.0.0"
34
- },
35
27
  "bin": {
36
28
  "deckuse": "./dist/bin.js"
37
29
  },
30
+ "scripts": {
31
+ "prepare": "git config core.hooksPath .githooks || true",
32
+ "build": "node scripts/generate-cli-version.mjs && tsc && node scripts/generate-schema.mjs",
33
+ "prepack": "node scripts/sync-npm-readme.mjs",
34
+ "postpack": "node scripts/sync-npm-readme.mjs --restore",
35
+ "lint": "eslint .",
36
+ "typecheck": "tsc --pretty false",
37
+ "test": "vitest run",
38
+ "test:integration-writes": "node scripts/integration-writes.mjs",
39
+ "format": "prettier --write .",
40
+ "format:check": "prettier --check .",
41
+ "check:no-commercial-leak": "node scripts/assert-no-commercial-leak.mjs",
42
+ "install:global": "node scripts/install-global.mjs",
43
+ "uninstall:global": "node scripts/uninstall-global.mjs",
44
+ "changeset": "changeset",
45
+ "version-packages": "changeset version",
46
+ "release": "pnpm build && pnpm check:no-commercial-leak && node scripts/sync-npm-readme.mjs && changeset publish && node scripts/sync-npm-readme.mjs --restore"
47
+ },
48
+ "dependencies": {
49
+ "@deckflow/office2html": "^0.3.5",
50
+ "@xmldom/xmldom": "^0.9.10",
51
+ "@zip.js/zip.js": "^2.8.34",
52
+ "isomorphic-git": "latest",
53
+ "playwright-core": "^1.62.1",
54
+ "zod": "latest"
55
+ },
38
56
  "devDependencies": {
39
- "@deckflow/deckuse-opc": "1.1.0"
57
+ "@changesets/cli": "latest",
58
+ "@eslint/js": "latest",
59
+ "@types/node": "latest",
60
+ "eslint": "latest",
61
+ "eslint-config-prettier": "latest",
62
+ "prettier": "latest",
63
+ "typescript": "^5.9.3",
64
+ "typescript-eslint": "latest",
65
+ "vitest": "latest"
40
66
  },
41
67
  "repository": {
42
68
  "type": "git",
43
- "url": "git+https://github.com/deckflow/deckuse.git",
44
- "directory": "packages/deckuse"
69
+ "url": "git+https://github.com/deckflow/deckuse.git"
45
70
  },
46
- "homepage": "https://github.com/deckflow/deckuse#readme",
47
- "scripts": {
48
- "build": "node ../../scripts/generate-cli-version.mjs && tsc -b",
49
- "typecheck": "tsc -b --pretty false"
50
- }
51
- }
71
+ "homepage": "https://github.com/deckflow/deckuse#readme"
72
+ }