@usejunior/odf-core 0.9.1 → 0.11.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 (56) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +2 -0
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/compare/emit.d.ts +8 -3
  5. package/dist/compare/emit.d.ts.map +1 -1
  6. package/dist/compare/emit.js +39 -7
  7. package/dist/compare/emit.js.map +1 -1
  8. package/dist/compare/inline_diff.d.ts +5 -0
  9. package/dist/compare/inline_diff.d.ts.map +1 -1
  10. package/dist/compare/inline_diff.js +71 -1
  11. package/dist/compare/inline_diff.js.map +1 -1
  12. package/dist/convert/docx_to_odt.d.ts +20 -0
  13. package/dist/convert/docx_to_odt.d.ts.map +1 -0
  14. package/dist/convert/docx_to_odt.js +199 -0
  15. package/dist/convert/docx_to_odt.js.map +1 -0
  16. package/dist/convert/index.d.ts +3 -0
  17. package/dist/convert/index.d.ts.map +1 -0
  18. package/dist/convert/index.js +2 -0
  19. package/dist/convert/index.js.map +1 -0
  20. package/dist/convert/inline.d.ts +55 -0
  21. package/dist/convert/inline.d.ts.map +1 -0
  22. package/dist/convert/inline.js +274 -0
  23. package/dist/convert/inline.js.map +1 -0
  24. package/dist/convert/lists.d.ts +41 -0
  25. package/dist/convert/lists.d.ts.map +1 -0
  26. package/dist/convert/lists.js +137 -0
  27. package/dist/convert/lists.js.map +1 -0
  28. package/dist/convert/package.d.ts +54 -0
  29. package/dist/convert/package.d.ts.map +1 -0
  30. package/dist/convert/package.js +232 -0
  31. package/dist/convert/package.js.map +1 -0
  32. package/dist/convert/paragraph_styles.d.ts +25 -0
  33. package/dist/convert/paragraph_styles.d.ts.map +1 -0
  34. package/dist/convert/paragraph_styles.js +63 -0
  35. package/dist/convert/paragraph_styles.js.map +1 -0
  36. package/dist/convert/tables.d.ts +44 -0
  37. package/dist/convert/tables.d.ts.map +1 -0
  38. package/dist/convert/tables.js +226 -0
  39. package/dist/convert/tables.js.map +1 -0
  40. package/dist/convert/types.d.ts +27 -0
  41. package/dist/convert/types.d.ts.map +1 -0
  42. package/dist/convert/types.js +25 -0
  43. package/dist/convert/types.js.map +1 -0
  44. package/dist/index.d.ts +1 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +1 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/shared/odf/OdfArchive.d.ts +16 -0
  49. package/dist/shared/odf/OdfArchive.d.ts.map +1 -1
  50. package/dist/shared/odf/OdfArchive.js +48 -1
  51. package/dist/shared/odf/OdfArchive.js.map +1 -1
  52. package/dist/shared/odf/namespaces.d.ts +4 -0
  53. package/dist/shared/odf/namespaces.d.ts.map +1 -1
  54. package/dist/shared/odf/namespaces.js +8 -0
  55. package/dist/shared/odf/namespaces.js.map +1 -1
  56. package/package.json +5 -4
@@ -0,0 +1,27 @@
1
+ /** Options and result types for {@link convertDocxToOdt}, plus the lossiness collector. */
2
+ export interface ConvertDocxToOdtOptions {
3
+ metadata?: {
4
+ title?: string;
5
+ generator?: string;
6
+ };
7
+ }
8
+ /** One downgraded construct class and how often it was hit. */
9
+ export interface LossinessEntry {
10
+ construct: string;
11
+ count: number;
12
+ detail?: string;
13
+ }
14
+ export interface ConvertDocxToOdtResult {
15
+ odt: Buffer;
16
+ lossiness: LossinessEntry[];
17
+ }
18
+ /**
19
+ * Accumulates downgraded constructs during a conversion. Conversion is intentionally lossy,
20
+ * but every drop must be reported — `detail` keeps the first concrete example per construct.
21
+ */
22
+ export declare class LossinessCollector {
23
+ private entries;
24
+ add(construct: string, detail?: string): void;
25
+ toArray(): LossinessEntry[];
26
+ }
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/convert/types.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAE3F,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAED,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAyD;IAExE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAS7C,OAAO,IAAI,cAAc,EAAE;CAO5B"}
@@ -0,0 +1,25 @@
1
+ /** Options and result types for {@link convertDocxToOdt}, plus the lossiness collector. */
2
+ /**
3
+ * Accumulates downgraded constructs during a conversion. Conversion is intentionally lossy,
4
+ * but every drop must be reported — `detail` keeps the first concrete example per construct.
5
+ */
6
+ export class LossinessCollector {
7
+ entries = new Map();
8
+ add(construct, detail) {
9
+ const existing = this.entries.get(construct);
10
+ if (existing) {
11
+ existing.count += 1;
12
+ }
13
+ else {
14
+ this.entries.set(construct, { count: 1, detail });
15
+ }
16
+ }
17
+ toArray() {
18
+ return Array.from(this.entries.entries(), ([construct, { count, detail }]) => ({
19
+ construct,
20
+ count,
21
+ ...(detail !== undefined ? { detail } : {}),
22
+ }));
23
+ }
24
+ }
25
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/convert/types.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAkB3F;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACrB,OAAO,GAAG,IAAI,GAAG,EAA8C,CAAC;IAExE,GAAG,CAAC,SAAiB,EAAE,MAAe;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7E,SAAS;YACT,KAAK;YACL,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -4,4 +4,5 @@ export { type OdfComment } from './comments.js';
4
4
  export { compareOdf, OdfEmitError, type OdfCompareResult, type OdfCompareStats, type OdfCompareOptions, } from './compare/index.js';
5
5
  export { validateOdfArchiveSafety, type OdfArchiveSafetyResult } from './odf_archive_safety.js';
6
6
  export { ODF_NS, ODF_PATHS, ODT_MIMETYPE } from './shared/odf/namespaces.js';
7
+ export { convertDocxToOdt, type ConvertDocxToOdtOptions, type ConvertDocxToOdtResult, type LossinessEntry, } from './convert/index.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,cAAc,GACpB,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -3,4 +3,5 @@ export { OdfDocument, } from './document.js';
3
3
  export { compareOdf, OdfEmitError, } from './compare/index.js';
4
4
  export { validateOdfArchiveSafety } from './odf_archive_safety.js';
5
5
  export { ODF_NS, ODF_PATHS, ODT_MIMETYPE } from './shared/odf/namespaces.js';
6
+ export { convertDocxToOdt, } from './convert/index.js';
6
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,WAAW,GAMZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,UAAU,EACV,YAAY,GAIb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAA+B,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,WAAW,GAMZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,UAAU,EACV,YAAY,GAIb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAA+B,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EACL,gBAAgB,GAIjB,MAAM,oBAAoB,CAAC"}
@@ -14,6 +14,12 @@
14
14
  * entry's decompressed content. `save()` below does exactly that. Do not "optimize"
15
15
  * it back into re-saving the loaded handle.
16
16
  */
17
+ /** Parts accepted by {@link OdfArchive.create}. `content.xml` is the only required one. */
18
+ export interface OdfArchiveCreateParts {
19
+ contentXml: string;
20
+ stylesXml?: string;
21
+ metaXml?: string;
22
+ }
17
23
  export declare class OdfArchive {
18
24
  private zip;
19
25
  private modified;
@@ -23,6 +29,16 @@ export declare class OdfArchive {
23
29
  * required `content.xml` or `META-INF/manifest.xml` parts.
24
30
  */
25
31
  static load(buffer: Buffer): Promise<OdfArchive>;
32
+ /**
33
+ * Create a fresh ODT package from XML parts.
34
+ *
35
+ * `META-INF/manifest.xml` is generated from the provided parts, and the
36
+ * mimetype-first + STORE discipline is `save()`'s responsibility (the fresh
37
+ * JSZip here is rebuilt on save like any loaded archive). The result satisfies
38
+ * `load()`'s content/manifest requirements, so `create(...)` → `save()` →
39
+ * `load(...)` round-trips.
40
+ */
41
+ static create(parts: OdfArchiveCreateParts): OdfArchive;
26
42
  /** Get `content.xml` as a string. */
27
43
  getContentXml(): Promise<string>;
28
44
  /** Replace `content.xml`. */
@@ -1 +1 @@
1
- {"version":3,"file":"OdfArchive.d.ts","sourceRoot":"","sources":["../../../src/shared/odf/OdfArchive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,QAAQ,CAA0B;IAE1C,OAAO;IAIP;;;OAGG;WACU,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAWtD,qCAAqC;IAC/B,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAQtC,6BAA6B;IAC7B,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKhC,4DAA4D;IACtD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMnD,6BAA6B;IAC7B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAK5C,6BAA6B;IAC7B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B,yDAAyD;IACzD,SAAS,IAAI,MAAM,EAAE;IAQrB,iCAAiC;IACjC,gBAAgB,IAAI,MAAM,EAAE;IAI5B;;;;;;;OAOG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;CA6B9B"}
1
+ {"version":3,"file":"OdfArchive.d.ts","sourceRoot":"","sources":["../../../src/shared/odf/OdfArchive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,2FAA2F;AAC3F,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAyBD,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,QAAQ,CAA0B;IAE1C,OAAO;IAIP;;;OAGG;WACU,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAWtD;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,qBAAqB,GAAG,UAAU;IAqBvD,qCAAqC;IAC/B,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAQtC,6BAA6B;IAC7B,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKhC,4DAA4D;IACtD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMnD,6BAA6B;IAC7B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAK5C,6BAA6B;IAC7B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B,yDAAyD;IACzD,SAAS,IAAI,MAAM,EAAE;IAQrB,iCAAiC;IACjC,gBAAgB,IAAI,MAAM,EAAE;IAI5B;;;;;;;OAOG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;CA6B9B"}
@@ -15,7 +15,25 @@
15
15
  * it back into re-saving the loaded handle.
16
16
  */
17
17
  import JSZip from 'jszip';
18
- import { ODF_PATHS, ODT_MIMETYPE } from './namespaces.js';
18
+ import { ODF_NS, ODF_PATHS, ODT_MIMETYPE } from './namespaces.js';
19
+ const PART_MEDIA_TYPES = {
20
+ [ODF_PATHS.CONTENT]: 'text/xml',
21
+ [ODF_PATHS.STYLES]: 'text/xml',
22
+ [ODF_PATHS.META]: 'text/xml',
23
+ };
24
+ function buildManifestXml(partPaths) {
25
+ const entries = [
26
+ ` <manifest:file-entry manifest:full-path="/" manifest:version="1.3" manifest:media-type="${ODT_MIMETYPE}"/>`,
27
+ ...partPaths.map((p) => ` <manifest:file-entry manifest:full-path="${p}" manifest:media-type="${PART_MEDIA_TYPES[p] ?? 'text/xml'}"/>`),
28
+ ];
29
+ return [
30
+ '<?xml version="1.0" encoding="UTF-8"?>',
31
+ `<manifest:manifest xmlns:manifest="${ODF_NS.MANIFEST}" manifest:version="1.3">`,
32
+ ...entries,
33
+ '</manifest:manifest>',
34
+ '',
35
+ ].join('\n');
36
+ }
19
37
  export class OdfArchive {
20
38
  zip;
21
39
  modified = new Set();
@@ -36,6 +54,35 @@ export class OdfArchive {
36
54
  }
37
55
  return new OdfArchive(zip);
38
56
  }
57
+ /**
58
+ * Create a fresh ODT package from XML parts.
59
+ *
60
+ * `META-INF/manifest.xml` is generated from the provided parts, and the
61
+ * mimetype-first + STORE discipline is `save()`'s responsibility (the fresh
62
+ * JSZip here is rebuilt on save like any loaded archive). The result satisfies
63
+ * `load()`'s content/manifest requirements, so `create(...)` → `save()` →
64
+ * `load(...)` round-trips.
65
+ */
66
+ static create(parts) {
67
+ const zip = new JSZip();
68
+ zip.file(ODF_PATHS.MIMETYPE, ODT_MIMETYPE, { compression: 'STORE' });
69
+ const partPaths = [ODF_PATHS.CONTENT];
70
+ zip.file(ODF_PATHS.CONTENT, parts.contentXml);
71
+ if (parts.stylesXml !== undefined) {
72
+ zip.file(ODF_PATHS.STYLES, parts.stylesXml);
73
+ partPaths.push(ODF_PATHS.STYLES);
74
+ }
75
+ if (parts.metaXml !== undefined) {
76
+ zip.file(ODF_PATHS.META, parts.metaXml);
77
+ partPaths.push(ODF_PATHS.META);
78
+ }
79
+ zip.file(ODF_PATHS.MANIFEST, buildManifestXml(partPaths));
80
+ const archive = new OdfArchive(zip);
81
+ for (const p of [ODF_PATHS.MIMETYPE, ODF_PATHS.MANIFEST, ...partPaths]) {
82
+ archive.modified.add(p);
83
+ }
84
+ return archive;
85
+ }
39
86
  /** Get `content.xml` as a string. */
40
87
  async getContentXml() {
41
88
  const file = this.zip.file(ODF_PATHS.CONTENT);
@@ -1 +1 @@
1
- {"version":3,"file":"OdfArchive.js","sourceRoot":"","sources":["../../../src/shared/odf/OdfArchive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OdfArchive.js","sourceRoot":"","sources":["../../../src/shared/odf/OdfArchive.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,10 @@ export declare const ODF_NS: {
13
13
  readonly MANIFEST: "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0";
14
14
  readonly DC: "http://purl.org/dc/elements/1.1/";
15
15
  readonly XML: "http://www.w3.org/XML/1998/namespace";
16
+ readonly FO: "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0";
17
+ readonly XLINK: "http://www.w3.org/1999/xlink";
18
+ readonly SVG: "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0";
19
+ readonly META: "urn:oasis:names:tc:opendocument:xmlns:meta:1.0";
16
20
  };
17
21
  /** The mimetype value an OpenDocument text package declares. */
18
22
  export declare const ODT_MIMETYPE = "application/vnd.oasis.opendocument.text";
@@ -1 +1 @@
1
- {"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../../../src/shared/odf/namespaces.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,MAAM;;;;;;;;CAUT,CAAC;AAEX,gEAAgE;AAChE,eAAO,MAAM,YAAY,4CAA4C,CAAC;AAEtE,iDAAiD;AACjD,eAAO,MAAM,SAAS;;;;;;CAMZ,CAAC"}
1
+ {"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../../../src/shared/odf/namespaces.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;CAkBT,CAAC;AAEX,gEAAgE;AAChE,eAAO,MAAM,YAAY,4CAA4C,CAAC;AAEtE,iDAAiD;AACjD,eAAO,MAAM,SAAS;;;;;;CAMZ,CAAC"}
@@ -15,6 +15,14 @@ export const ODF_NS = {
15
15
  DC: 'http://purl.org/dc/elements/1.1/',
16
16
  // W3C XML namespace — carries `xml:id` on `text:changed-region` for tracked changes.
17
17
  XML: 'http://www.w3.org/XML/1998/namespace',
18
+ // XSL-FO-compatible properties (`fo:font-weight`, `fo:font-style`, …) used by style definitions.
19
+ FO: 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0',
20
+ // XLink — carries `xlink:href` on `text:a` hyperlinks.
21
+ XLINK: 'http://www.w3.org/1999/xlink',
22
+ // SVG-compatible properties (`svg:font-family` on `style:font-face` declarations).
23
+ SVG: 'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0',
24
+ // ODF meta elements (`meta:generator`) in `meta.xml`.
25
+ META: 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0',
18
26
  };
19
27
  /** The mimetype value an OpenDocument text package declares. */
20
28
  export const ODT_MIMETYPE = 'application/vnd.oasis.opendocument.text';
@@ -1 +1 @@
1
- {"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../../../src/shared/odf/namespaces.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE,kDAAkD;IAC1D,IAAI,EAAE,gDAAgD;IACtD,KAAK,EAAE,iDAAiD;IACxD,KAAK,EAAE,iDAAiD;IACxD,QAAQ,EAAE,oDAAoD;IAC9D,sFAAsF;IACtF,EAAE,EAAE,kCAAkC;IACtC,qFAAqF;IACrF,GAAG,EAAE,sCAAsC;CACnC,CAAC;AAEX,gEAAgE;AAChE,MAAM,CAAC,MAAM,YAAY,GAAG,yCAAyC,CAAC;AAEtE,iDAAiD;AACjD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,uBAAuB;CACzB,CAAC"}
1
+ {"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../../../src/shared/odf/namespaces.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE,kDAAkD;IAC1D,IAAI,EAAE,gDAAgD;IACtD,KAAK,EAAE,iDAAiD;IACxD,KAAK,EAAE,iDAAiD;IACxD,QAAQ,EAAE,oDAAoD;IAC9D,sFAAsF;IACtF,EAAE,EAAE,kCAAkC;IACtC,qFAAqF;IACrF,GAAG,EAAE,sCAAsC;IAC3C,iGAAiG;IACjG,EAAE,EAAE,6DAA6D;IACjE,uDAAuD;IACvD,KAAK,EAAE,8BAA8B;IACrC,mFAAmF;IACnF,GAAG,EAAE,0DAA0D;IAC/D,sDAAsD;IACtD,IAAI,EAAE,gDAAgD;CAC9C,CAAC;AAEX,gEAAgE;AAChE,MAAM,CAAC,MAAM,YAAY,GAAG,yCAAyC,CAAC;AAEtE,iDAAiD;AACjD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,uBAAuB;CACzB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usejunior/odf-core",
3
- "version": "0.9.1",
3
+ "version": "0.11.0",
4
4
  "description": "OpenDocument Format (.odt) core library: archive packaging, document view, surgical text replacement, and tracked-changes comparison",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -14,7 +14,7 @@
14
14
  "lint": "tsc --noEmit"
15
15
  },
16
16
  "dependencies": {
17
- "@usejunior/docx-core": "^0.9.1",
17
+ "@usejunior/docx-core": "^0.11.0",
18
18
  "@xmldom/xmldom": "^0.9.10",
19
19
  "jszip": "^3.10.1"
20
20
  },
@@ -38,7 +38,8 @@
38
38
  "access": "public"
39
39
  },
40
40
  "files": [
41
- "dist"
41
+ "dist",
42
+ "NOTICE"
42
43
  ],
43
44
  "keywords": [
44
45
  "odf",
@@ -50,5 +51,5 @@
50
51
  "document-editing",
51
52
  "mcp"
52
53
  ],
53
- "license": "MIT"
54
+ "license": "Apache-2.0"
54
55
  }