open-agreements 0.7.6 → 0.8.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.
- package/LICENSE +201 -21
- package/README.de.md +16 -29
- package/README.es.md +16 -29
- package/README.md +45 -54
- package/README.pt-br.md +16 -29
- package/README.template.md +19 -25
- package/README.zh.md +16 -29
- package/content/recipes/nvca-certificate-of-incorporation/fields/acquisition_exception_shares.json +36 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/adjustment_notice_days.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/common_shares_authorized.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/company_name.json +29 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/conversion_notice_days.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/dividend_formula_alt.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/dividend_rate_per_share.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/dividend_rate_percent.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/effective_date.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/number_of_classes.json +29 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/original_issue_price.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/par_value.json +36 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/preferred_director_seats.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/preferred_shares_authorized.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/preferred_shares_designated_portion.json +29 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/preferred_shares_outstanding_threshold.json +29 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/qualified_financing_notice_days.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/redemption_interest_rate.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/redemption_start_date.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/registered_agent_address.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/registered_agent_name.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/series_designation.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/signature_page_marker.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/specify_percentage.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/strategic_partnership_exception_shares.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/time_zone.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/fields/total_authorized_shares.json +22 -0
- package/content/recipes/nvca-certificate-of-incorporation/template-manifest.json +77 -0
- package/content/recipes/nvca-stock-purchase-agreement/fields/agreement_date_month_day.json +27 -0
- package/content/recipes/nvca-stock-purchase-agreement/fields/agreement_year_two_digits.json +27 -0
- package/content/recipes/nvca-stock-purchase-agreement/fields/company_name.json +25 -0
- package/content/recipes/nvca-stock-purchase-agreement/fields/investor_counsel.json +27 -0
- package/content/recipes/nvca-stock-purchase-agreement/fields/minimum_shares_initial_closing.json +39 -0
- package/content/recipes/nvca-stock-purchase-agreement/fields/optional_plural_suffix.json +27 -0
- package/content/recipes/nvca-stock-purchase-agreement/fields/par_value_per_share.json +28 -0
- package/content/recipes/nvca-stock-purchase-agreement/fields/purchase_price_per_share.json +28 -0
- package/content/recipes/nvca-stock-purchase-agreement/fields/series_designation.json +159 -0
- package/content/recipes/nvca-stock-purchase-agreement/metadata.yaml +1 -1
- package/content/recipes/nvca-stock-purchase-agreement/template-manifest.json +24 -0
- package/content/templates/bonterms-mutual-nda/template.docx +0 -0
- package/content/templates/openagreements-board-consent-safe/.template.generated.json +0 -1
- package/content/templates/openagreements-due-diligence-request-list/template.docx +0 -0
- package/content/templates/openagreements-due-diligence-request-list/template.md +1 -1
- package/content/templates/openagreements-employee-ip-inventions-assignment/.template.generated.json +9 -5
- package/content/templates/openagreements-employee-ip-inventions-assignment/README.md +2 -0
- package/content/templates/openagreements-employee-ip-inventions-assignment/metadata.yaml +8 -9
- package/content/templates/openagreements-employee-ip-inventions-assignment/template.docx +0 -0
- package/content/templates/openagreements-employee-ip-inventions-assignment/template.md +3 -4
- package/content/templates/openagreements-employment-confidentiality-acknowledgement/metadata.yaml +0 -9
- package/content/templates/openagreements-employment-confidentiality-acknowledgement/template.docx +0 -0
- package/content/templates/openagreements-employment-confidentiality-acknowledgement/template.json +0 -1
- package/content/templates/openagreements-employment-offer-letter/.template.generated.json +9 -5
- package/content/templates/openagreements-employment-offer-letter/README.md +17 -5
- package/content/templates/openagreements-employment-offer-letter/metadata.yaml +8 -9
- package/content/templates/openagreements-employment-offer-letter/template.docx +0 -0
- package/content/templates/openagreements-employment-offer-letter/template.md +3 -4
- package/content/templates/openagreements-restrictive-covenant-florida/.template.generated.json +9 -5
- package/content/templates/openagreements-restrictive-covenant-florida/README.md +2 -2
- package/content/templates/openagreements-restrictive-covenant-florida/metadata.yaml +10 -12
- package/content/templates/openagreements-restrictive-covenant-florida/template.docx +0 -0
- package/content/templates/openagreements-restrictive-covenant-florida/template.md +3 -4
- package/content/templates/openagreements-restrictive-covenant-wyoming/.template.generated.json +9 -5
- package/content/templates/openagreements-restrictive-covenant-wyoming/metadata.yaml +10 -12
- package/content/templates/openagreements-restrictive-covenant-wyoming/template.docx +0 -0
- package/content/templates/openagreements-restrictive-covenant-wyoming/template.md +3 -4
- package/content/templates/openagreements-stockholder-consent-safe/.template.generated.json +0 -1
- package/dist/core/checklist/format-checklist-docx.d.ts.map +1 -1
- package/dist/core/checklist/format-checklist-docx.js +4 -1
- package/dist/core/checklist/format-checklist-docx.js.map +1 -1
- package/dist/core/engine.d.ts.map +1 -1
- package/dist/core/engine.js +2 -40
- package/dist/core/engine.js.map +1 -1
- package/dist/core/fill-pipeline.d.ts +0 -8
- package/dist/core/fill-pipeline.d.ts.map +1 -1
- package/dist/core/fill-pipeline.js +54 -38
- package/dist/core/fill-pipeline.js.map +1 -1
- package/dist/core/humanize-docx.d.ts.map +1 -1
- package/dist/core/humanize-docx.js +16 -6
- package/dist/core/humanize-docx.js.map +1 -1
- package/dist/core/recipe/bracket-normalizer.d.ts.map +1 -1
- package/dist/core/recipe/bracket-normalizer.js +3 -7
- package/dist/core/recipe/bracket-normalizer.js.map +1 -1
- package/dist/core/recipe/cleaner.js +5 -5
- package/dist/core/recipe/cleaner.js.map +1 -1
- package/dist/core/recipe/index.d.ts +1 -1
- package/dist/core/recipe/index.d.ts.map +1 -1
- package/dist/core/recipe/index.js +57 -4
- package/dist/core/recipe/index.js.map +1 -1
- package/dist/core/recipe/ooxml-parts.d.ts +11 -0
- package/dist/core/recipe/ooxml-parts.d.ts.map +1 -1
- package/dist/core/recipe/ooxml-parts.js +22 -0
- package/dist/core/recipe/ooxml-parts.js.map +1 -1
- package/dist/core/recipe/patcher.d.ts.map +1 -1
- package/dist/core/recipe/patcher.js +2 -5
- package/dist/core/recipe/patcher.js.map +1 -1
- package/dist/core/recipe/source-drift.d.ts +19 -0
- package/dist/core/recipe/source-drift.d.ts.map +1 -1
- package/dist/core/recipe/source-drift.js +32 -2
- package/dist/core/recipe/source-drift.js.map +1 -1
- package/dist/core/selector.d.ts.map +1 -1
- package/dist/core/selector.js +49 -4
- package/dist/core/selector.js.map +1 -1
- package/dist/core/selectors/index.d.ts +40 -0
- package/dist/core/selectors/index.d.ts.map +1 -0
- package/dist/core/selectors/index.js +64 -0
- package/dist/core/selectors/index.js.map +1 -0
- package/dist/core/selectors/loader.d.ts +16 -0
- package/dist/core/selectors/loader.d.ts.map +1 -0
- package/dist/core/selectors/loader.js +80 -0
- package/dist/core/selectors/loader.js.map +1 -0
- package/dist/core/selectors/manifest-schema.d.ts +123 -0
- package/dist/core/selectors/manifest-schema.d.ts.map +1 -0
- package/dist/core/selectors/manifest-schema.js +93 -0
- package/dist/core/selectors/manifest-schema.js.map +1 -0
- package/dist/core/selectors/patch.d.ts +24 -0
- package/dist/core/selectors/patch.d.ts.map +1 -0
- package/dist/core/selectors/patch.js +68 -0
- package/dist/core/selectors/patch.js.map +1 -0
- package/dist/core/selectors/postconditions.d.ts +24 -0
- package/dist/core/selectors/postconditions.d.ts.map +1 -0
- package/dist/core/selectors/postconditions.js +50 -0
- package/dist/core/selectors/postconditions.js.map +1 -0
- package/dist/core/selectors/resolve.d.ts +32 -0
- package/dist/core/selectors/resolve.d.ts.map +1 -0
- package/dist/core/selectors/resolve.js +36 -0
- package/dist/core/selectors/resolve.js.map +1 -0
- package/dist/core/unified-pipeline.d.ts +3 -1
- package/dist/core/unified-pipeline.d.ts.map +1 -1
- package/dist/core/unified-pipeline.js +23 -11
- package/dist/core/unified-pipeline.js.map +1 -1
- package/gemini-extension.json +1 -1
- package/node_modules/@usejunior/docx-core/LICENSE +202 -21
- package/node_modules/@usejunior/docx-core/NOTICE +2 -0
- package/node_modules/@usejunior/docx-core/README.md +2 -2
- package/node_modules/@usejunior/docx-core/dist/.tsbuildinfo +1 -1
- package/node_modules/@usejunior/docx-core/dist/atomizer.d.ts +55 -0
- package/node_modules/@usejunior/docx-core/dist/atomizer.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/atomizer.js +139 -14
- package/node_modules/@usejunior/docx-core/dist/atomizer.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/auxiliaryIdCollision.d.ts +99 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/auxiliaryIdCollision.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/auxiliaryIdCollision.js +415 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/auxiliaryIdCollision.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.js +403 -113
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/formattingFidelity.d.ts +99 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/formattingFidelity.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/formattingFidelity.js +449 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/formattingFidelity.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts +37 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-bookmarks.js +189 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-bookmarks.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-containers.d.ts +74 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-containers.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-containers.js +171 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-containers.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts +88 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-deletion.js +326 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-deletion.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts +85 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-postprocess.js +402 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-postprocess.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts +39 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-presplit.js +265 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-presplit.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-shared.d.ts +62 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-shared.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-shared.js +139 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-shared.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts +198 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-wrappers.js +475 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier-wrappers.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.d.ts +6 -290
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.js +23 -1828
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/pipeline.d.ts +36 -2
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/pipeline.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/pipeline.js +456 -224
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/pipeline.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/trackChangesAcceptorAst.js +199 -173
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/trackChangesAcceptorAst.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/wmlcomparer/DotnetCli.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/wmlcomparer/DotnetCli.js +7 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/wmlcomparer/DotnetCli.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/cli/compare-two.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/cli/compare-two.js +3 -1
- package/node_modules/@usejunior/docx-core/dist/cli/compare-two.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/cli/conformance-adapter.d.ts +3 -0
- package/node_modules/@usejunior/docx-core/dist/cli/conformance-adapter.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/cli/conformance-adapter.js +93 -0
- package/node_modules/@usejunior/docx-core/dist/cli/conformance-adapter.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/cli/index.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/cli/index.js +5 -1
- package/node_modules/@usejunior/docx-core/dist/cli/index.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/compare-types.d.ts +197 -0
- package/node_modules/@usejunior/docx-core/dist/compare-types.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/compare-types.js +2 -0
- package/node_modules/@usejunior/docx-core/dist/compare-types.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/core-types.d.ts +5 -1
- package/node_modules/@usejunior/docx-core/dist/core-types.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/core-types.js +5 -1
- package/node_modules/@usejunior/docx-core/dist/core-types.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/footnotes.d.ts +8 -3
- package/node_modules/@usejunior/docx-core/dist/footnotes.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/footnotes.js +8 -3
- package/node_modules/@usejunior/docx-core/dist/footnotes.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/generation/compile.d.ts +22 -0
- package/node_modules/@usejunior/docx-core/dist/generation/compile.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/compile.js +58 -0
- package/node_modules/@usejunior/docx-core/dist/generation/compile.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/context.d.ts +42 -0
- package/node_modules/@usejunior/docx-core/dist/generation/context.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/context.js +65 -0
- package/node_modules/@usejunior/docx-core/dist/generation/context.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/comments-part.d.ts +36 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/comments-part.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/comments-part.js +116 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/comments-part.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/document-part.d.ts +24 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/document-part.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/document-part.js +60 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/document-part.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/emit-context.d.ts +28 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/emit-context.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/emit-context.js +19 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/emit-context.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/font-table-part.d.ts +16 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/font-table-part.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/font-table-part.js +74 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/font-table-part.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/header-footer-part.d.ts +23 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/header-footer-part.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/header-footer-part.js +57 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/header-footer-part.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/numbering-part.d.ts +29 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/numbering-part.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/numbering-part.js +102 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/numbering-part.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/package-parts.d.ts +24 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/package-parts.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/package-parts.js +121 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/package-parts.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/paragraph.d.ts +24 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/paragraph.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/paragraph.js +63 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/paragraph.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/properties.d.ts +36 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/properties.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/properties.js +157 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/properties.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/run.d.ts +16 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/run.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/run.js +71 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/run.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/section.d.ts +29 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/section.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/section.js +117 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/section.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/settings-part.d.ts +13 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/settings-part.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/settings-part.js +68 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/settings-part.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/styles-part.d.ts +16 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/styles-part.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/styles-part.js +82 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/styles-part.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/table.d.ts +26 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/table.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/table.js +209 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/table.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/theme-part.d.ts +21 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/theme-part.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/theme-part.js +151 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/theme-part.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/web-settings-part.d.ts +12 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/web-settings-part.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/web-settings-part.js +19 -0
- package/node_modules/@usejunior/docx-core/dist/generation/emit/web-settings-part.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/errors.d.ts +22 -0
- package/node_modules/@usejunior/docx-core/dist/generation/errors.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/errors.js +29 -0
- package/node_modules/@usejunior/docx-core/dist/generation/errors.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/index.d.ts +13 -0
- package/node_modules/@usejunior/docx-core/dist/generation/index.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/index.js +12 -0
- package/node_modules/@usejunior/docx-core/dist/generation/index.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/ordering.d.ts +46 -0
- package/node_modules/@usejunior/docx-core/dist/generation/ordering.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/ordering.js +119 -0
- package/node_modules/@usejunior/docx-core/dist/generation/ordering.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/recipes.d.ts +87 -0
- package/node_modules/@usejunior/docx-core/dist/generation/recipes.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/recipes.js +232 -0
- package/node_modules/@usejunior/docx-core/dist/generation/recipes.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/structural-checks.d.ts +24 -0
- package/node_modules/@usejunior/docx-core/dist/generation/structural-checks.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/structural-checks.js +318 -0
- package/node_modules/@usejunior/docx-core/dist/generation/structural-checks.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/theme-colors.d.ts +4 -0
- package/node_modules/@usejunior/docx-core/dist/generation/theme-colors.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/theme-colors.js +18 -0
- package/node_modules/@usejunior/docx-core/dist/generation/theme-colors.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/types.d.ts +266 -0
- package/node_modules/@usejunior/docx-core/dist/generation/types.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/types.js +63 -0
- package/node_modules/@usejunior/docx-core/dist/generation/types.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/validate-spec.d.ts +27 -0
- package/node_modules/@usejunior/docx-core/dist/generation/validate-spec.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/generation/validate-spec.js +363 -0
- package/node_modules/@usejunior/docx-core/dist/generation/validate-spec.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/index.d.ts +9 -150
- package/node_modules/@usejunior/docx-core/dist/index.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/index.js +14 -0
- package/node_modules/@usejunior/docx-core/dist/index.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/integration/generation-probes.d.ts +15 -0
- package/node_modules/@usejunior/docx-core/dist/integration/generation-probes.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/integration/generation-probes.js +84 -0
- package/node_modules/@usejunior/docx-core/dist/integration/generation-probes.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/integration/libreoffice-oracle.d.ts +49 -0
- package/node_modules/@usejunior/docx-core/dist/integration/libreoffice-oracle.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/integration/libreoffice-oracle.js +290 -0
- package/node_modules/@usejunior/docx-core/dist/integration/libreoffice-oracle.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/integration/synthetic-docx-fixture.d.ts +134 -0
- package/node_modules/@usejunior/docx-core/dist/integration/synthetic-docx-fixture.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/integration/synthetic-docx-fixture.js +298 -0
- package/node_modules/@usejunior/docx-core/dist/integration/synthetic-docx-fixture.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/accept_changes.d.ts +4 -3
- package/node_modules/@usejunior/docx-core/dist/primitives/accept_changes.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/accept_changes.js +163 -77
- package/node_modules/@usejunior/docx-core/dist/primitives/accept_changes.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/comments.d.ts +12 -3
- package/node_modules/@usejunior/docx-core/dist/primitives/comments.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/comments.js +374 -97
- package/node_modules/@usejunior/docx-core/dist/primitives/comments.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/content_fingerprint.d.ts +29 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/content_fingerprint.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/content_fingerprint.js +63 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/content_fingerprint.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document.d.ts +94 -15
- package/node_modules/@usejunior/docx-core/dist/primitives/document.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/document.js +377 -234
- package/node_modules/@usejunior/docx-core/dist/primitives/document.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-comments.d.ts +18 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-comments.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-comments.js +160 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-comments.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-headings.d.ts +45 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-headings.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-headings.js +247 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-headings.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-styles.d.ts +11 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-styles.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-styles.js +104 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-styles.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-toon.d.ts +37 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-toon.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-toon.js +199 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-toon.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-types.d.ts +165 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-types.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-types.js +2 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view-types.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view.d.ts +50 -101
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view.js +287 -326
- package/node_modules/@usejunior/docx-core/dist/primitives/document_view.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.d.ts +9 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.js +10 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/footnotes.d.ts +4 -3
- package/node_modules/@usejunior/docx-core/dist/primitives/footnotes.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/footnotes.js +232 -44
- package/node_modules/@usejunior/docx-core/dist/primitives/footnotes.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/formatting_tags.d.ts +7 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/formatting_tags.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/formatting_tags.js +22 -11
- package/node_modules/@usejunior/docx-core/dist/primitives/formatting_tags.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/index.d.ts +12 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/index.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/index.js +11 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/index.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/layout.d.ts +4 -3
- package/node_modules/@usejunior/docx-core/dist/primitives/layout.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/layout.js +45 -3
- package/node_modules/@usejunior/docx-core/dist/primitives/layout.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/locator.d.ts +76 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/locator.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/locator.js +223 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/locator.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/merge_runs.d.ts +21 -3
- package/node_modules/@usejunior/docx-core/dist/primitives/merge_runs.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/merge_runs.js +32 -10
- package/node_modules/@usejunior/docx-core/dist/primitives/merge_runs.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/minimal_save.d.ts +38 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/minimal_save.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/minimal_save.js +323 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/minimal_save.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/namespaces.d.ts +53 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/namespaces.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/namespaces.js +59 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/namespaces.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/reject_changes.d.ts +6 -4
- package/node_modules/@usejunior/docx-core/dist/primitives/reject_changes.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/reject_changes.js +187 -91
- package/node_modules/@usejunior/docx-core/dist/primitives/reject_changes.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/revision-parts.d.ts +7 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/revision-parts.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/revision-parts.js +27 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/revision-parts.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/revision-vocabulary.d.ts +7 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/revision-vocabulary.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/revision-vocabulary.js +39 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/revision-vocabulary.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/schema-corpus-capture.d.ts +19 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/schema-corpus-capture.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/schema-corpus-capture.js +29 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/schema-corpus-capture.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/sectPrAudit.d.ts +19 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/sectPrAudit.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/sectPrAudit.js +165 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/sectPrAudit.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/semantic_tags.d.ts +7 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/semantic_tags.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/semantic_tags.js +23 -4
- package/node_modules/@usejunior/docx-core/dist/primitives/semantic_tags.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/serialize_html.d.ts +37 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/serialize_html.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/serialize_html.js +395 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/serialize_html.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/serialize_markdown.d.ts +16 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/serialize_markdown.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/serialize_markdown.js +300 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/serialize_markdown.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/serialize_plaintext.d.ts +15 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/serialize_plaintext.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/serialize_plaintext.js +154 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/serialize_plaintext.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/styles.d.ts +15 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/styles.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/styles.js +33 -22
- package/node_modules/@usejunior/docx-core/dist/primitives/styles.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/table_context.d.ts +19 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/table_context.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/table_context.js +189 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/table_context.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/tables.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/tables.js +13 -3
- package/node_modules/@usejunior/docx-core/dist/primitives/tables.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/text.d.ts +2 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/text.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/text.js +116 -12
- package/node_modules/@usejunior/docx-core/dist/primitives/text.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/track-changes-emitter.d.ts +148 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/track-changes-emitter.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/track-changes-emitter.js +291 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/track-changes-emitter.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/validate_ai_revisions.d.ts +35 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/validate_ai_revisions.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/validate_ai_revisions.js +323 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/validate_ai_revisions.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/xml-helpers.d.ts +29 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/xml-helpers.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/xml-helpers.js +35 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/xml-helpers.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/xml.d.ts +5 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/xml.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/xml.js +5 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/xml.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/zip.d.ts +1 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/zip.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/zip.js +21 -3
- package/node_modules/@usejunior/docx-core/dist/primitives/zip.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/shared/field-structure.d.ts +14 -0
- package/node_modules/@usejunior/docx-core/dist/shared/field-structure.d.ts.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/shared/field-structure.js +166 -0
- package/node_modules/@usejunior/docx-core/dist/shared/field-structure.js.map +1 -0
- package/node_modules/@usejunior/docx-core/dist/shared/ooxml/namespaces.d.ts +4 -1
- package/node_modules/@usejunior/docx-core/dist/shared/ooxml/namespaces.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/shared/ooxml/namespaces.js +4 -1
- package/node_modules/@usejunior/docx-core/dist/shared/ooxml/namespaces.js.map +1 -1
- package/node_modules/@usejunior/docx-core/package.json +13 -9
- package/node_modules/@xmldom/xmldom/CHANGELOG.md +1055 -0
- package/node_modules/@xmldom/xmldom/LICENSE +8 -0
- package/node_modules/@xmldom/xmldom/SECURITY.md +50 -0
- package/node_modules/@xmldom/xmldom/index.d.ts +1789 -0
- package/node_modules/@xmldom/xmldom/lib/.eslintrc.yml +3 -0
- package/node_modules/@xmldom/xmldom/lib/conventions.js +429 -0
- package/node_modules/@xmldom/xmldom/lib/dom-parser.js +586 -0
- package/node_modules/@xmldom/xmldom/lib/dom.js +3554 -0
- package/node_modules/@xmldom/xmldom/lib/entities.js +2171 -0
- package/node_modules/@xmldom/xmldom/lib/errors.js +202 -0
- package/node_modules/@xmldom/xmldom/lib/grammar.js +547 -0
- package/node_modules/@xmldom/xmldom/lib/index.js +41 -0
- package/node_modules/@xmldom/xmldom/lib/sax.js +929 -0
- package/node_modules/@xmldom/xmldom/package.json +77 -0
- package/node_modules/@xmldom/xmldom/readme.md +364 -0
- package/node_modules/core-util-is/LICENSE +19 -0
- package/node_modules/core-util-is/README.md +3 -0
- package/node_modules/core-util-is/lib/util.js +107 -0
- package/node_modules/core-util-is/package.json +38 -0
- package/node_modules/immediate/LICENSE.txt +20 -0
- package/node_modules/immediate/README.md +93 -0
- package/node_modules/immediate/dist/immediate.js +75 -0
- package/node_modules/immediate/dist/immediate.min.js +1 -0
- package/node_modules/immediate/lib/browser.js +69 -0
- package/node_modules/immediate/lib/index.js +73 -0
- package/node_modules/immediate/package.json +42 -0
- package/node_modules/inherits/LICENSE +16 -0
- package/node_modules/inherits/README.md +42 -0
- package/node_modules/inherits/inherits.js +9 -0
- package/node_modules/inherits/inherits_browser.js +27 -0
- package/node_modules/inherits/package.json +29 -0
- package/node_modules/isarray/.npmignore +1 -0
- package/node_modules/isarray/.travis.yml +4 -0
- package/node_modules/isarray/Makefile +6 -0
- package/node_modules/isarray/README.md +60 -0
- package/node_modules/isarray/component.json +19 -0
- package/node_modules/isarray/index.js +5 -0
- package/node_modules/isarray/package.json +45 -0
- package/node_modules/isarray/test.js +20 -0
- package/node_modules/jszip/.codeclimate.yml +16 -0
- package/node_modules/jszip/.editorconfig +8 -0
- package/node_modules/jszip/.eslintrc.js +43 -0
- package/node_modules/jszip/.github/workflows/pr.yaml +58 -0
- package/node_modules/jszip/.jekyll-metadata +0 -0
- package/node_modules/jszip/.travis.yml +17 -0
- package/node_modules/jszip/CHANGES.md +204 -0
- package/node_modules/jszip/LICENSE.markdown +651 -0
- package/node_modules/jszip/README.markdown +33 -0
- package/node_modules/jszip/deps.js +37 -0
- package/node_modules/jszip/dist/jszip.js +11577 -0
- package/node_modules/jszip/dist/jszip.min.js +13 -0
- package/node_modules/jszip/graph.svg +601 -0
- package/node_modules/jszip/index.d.ts +330 -0
- package/node_modules/jszip/lib/base64.js +106 -0
- package/node_modules/jszip/lib/compressedObject.js +74 -0
- package/node_modules/jszip/lib/compressions.js +14 -0
- package/node_modules/jszip/lib/crc32.js +77 -0
- package/node_modules/jszip/lib/defaults.js +11 -0
- package/node_modules/jszip/lib/external.js +18 -0
- package/node_modules/jszip/lib/flate.js +85 -0
- package/node_modules/jszip/lib/generate/ZipFileWorker.js +539 -0
- package/node_modules/jszip/lib/generate/index.js +57 -0
- package/node_modules/jszip/lib/index.js +55 -0
- package/node_modules/jszip/lib/license_header.js +11 -0
- package/node_modules/jszip/lib/load.js +88 -0
- package/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +74 -0
- package/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +42 -0
- package/node_modules/jszip/lib/nodejsUtils.js +57 -0
- package/node_modules/jszip/lib/object.js +384 -0
- package/node_modules/jszip/lib/readable-stream-browser.js +10 -0
- package/node_modules/jszip/lib/reader/ArrayReader.js +57 -0
- package/node_modules/jszip/lib/reader/DataReader.js +116 -0
- package/node_modules/jszip/lib/reader/NodeBufferReader.js +19 -0
- package/node_modules/jszip/lib/reader/StringReader.js +38 -0
- package/node_modules/jszip/lib/reader/Uint8ArrayReader.js +22 -0
- package/node_modules/jszip/lib/reader/readerFor.js +28 -0
- package/node_modules/jszip/lib/signature.js +7 -0
- package/node_modules/jszip/lib/stream/ConvertWorker.js +26 -0
- package/node_modules/jszip/lib/stream/Crc32Probe.js +24 -0
- package/node_modules/jszip/lib/stream/DataLengthProbe.js +29 -0
- package/node_modules/jszip/lib/stream/DataWorker.js +116 -0
- package/node_modules/jszip/lib/stream/GenericWorker.js +263 -0
- package/node_modules/jszip/lib/stream/StreamHelper.js +214 -0
- package/node_modules/jszip/lib/support.js +38 -0
- package/node_modules/jszip/lib/utf8.js +275 -0
- package/node_modules/jszip/lib/utils.js +501 -0
- package/node_modules/jszip/lib/zipEntries.js +261 -0
- package/node_modules/jszip/lib/zipEntry.js +293 -0
- package/node_modules/jszip/lib/zipObject.js +133 -0
- package/node_modules/jszip/package.json +67 -0
- package/node_modules/jszip/sponsors.md +21 -0
- package/node_modules/jszip/tsconfig.json +101 -0
- package/node_modules/jszip/vendor/FileSaver.js +247 -0
- package/node_modules/lie/README.md +62 -0
- package/node_modules/lie/dist/lie.js +350 -0
- package/node_modules/lie/dist/lie.min.js +1 -0
- package/node_modules/lie/dist/lie.polyfill.js +358 -0
- package/node_modules/lie/dist/lie.polyfill.min.js +1 -0
- package/node_modules/lie/lib/browser.js +273 -0
- package/node_modules/lie/lib/index.js +298 -0
- package/node_modules/lie/license.md +7 -0
- package/node_modules/lie/lie.d.ts +244 -0
- package/node_modules/lie/package.json +69 -0
- package/node_modules/lie/polyfill.js +4 -0
- package/node_modules/pako/LICENSE +21 -0
- package/node_modules/pako/README.md +191 -0
- package/node_modules/pako/dist/pako.js +6818 -0
- package/node_modules/pako/dist/pako.min.js +1 -0
- package/node_modules/pako/dist/pako_deflate.js +3997 -0
- package/node_modules/pako/dist/pako_deflate.min.js +1 -0
- package/node_modules/pako/dist/pako_inflate.js +3300 -0
- package/node_modules/pako/dist/pako_inflate.min.js +1 -0
- package/node_modules/pako/index.js +14 -0
- package/node_modules/pako/lib/deflate.js +400 -0
- package/node_modules/pako/lib/inflate.js +423 -0
- package/node_modules/pako/lib/utils/common.js +105 -0
- package/node_modules/pako/lib/utils/strings.js +187 -0
- package/node_modules/pako/lib/zlib/README +59 -0
- package/node_modules/pako/lib/zlib/adler32.js +51 -0
- package/node_modules/pako/lib/zlib/constants.js +68 -0
- package/node_modules/pako/lib/zlib/crc32.js +59 -0
- package/node_modules/pako/lib/zlib/deflate.js +1874 -0
- package/node_modules/pako/lib/zlib/gzheader.js +58 -0
- package/node_modules/pako/lib/zlib/inffast.js +345 -0
- package/node_modules/pako/lib/zlib/inflate.js +1556 -0
- package/node_modules/pako/lib/zlib/inftrees.js +343 -0
- package/node_modules/pako/lib/zlib/messages.js +32 -0
- package/node_modules/pako/lib/zlib/trees.js +1222 -0
- package/node_modules/pako/lib/zlib/zstream.js +47 -0
- package/node_modules/pako/package.json +44 -0
- package/node_modules/process-nextick-args/index.js +45 -0
- package/node_modules/process-nextick-args/license.md +19 -0
- package/node_modules/process-nextick-args/package.json +25 -0
- package/node_modules/process-nextick-args/readme.md +18 -0
- package/node_modules/readable-stream/.travis.yml +34 -0
- package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
- package/node_modules/readable-stream/GOVERNANCE.md +136 -0
- package/node_modules/readable-stream/LICENSE +47 -0
- package/node_modules/readable-stream/README.md +58 -0
- package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
- package/node_modules/readable-stream/duplex-browser.js +1 -0
- package/node_modules/readable-stream/duplex.js +1 -0
- package/node_modules/readable-stream/lib/_stream_duplex.js +131 -0
- package/node_modules/readable-stream/lib/_stream_passthrough.js +47 -0
- package/node_modules/readable-stream/lib/_stream_readable.js +1019 -0
- package/node_modules/readable-stream/lib/_stream_transform.js +214 -0
- package/node_modules/readable-stream/lib/_stream_writable.js +685 -0
- package/node_modules/readable-stream/lib/internal/streams/BufferList.js +78 -0
- package/node_modules/readable-stream/lib/internal/streams/destroy.js +84 -0
- package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
- package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
- package/node_modules/readable-stream/package.json +52 -0
- package/node_modules/readable-stream/passthrough.js +1 -0
- package/node_modules/readable-stream/readable-browser.js +7 -0
- package/node_modules/readable-stream/readable.js +19 -0
- package/node_modules/readable-stream/transform.js +1 -0
- package/node_modules/readable-stream/writable-browser.js +1 -0
- package/node_modules/readable-stream/writable.js +8 -0
- package/node_modules/safe-buffer/LICENSE +21 -0
- package/node_modules/safe-buffer/README.md +584 -0
- package/node_modules/safe-buffer/index.d.ts +187 -0
- package/node_modules/safe-buffer/index.js +62 -0
- package/node_modules/safe-buffer/package.json +37 -0
- package/node_modules/setimmediate/LICENSE.txt +20 -0
- package/node_modules/setimmediate/package.json +30 -0
- package/node_modules/setimmediate/setImmediate.js +186 -0
- package/node_modules/string_decoder/.travis.yml +50 -0
- package/node_modules/string_decoder/LICENSE +48 -0
- package/node_modules/string_decoder/README.md +47 -0
- package/node_modules/string_decoder/lib/string_decoder.js +296 -0
- package/node_modules/string_decoder/package.json +31 -0
- package/node_modules/util-deprecate/History.md +16 -0
- package/node_modules/util-deprecate/LICENSE +24 -0
- package/node_modules/util-deprecate/README.md +53 -0
- package/node_modules/util-deprecate/browser.js +67 -0
- package/node_modules/util-deprecate/node.js +6 -0
- package/node_modules/util-deprecate/package.json +27 -0
- package/package.json +7 -7
- package/server.json +3 -3
- package/skills/{cloud-service-agreement → agreements/cloud-service-agreement}/SKILL.md +2 -2
- package/skills/{nda → agreements/cloud-service-agreement}/template-filling-execution.md +2 -2
- package/skills/{data-privacy-agreement → agreements/data-privacy-agreement}/SKILL.md +15 -4
- package/skills/{open-agreements → agreements/data-privacy-agreement}/template-filling-execution.md +12 -6
- package/skills/{employment-contract → agreements/employment-contract}/SKILL.md +25 -8
- package/skills/{cloud-service-agreement → agreements/employment-contract}/template-filling-execution.md +12 -6
- package/skills/{nda → agreements/nda}/SKILL.md +2 -2
- package/skills/{safe → agreements/nda}/template-filling-execution.md +12 -6
- package/skills/{open-agreements → agreements/open-agreements}/SKILL.md +13 -30
- package/skills/agreements/open-agreements/template-filling-execution.md +98 -0
- package/skills/{safe → agreements/safe}/SKILL.md +2 -2
- package/skills/agreements/safe/template-filling-execution.md +98 -0
- package/skills/{services-agreement → agreements/services-agreement}/SKILL.md +3 -3
- package/skills/agreements/services-agreement/template-filling-execution.md +98 -0
- package/skills/{venture-financing → agreements/venture-financing}/SKILL.md +3 -3
- package/skills/agreements/venture-financing/template-filling-execution.md +98 -0
- package/skills/{client-email → client-workflows/client-email}/SKILL.md +9 -7
- package/skills/{delaware-franchise-tax → client-workflows/delaware-franchise-tax}/SKILL.md +1 -1
- package/skills/{edit-docx-agreement → client-workflows/edit-docx-agreement}/SKILL.md +1 -1
- package/skills/{iso-27001-evidence-collection → compliance/iso-27001-evidence-collection}/SKILL.md +1 -1
- package/skills/{iso-27001-internal-audit → compliance/iso-27001-internal-audit}/SKILL.md +1 -1
- package/skills/{soc2-readiness → compliance/soc2-readiness}/SKILL.md +1 -1
- package/skills/{canonical-markdown-authoring → internal/canonical-markdown-authoring}/SKILL.md +2 -3
- package/skills/{recipe-quality-audit → internal/recipe-quality-audit}/SKILL.md +2 -1
- package/skills/{unit-test-philosophy → internal/unit-test-philosophy}/SKILL.md +2 -0
- package/skills/legal-explainers/data-privacy-law-explainer/CONTRIBUTING.md +7 -0
- package/skills/legal-explainers/data-privacy-law-explainer/LICENSE +269 -0
- package/skills/legal-explainers/data-privacy-law-explainer/NOTICE +7 -0
- package/skills/legal-explainers/data-privacy-law-explainer/SKILL.md +113 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/alabama.md +211 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/alaska.md +155 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/arizona.md +181 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/arkansas.md +219 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/california.md +107 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/colorado.md +87 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/connecticut.md +83 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/delaware.md +85 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/district-of-columbia.md +153 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/florida.md +234 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/georgia.md +149 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/hawaii.md +167 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/idaho.md +149 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/illinois.md +238 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/indiana.md +93 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/iowa.md +99 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/kansas.md +155 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/kentucky.md +87 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/louisiana.md +209 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/maine.md +163 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/maryland.md +85 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/massachusetts.md +260 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/michigan.md +175 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/minnesota.md +93 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/mississippi.md +132 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/missouri.md +179 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/montana.md +105 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/nebraska.md +83 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/nevada.md +212 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/new-hampshire.md +91 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/new-jersey.md +95 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/new-mexico.md +174 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/new-york.md +195 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/north-carolina.md +205 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/north-dakota.md +169 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/ohio.md +171 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/oklahoma.md +168 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/oregon.md +103 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/pennsylvania.md +99 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/rhode-island.md +93 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/south-carolina.md +175 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/south-dakota.md +176 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/tennessee.md +89 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/texas.md +89 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/utah.md +83 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/vermont.md +267 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/virginia.md +85 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/washington.md +247 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/west-virginia.md +141 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/wisconsin.md +156 -0
- package/skills/legal-explainers/data-privacy-law-explainer/content/wyoming.md +185 -0
- package/skills/legal-explainers/data-privacy-law-explainer/manifest.json +519 -0
- package/skills/legal-explainers/non-compete-contract-explainer/CONTRIBUTING.md +7 -0
- package/skills/legal-explainers/non-compete-contract-explainer/LICENSE +269 -0
- package/skills/legal-explainers/non-compete-contract-explainer/NOTICE +7 -0
- package/skills/{non-compete-contract-explainer → legal-explainers/non-compete-contract-explainer}/SKILL.md +1 -1
- package/skills/legal-explainers/non-compete-contract-explainer/content/alabama.md +251 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/alaska.md +160 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/american-samoa.md +187 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/arizona.md +295 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/arkansas.md +235 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/au.md +208 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/australian-capital-territory.md +220 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/california.md +270 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/cnmi.md +168 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/colorado.md +277 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/connecticut.md +220 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/delaware.md +222 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/district-of-columbia.md +263 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/florida.md +267 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/georgia.md +323 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/guam.md +180 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/hawaii.md +236 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/idaho.md +258 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/illinois.md +266 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/in.md +269 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/indiana.md +253 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/iowa.md +232 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/kansas.md +227 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/kentucky.md +201 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/louisiana.md +272 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/maine.md +178 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/maryland.md +244 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/massachusetts.md +272 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/michigan.md +222 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/minnesota.md +171 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/mississippi.md +237 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/missouri.md +219 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/montana.md +202 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/nebraska.md +206 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/nevada.md +278 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/new-hampshire.md +233 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/new-jersey.md +277 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/new-mexico.md +244 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/new-south-wales.md +218 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/new-york.md +226 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/north-carolina.md +346 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/north-dakota.md +187 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/northern-territory.md +214 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/ohio.md +207 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/oklahoma.md +196 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/oregon.md +359 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/pennsylvania.md +254 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/ph.md +211 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/puerto-rico.md +163 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/queensland.md +206 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/rhode-island.md +171 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/sg.md +229 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/south-australia.md +236 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/south-carolina.md +226 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/south-dakota.md +222 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/tasmania.md +224 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/tennessee.md +251 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/texas.md +297 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/utah.md +250 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/vermont.md +211 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/victoria.md +218 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/virgin-islands.md +193 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/virginia.md +213 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/washington.md +296 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/west-virginia.md +187 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/western-australia.md +224 -0
- package/skills/legal-explainers/non-compete-contract-explainer/content/wisconsin.md +293 -0
- package/skills/{non-compete-contract-explainer → legal-explainers/non-compete-contract-explainer}/content/wyoming.md +69 -55
- package/skills/legal-explainers/non-compete-contract-explainer/manifest.json +689 -0
- package/content/templates/bonterms-mutual-nda/signing.yaml +0 -35
- package/dist/core/signing-config.d.ts +0 -46
- package/dist/core/signing-config.d.ts.map +0 -1
- package/dist/core/signing-config.js +0 -67
- package/dist/core/signing-config.js.map +0 -1
- package/skills/non-compete-contract-explainer/manifest.json +0 -18
- package/skills/services-agreement/template-filling-execution.md +0 -81
- package/skills/shared/template-filling-execution.md +0 -92
- /package/skills/{cloud-service-agreement → agreements/cloud-service-agreement}/CONNECTORS.md +0 -0
- /package/skills/{data-privacy-agreement → agreements/data-privacy-agreement}/CONNECTORS.md +0 -0
- /package/skills/{employment-contract → agreements/employment-contract}/CONNECTORS.md +0 -0
- /package/skills/{nda → agreements/nda}/CONNECTORS.md +0 -0
- /package/skills/{open-agreements → agreements/open-agreements}/CONNECTORS.md +0 -0
- /package/skills/{safe → agreements/safe}/CONNECTORS.md +0 -0
- /package/skills/{services-agreement → agreements/services-agreement}/CONNECTORS.md +0 -0
- /package/skills/{venture-financing → agreements/venture-financing}/CONNECTORS.md +0 -0
- /package/skills/{delaware-franchise-tax → client-workflows/delaware-franchise-tax}/CONNECTORS.md +0 -0
- /package/skills/{delaware-franchise-tax → client-workflows/delaware-franchise-tax}/reference/ecorp-portal-playwright-notes.md +0 -0
- /package/skills/{delaware-franchise-tax → client-workflows/delaware-franchise-tax}/reference/faq.md +0 -0
- /package/skills/{delaware-franchise-tax → client-workflows/delaware-franchise-tax}/reference/filing-instructions.md +0 -0
- /package/skills/{delaware-franchise-tax → client-workflows/delaware-franchise-tax}/reference/tax-calculation.md +0 -0
- /package/skills/{edit-docx-agreement → client-workflows/edit-docx-agreement}/CONNECTORS.md +0 -0
- /package/skills/{iso-27001-evidence-collection → compliance/iso-27001-evidence-collection}/CONNECTORS.md +0 -0
- /package/skills/{iso-27001-evidence-collection → compliance/iso-27001-evidence-collection}/rules/api-exports.md +0 -0
- /package/skills/{iso-27001-evidence-collection → compliance/iso-27001-evidence-collection}/rules/evidence-types.md +0 -0
- /package/skills/{iso-27001-evidence-collection → compliance/iso-27001-evidence-collection}/rules/screenshot-guide.md +0 -0
- /package/skills/{iso-27001-internal-audit → compliance/iso-27001-internal-audit}/CONNECTORS.md +0 -0
- /package/skills/{iso-27001-internal-audit → compliance/iso-27001-internal-audit}/rules/access-control.md +0 -0
- /package/skills/{iso-27001-internal-audit → compliance/iso-27001-internal-audit}/rules/business-continuity.md +0 -0
- /package/skills/{iso-27001-internal-audit → compliance/iso-27001-internal-audit}/rules/change-management.md +0 -0
- /package/skills/{iso-27001-internal-audit → compliance/iso-27001-internal-audit}/rules/encryption.md +0 -0
- /package/skills/{iso-27001-internal-audit → compliance/iso-27001-internal-audit}/rules/incident-response.md +0 -0
- /package/skills/{iso-27001-internal-audit → compliance/iso-27001-internal-audit}/rules/isms-management.md +0 -0
- /package/skills/{iso-27001-internal-audit → compliance/iso-27001-internal-audit}/rules/logging-monitoring.md +0 -0
- /package/skills/{iso-27001-internal-audit → compliance/iso-27001-internal-audit}/rules/people-controls.md +0 -0
- /package/skills/{iso-27001-internal-audit → compliance/iso-27001-internal-audit}/rules/supplier-management.md +0 -0
- /package/skills/{soc2-readiness → compliance/soc2-readiness}/CONNECTORS.md +0 -0
- /package/skills/{soc2-readiness → compliance/soc2-readiness}/rules/change-vendor-management.md +0 -0
- /package/skills/{soc2-readiness → compliance/soc2-readiness}/rules/communication-info.md +0 -0
- /package/skills/{soc2-readiness → compliance/soc2-readiness}/rules/control-activities.md +0 -0
- /package/skills/{soc2-readiness → compliance/soc2-readiness}/rules/control-environment.md +0 -0
- /package/skills/{soc2-readiness → compliance/soc2-readiness}/rules/logical-access.md +0 -0
- /package/skills/{soc2-readiness → compliance/soc2-readiness}/rules/monitoring-activities.md +0 -0
- /package/skills/{soc2-readiness → compliance/soc2-readiness}/rules/optional-categories.md +0 -0
- /package/skills/{soc2-readiness → compliance/soc2-readiness}/rules/privacy-criteria.md +0 -0
- /package/skills/{soc2-readiness → compliance/soc2-readiness}/rules/risk-assessment.md +0 -0
- /package/skills/{soc2-readiness → compliance/soc2-readiness}/rules/system-operations.md +0 -0
- /package/skills/{canonical-markdown-authoring → internal/canonical-markdown-authoring}/CONNECTORS.md +0 -0
- /package/skills/{unit-test-philosophy → internal/unit-test-philosophy}/references/allure-test-spec-writing-guide.md +0 -0
|
@@ -21,6 +21,10 @@ import { modifyRevisedDocument, ContainerResolutionError } from './inPlaceModifi
|
|
|
21
21
|
import { acceptAllChanges, rejectAllChanges, extractTextWithParagraphs, compareTexts, } from './trackChangesAcceptorAst.js';
|
|
22
22
|
import { virtualizeNumberingLabels, DEFAULT_NUMBERING_OPTIONS, } from './numberingIntegration.js';
|
|
23
23
|
import { premergeAdjacentRuns } from './premergeRuns.js';
|
|
24
|
+
export { hasFldCharInsideDel, validateFieldStructure, } from '../../shared/field-structure.js';
|
|
25
|
+
import { hasFldCharInsideDel, validateFieldStructure, } from '../../shared/field-structure.js';
|
|
26
|
+
import { AUXILIARY_PARTS, parseEntries, renumberCollidingAuxiliaryIds, restampCollidingCommentParaIds, } from './auxiliaryIdCollision.js';
|
|
27
|
+
import { maybeCaptureEmittedDocumentXml } from '../../primitives/schema-corpus-capture.js';
|
|
24
28
|
function arraysEqual(a, b) {
|
|
25
29
|
if (a.length !== b.length)
|
|
26
30
|
return false;
|
|
@@ -215,70 +219,56 @@ function buildFailureSummary(failureDetails) {
|
|
|
215
219
|
}
|
|
216
220
|
return Object.keys(summary).length > 0 ? summary : undefined;
|
|
217
221
|
}
|
|
222
|
+
// Declared above splitStories so the function body never observes an
|
|
223
|
+
// uninitialized binding under circular imports.
|
|
224
|
+
const serializer = new XMLSerializer();
|
|
218
225
|
/**
|
|
219
|
-
*
|
|
226
|
+
* Split a docx into per-story XML fragments for field-closure validation.
|
|
227
|
+
*
|
|
228
|
+
* Each footnote/endnote entry is treated as an isolated story: a complex
|
|
229
|
+
* field whose `begin` and `end` markers straddle stories breaks Word's
|
|
230
|
+
* field state machine. We therefore validate each `<w:footnote>` and
|
|
231
|
+
* `<w:endnote>` entry independently rather than treating the whole
|
|
232
|
+
* `footnotes.xml`/`endnotes.xml` as one stream.
|
|
233
|
+
*
|
|
234
|
+
* Accepts arrays of sidecar XMLs (one per source archive) so callers can
|
|
235
|
+
* validate the union of entries from every archive that may contribute to the
|
|
236
|
+
* final result. Step 12 of `compareDocumentsAtomizer` merges entries from a
|
|
237
|
+
* mode-dependent source archive into the base archive; passing both archives'
|
|
238
|
+
* sidecars guarantees that whichever path the merge takes, the entries it
|
|
239
|
+
* could publish have already been screened. Duplicates (same `w:id` in both
|
|
240
|
+
* archives) yield redundant but harmless validation work.
|
|
220
241
|
*
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
*
|
|
242
|
+
* Header/footer stories are not yet covered — they require relationship
|
|
243
|
+
* walking to enumerate `headerN.xml`/`footerN.xml`.
|
|
244
|
+
*
|
|
245
|
+
* @conformance ECMA-376 edition 5, Part 4 § 17.16.5
|
|
246
|
+
* @see https://github.com/UseJunior/safe-docx/issues/212
|
|
224
247
|
*/
|
|
225
|
-
function
|
|
226
|
-
const
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
return false;
|
|
242
|
-
// Check that instrText elements are inside a field (between begin and separate).
|
|
243
|
-
// Walk all elements in document order using a recursive scan.
|
|
244
|
-
if (allInstrTexts.length === 0)
|
|
245
|
-
return true; // No instrText, nothing to validate
|
|
246
|
-
// Depth-first scan to check instrText placement
|
|
247
|
-
let depth = 0;
|
|
248
|
-
const pastSeparatorAtDepth = []; // track separator state per depth
|
|
249
|
-
function scan(node) {
|
|
250
|
-
for (let child = node.firstChild; child; child = child.nextSibling) {
|
|
251
|
-
if (child.nodeType !== 1)
|
|
252
|
-
continue; // skip non-elements
|
|
253
|
-
const el = child;
|
|
254
|
-
if (el.tagName === 'w:fldChar') {
|
|
255
|
-
const type = el.getAttribute('w:fldCharType');
|
|
256
|
-
if (type === 'begin') {
|
|
257
|
-
depth++;
|
|
258
|
-
pastSeparatorAtDepth[depth] = 0;
|
|
259
|
-
}
|
|
260
|
-
else if (type === 'separate') {
|
|
261
|
-
if (depth > 0)
|
|
262
|
-
pastSeparatorAtDepth[depth] = 1;
|
|
263
|
-
}
|
|
264
|
-
else if (type === 'end') {
|
|
265
|
-
if (depth > 0)
|
|
266
|
-
depth--;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
else if (el.tagName === 'w:instrText') {
|
|
270
|
-
// instrText must be inside a field (depth > 0) and before the separator
|
|
271
|
-
if (depth === 0 || pastSeparatorAtDepth[depth])
|
|
272
|
-
return false;
|
|
248
|
+
export function splitStories(documentXml, footnotesXmls, endnotesXmls) {
|
|
249
|
+
const stories = [{ label: 'document', xml: documentXml }];
|
|
250
|
+
const collectEntries = (sidecars, entryTag, labelPrefix) => {
|
|
251
|
+
for (let s = 0; s < sidecars.length; s++) {
|
|
252
|
+
const sidecarXml = sidecars[s];
|
|
253
|
+
if (!sidecarXml)
|
|
254
|
+
continue;
|
|
255
|
+
const doc = parseXml(sidecarXml);
|
|
256
|
+
const entries = doc.getElementsByTagName(entryTag);
|
|
257
|
+
for (let i = 0; i < entries.length; i++) {
|
|
258
|
+
const entry = entries[i];
|
|
259
|
+
const id = entry.getAttribute('w:id') ?? String(i);
|
|
260
|
+
stories.push({
|
|
261
|
+
label: `${labelPrefix}[${s}]:${id}`,
|
|
262
|
+
xml: serializer.serializeToString(entry),
|
|
263
|
+
});
|
|
273
264
|
}
|
|
274
|
-
if (!scan(el))
|
|
275
|
-
return false;
|
|
276
265
|
}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
266
|
+
};
|
|
267
|
+
collectEntries(footnotesXmls, 'w:footnote', 'footnote');
|
|
268
|
+
collectEntries(endnotesXmls, 'w:endnote', 'endnote');
|
|
269
|
+
return stories;
|
|
280
270
|
}
|
|
281
|
-
function evaluateSafetyChecks(originalTextForRoundTrip, revisedTextForRoundTrip, originalBookmarkDiagnostics, revisedBookmarkDiagnostics, candidateXml) {
|
|
271
|
+
function evaluateSafetyChecks(originalTextForRoundTrip, revisedTextForRoundTrip, originalBookmarkDiagnostics, revisedBookmarkDiagnostics, candidateXml, auxiliarySidecars) {
|
|
282
272
|
const acceptedXml = acceptAllChanges(candidateXml);
|
|
283
273
|
const rejectedXml = rejectAllChanges(candidateXml);
|
|
284
274
|
const acceptedText = extractTextWithParagraphs(acceptedXml);
|
|
@@ -289,11 +279,28 @@ function evaluateSafetyChecks(originalTextForRoundTrip, revisedTextForRoundTrip,
|
|
|
289
279
|
const rejectTextComparison = compareTexts(originalTextForRoundTrip, rejectedText);
|
|
290
280
|
const acceptBookmarksOk = bookmarkDiagnosticsSemanticallyEqual(revisedBookmarkDiagnostics, acceptedBookmarkDiagnostics);
|
|
291
281
|
const rejectBookmarksOk = bookmarkDiagnosticsSemanticallyEqual(originalBookmarkDiagnostics, rejectedBookmarkDiagnostics);
|
|
292
|
-
// Validate field structure
|
|
293
|
-
//
|
|
294
|
-
//
|
|
295
|
-
//
|
|
296
|
-
|
|
282
|
+
// Validate field structure per-story. Each footnote/endnote entry is its own
|
|
283
|
+
// ECMA-376 story; a complex field that crosses a story boundary breaks
|
|
284
|
+
// Word's field state machine even when global begin/end counts balance.
|
|
285
|
+
// Sidecars from BOTH archives are validated because Step 12's auxiliary-part
|
|
286
|
+
// merge picks its base and source archives by reconstruction mode (inplace
|
|
287
|
+
// base = revised; rebuild base = original) and validating only one side
|
|
288
|
+
// would miss field issues that would still ship in the merged result.
|
|
289
|
+
// `acceptAllChanges` / `rejectAllChanges` only transform document.xml, so
|
|
290
|
+
// the sidecar set is identical for both transforms.
|
|
291
|
+
const acceptedStories = splitStories(acceptedXml, auxiliarySidecars.footnotesXmls, auxiliarySidecars.endnotesXmls);
|
|
292
|
+
const rejectedStories = splitStories(rejectedXml, auxiliarySidecars.footnotesXmls, auxiliarySidecars.endnotesXmls);
|
|
293
|
+
// Issue #217 conformance gate on the COMBINED output: w:fldChar MUST NOT
|
|
294
|
+
// appear inside <w:del>. ECMA-376 Part 4 § 17.16.5 makes this fatal for
|
|
295
|
+
// Word's field state machine. The full validateFieldStructure check is run
|
|
296
|
+
// on the accept/reject projections (per-story); on the combined view we
|
|
297
|
+
// only gate the strict no-fldChar-in-del rule because some legacy emit
|
|
298
|
+
// paths (e.g. delInstrText inside <w:moveFrom>) are non-conformant in shape
|
|
299
|
+
// but out of scope for #217.
|
|
300
|
+
const combinedNoFldCharInDel = !hasFldCharInsideDel(candidateXml);
|
|
301
|
+
const fieldStructureOk = combinedNoFldCharInDel &&
|
|
302
|
+
validateFieldStructure(acceptedStories) &&
|
|
303
|
+
validateFieldStructure(rejectedStories);
|
|
297
304
|
const checks = {
|
|
298
305
|
acceptText: acceptTextComparison.normalizedIdentical,
|
|
299
306
|
rejectText: rejectTextComparison.normalizedIdentical,
|
|
@@ -369,12 +376,36 @@ export async function compareDocumentsAtomizer(original, revised, options = {})
|
|
|
369
376
|
// Step 1: Load DOCX archives
|
|
370
377
|
const originalArchive = await DocxArchive.load(original);
|
|
371
378
|
const revisedArchive = await DocxArchive.load(revised);
|
|
379
|
+
// Step 1b: Resolve auxiliary ID collisions. When both sides define
|
|
380
|
+
// different content under the same comment/footnote/endnote w:id or the
|
|
381
|
+
// same comment paraId, rewrite the revised side so no anchor or ancillary
|
|
382
|
+
// row in the merged output can bind to the other document's definition.
|
|
383
|
+
// Must run before any document.xml extraction so every downstream step sees
|
|
384
|
+
// the rewritten archive.
|
|
385
|
+
await renumberCollidingAuxiliaryIds(originalArchive, revisedArchive);
|
|
386
|
+
await restampCollidingCommentParaIds(originalArchive, revisedArchive);
|
|
372
387
|
// Step 2: Extract document.xml
|
|
373
388
|
const originalXml = await originalArchive.getDocumentXml();
|
|
374
389
|
const revisedXml = await revisedArchive.getDocumentXml();
|
|
375
390
|
// Extract numbering.xml if available
|
|
376
391
|
const originalNumberingXml = await originalArchive.getNumberingXml() ?? undefined;
|
|
377
392
|
const revisedNumberingXml = await revisedArchive.getNumberingXml() ?? undefined;
|
|
393
|
+
// Extract footnote/endnote sidecars from BOTH archives for per-story
|
|
394
|
+
// field-closure validation (issue #212). Step 12 picks the base archive by
|
|
395
|
+
// reconstruction mode (inplace = revised, rebuild = original) and merges
|
|
396
|
+
// missing referenced entries from the opposite archive. Validating both
|
|
397
|
+
// archives' sidecars covers the union of entries that could ship without
|
|
398
|
+
// having to duplicate the merge logic at safety-check time.
|
|
399
|
+
const [originalFootnotesXml, originalEndnotesXml, revisedFootnotesXml, revisedEndnotesXml,] = await Promise.all([
|
|
400
|
+
originalArchive.getFile('word/footnotes.xml'),
|
|
401
|
+
originalArchive.getFile('word/endnotes.xml'),
|
|
402
|
+
revisedArchive.getFile('word/footnotes.xml'),
|
|
403
|
+
revisedArchive.getFile('word/endnotes.xml'),
|
|
404
|
+
]);
|
|
405
|
+
const auxiliarySidecars = {
|
|
406
|
+
footnotesXmls: [originalFootnotesXml, revisedFootnotesXml],
|
|
407
|
+
endnotesXmls: [originalEndnotesXml, revisedEndnotesXml],
|
|
408
|
+
};
|
|
378
409
|
const originalPart = {
|
|
379
410
|
uri: 'word/document.xml',
|
|
380
411
|
contentType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml',
|
|
@@ -383,8 +414,13 @@ export async function compareDocumentsAtomizer(original, revised, options = {})
|
|
|
383
414
|
uri: 'word/document.xml',
|
|
384
415
|
contentType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml',
|
|
385
416
|
};
|
|
386
|
-
|
|
387
|
-
|
|
417
|
+
// Project each input through the SAME accept/reject operation the candidate is
|
|
418
|
+
// checked under, so the round-trip comparison is like-for-like even when an
|
|
419
|
+
// input already carries its own tracked changes (pre-tracked w:ins / w:del,
|
|
420
|
+
// comment anchors, multi-author stacks). For a clean input these equal the raw
|
|
421
|
+
// extraction, so behavior on the common case is unchanged. (#347)
|
|
422
|
+
const originalTextForRoundTrip = extractTextWithParagraphs(rejectAllChanges(originalXml));
|
|
423
|
+
const revisedTextForRoundTrip = extractTextWithParagraphs(acceptAllChanges(revisedXml));
|
|
388
424
|
const originalBookmarkDiagnostics = collectBookmarkDiagnostics(originalXml);
|
|
389
425
|
const revisedBookmarkDiagnostics = collectBookmarkDiagnostics(revisedXml);
|
|
390
426
|
const runComparisonPass = (atomizeOptions, outputMode) => {
|
|
@@ -445,7 +481,7 @@ export async function compareDocumentsAtomizer(original, revised, options = {})
|
|
|
445
481
|
}
|
|
446
482
|
return { mergedAtoms, newDocumentXml, outputMode };
|
|
447
483
|
};
|
|
448
|
-
const evaluateRoundTripSafety = (candidateXml) => evaluateSafetyChecks(originalTextForRoundTrip, revisedTextForRoundTrip, originalBookmarkDiagnostics, revisedBookmarkDiagnostics, candidateXml);
|
|
484
|
+
const evaluateRoundTripSafety = (candidateXml) => evaluateSafetyChecks(originalTextForRoundTrip, revisedTextForRoundTrip, originalBookmarkDiagnostics, revisedBookmarkDiagnostics, candidateXml, auxiliarySidecars);
|
|
449
485
|
let comparisonResult;
|
|
450
486
|
let fallbackReason;
|
|
451
487
|
let fallbackDiagnostics;
|
|
@@ -530,7 +566,7 @@ export async function compareDocumentsAtomizer(original, revised, options = {})
|
|
|
530
566
|
comparisonResult = selected;
|
|
531
567
|
}
|
|
532
568
|
else {
|
|
533
|
-
comparisonResult = runComparisonPass(
|
|
569
|
+
comparisonResult = runComparisonPass({ atomizeParagraphLevelMarkers: true }, 'rebuild');
|
|
534
570
|
fallbackReason = 'round_trip_safety_check_failed';
|
|
535
571
|
fallbackDiagnostics = {
|
|
536
572
|
attempts: failedAttempts,
|
|
@@ -538,34 +574,56 @@ export async function compareDocumentsAtomizer(original, revised, options = {})
|
|
|
538
574
|
}
|
|
539
575
|
}
|
|
540
576
|
else {
|
|
541
|
-
comparisonResult = runComparisonPass(
|
|
577
|
+
comparisonResult = runComparisonPass({ atomizeParagraphLevelMarkers: true }, 'rebuild');
|
|
578
|
+
}
|
|
579
|
+
// Rebuild output gets the same safety screening as inplace attempts, whether
|
|
580
|
+
// rebuild was requested directly or reached via inplace fallback. Rebuild is
|
|
581
|
+
// the terminal strategy, so failures are surfaced in diagnostics rather than
|
|
582
|
+
// blocking the output.
|
|
583
|
+
// @see https://github.com/UseJunior/safe-docx/issues/226
|
|
584
|
+
let rebuildSafetyDiagnostics;
|
|
585
|
+
if (comparisonResult.outputMode === 'rebuild') {
|
|
586
|
+
const safety = evaluateRoundTripSafety(comparisonResult.newDocumentXml);
|
|
587
|
+
if (!safety.safe) {
|
|
588
|
+
rebuildSafetyDiagnostics = {
|
|
589
|
+
checks: safety.checks,
|
|
590
|
+
failedChecks: safety.failedChecks,
|
|
591
|
+
failureDetails: safety.failureDetails,
|
|
592
|
+
firstDiffSummary: safety.failureSummary,
|
|
593
|
+
};
|
|
594
|
+
}
|
|
542
595
|
}
|
|
543
596
|
const { mergedAtoms, newDocumentXml } = comparisonResult;
|
|
544
597
|
// Step 12: Clone appropriate archive and update document.xml.
|
|
545
598
|
// Use the revised archive only for true inplace output.
|
|
546
599
|
const baseArchive = comparisonResult.outputMode === 'inplace' ? revisedArchive : originalArchive;
|
|
600
|
+
// The merge source is the *opposite* archive from the base: inplace pulls
|
|
601
|
+
// deleted-but-still-referenced definitions from the original, rebuild pulls
|
|
602
|
+
// added-but-still-referenced definitions from the revised. Without this,
|
|
603
|
+
// rebuild output ships dangling references when the original lacks an
|
|
604
|
+
// auxiliary part that the revised side introduced (issue #94).
|
|
605
|
+
const mergeSourceArchive = comparisonResult.outputMode === 'inplace' ? originalArchive : revisedArchive;
|
|
547
606
|
const resultArchive = await baseArchive.clone();
|
|
607
|
+
maybeCaptureEmittedDocumentXml(newDocumentXml);
|
|
548
608
|
resultArchive.setDocumentXml(newDocumentXml);
|
|
549
|
-
// Step 12b:
|
|
550
|
-
//
|
|
551
|
-
//
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
await mergeCommentAncillaryParts(originalArchive, resultArchive, mergeResults.get('comment'));
|
|
564
|
-
}
|
|
609
|
+
// Step 12b: Merge auxiliary part definitions (footnotes, endnotes, comments).
|
|
610
|
+
// Reconstruction may insert content (deleted in inplace, added in rebuild)
|
|
611
|
+
// whose definitions are missing from the base archive.
|
|
612
|
+
for (const descriptor of AUXILIARY_PARTS) {
|
|
613
|
+
await mergeAuxiliaryPartDefinitions(mergeSourceArchive, resultArchive, newDocumentXml, descriptor);
|
|
614
|
+
}
|
|
615
|
+
// Comment-specific post-pass: walk reply threads via commentsExtended.xml.
|
|
616
|
+
// Gated on root comment IDs in the *result* document (not on what the
|
|
617
|
+
// generic merge appended), so the pass runs even when the original already
|
|
618
|
+
// contains the root and revised only adds replies under it (issue #108).
|
|
619
|
+
// Comments anchored on footnote/endnote text count as roots too.
|
|
620
|
+
const rootCommentIds = await collectStoryReferenceIds(resultArchive, newDocumentXml, 'w:commentReference', null);
|
|
621
|
+
if (rootCommentIds.size > 0) {
|
|
622
|
+
await mergeCommentAncillaryParts(mergeSourceArchive, resultArchive, rootCommentIds);
|
|
565
623
|
}
|
|
566
624
|
// Step 13: Save result and compute stats
|
|
567
625
|
const resultBuffer = await resultArchive.save();
|
|
568
|
-
const stats =
|
|
626
|
+
const stats = computeAtomizerStats(mergedAtoms);
|
|
569
627
|
return {
|
|
570
628
|
document: resultBuffer,
|
|
571
629
|
stats,
|
|
@@ -574,37 +632,29 @@ export async function compareDocumentsAtomizer(original, revised, options = {})
|
|
|
574
632
|
reconstructionModeUsed: comparisonResult.outputMode,
|
|
575
633
|
fallbackReason,
|
|
576
634
|
fallbackDiagnostics,
|
|
635
|
+
rebuildSafetyDiagnostics,
|
|
577
636
|
};
|
|
578
637
|
}
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
label: 'comment',
|
|
600
|
-
partPath: 'word/comments.xml',
|
|
601
|
-
referenceTag: 'w:commentReference',
|
|
602
|
-
entryTag: 'w:comment',
|
|
603
|
-
rootTag: 'w:comments',
|
|
604
|
-
contentType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml',
|
|
605
|
-
relationshipType: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments',
|
|
606
|
-
},
|
|
607
|
-
];
|
|
638
|
+
/**
|
|
639
|
+
* Collect reference IDs across every result story that can host anchors: the
|
|
640
|
+
* merged document.xml plus the result archive's footnote/endnote parts (Word
|
|
641
|
+
* allows comments anchored on note text). `excludePartPath` skips the part
|
|
642
|
+
* whose own definitions are being merged — entries can't reference
|
|
643
|
+
* themselves.
|
|
644
|
+
*/
|
|
645
|
+
async function collectStoryReferenceIds(resultArchive, documentXml, referenceTag, excludePartPath) {
|
|
646
|
+
const ids = collectReferenceIds(documentXml, referenceTag);
|
|
647
|
+
for (const storyPath of ['word/footnotes.xml', 'word/endnotes.xml']) {
|
|
648
|
+
if (storyPath === excludePartPath)
|
|
649
|
+
continue;
|
|
650
|
+
const storyXml = await resultArchive.getFile(storyPath);
|
|
651
|
+
if (!storyXml)
|
|
652
|
+
continue;
|
|
653
|
+
for (const id of collectReferenceIds(storyXml, referenceTag))
|
|
654
|
+
ids.add(id);
|
|
655
|
+
}
|
|
656
|
+
return ids;
|
|
657
|
+
}
|
|
608
658
|
/**
|
|
609
659
|
* Collect reference IDs from document.xml using DOM parsing.
|
|
610
660
|
*/
|
|
@@ -619,43 +669,33 @@ function collectReferenceIds(documentXml, referenceTag) {
|
|
|
619
669
|
}
|
|
620
670
|
return ids;
|
|
621
671
|
}
|
|
622
|
-
/**
|
|
623
|
-
* Parse an auxiliary part and extract entry elements by ID.
|
|
624
|
-
*/
|
|
625
|
-
function parseEntries(xml, entryTag) {
|
|
626
|
-
const doc = parseXml(xml);
|
|
627
|
-
const entries = new Map();
|
|
628
|
-
const elements = doc.getElementsByTagName(entryTag);
|
|
629
|
-
for (let i = 0; i < elements.length; i++) {
|
|
630
|
-
const el = elements[i];
|
|
631
|
-
const id = el.getAttribute('w:id');
|
|
632
|
-
if (id)
|
|
633
|
-
entries.set(id, el);
|
|
634
|
-
}
|
|
635
|
-
return { doc, entries };
|
|
636
|
-
}
|
|
637
|
-
const serializer = new XMLSerializer();
|
|
638
672
|
/**
|
|
639
673
|
* Merge auxiliary part definitions (footnotes, endnotes, comments) from the
|
|
640
|
-
*
|
|
641
|
-
*
|
|
674
|
+
* source archive into the result archive. The source archive is whichever
|
|
675
|
+
* side reconstruction may have introduced references to: original in inplace
|
|
676
|
+
* mode (deleted-but-referenced definitions), revised in rebuild mode
|
|
677
|
+
* (added-but-referenced definitions).
|
|
642
678
|
*/
|
|
643
|
-
async function mergeAuxiliaryPartDefinitions(
|
|
679
|
+
async function mergeAuxiliaryPartDefinitions(sourceArchive, resultArchive, documentXml, descriptor) {
|
|
644
680
|
const result = { mergedIds: new Set(), createdPart: false };
|
|
645
|
-
|
|
681
|
+
// Anchors may live in the merged body or on note text in the result's
|
|
682
|
+
// footnote/endnote stories. AUXILIARY_PARTS merges notes before comments,
|
|
683
|
+
// so by the comment pass the note stories already carry any merged-in
|
|
684
|
+
// comment anchors.
|
|
685
|
+
const referencedIds = await collectStoryReferenceIds(resultArchive, documentXml, descriptor.referenceTag, descriptor.partPath);
|
|
646
686
|
if (referencedIds.size === 0)
|
|
647
687
|
return result;
|
|
648
|
-
const
|
|
649
|
-
if (!
|
|
688
|
+
const sourcePartXml = await sourceArchive.getFile(descriptor.partPath);
|
|
689
|
+
if (!sourcePartXml)
|
|
650
690
|
return result;
|
|
651
691
|
const resultPartXml = await resultArchive.getFile(descriptor.partPath);
|
|
652
|
-
const
|
|
692
|
+
const sourceParsed = parseEntries(sourcePartXml, descriptor.entryTag);
|
|
653
693
|
const resultParsed = resultPartXml ? parseEntries(resultPartXml, descriptor.entryTag) : null;
|
|
654
694
|
// Find missing entries: referenced in document.xml but not in result
|
|
655
695
|
const missingElements = [];
|
|
656
696
|
for (const id of referencedIds) {
|
|
657
|
-
if (!(resultParsed?.entries.has(id)) &&
|
|
658
|
-
missingElements.push(
|
|
697
|
+
if (!(resultParsed?.entries.has(id)) && sourceParsed.entries.has(id)) {
|
|
698
|
+
missingElements.push(sourceParsed.entries.get(id));
|
|
659
699
|
result.mergedIds.add(id);
|
|
660
700
|
}
|
|
661
701
|
}
|
|
@@ -673,27 +713,33 @@ async function mergeAuxiliaryPartDefinitions(originalArchive, resultArchive, doc
|
|
|
673
713
|
}
|
|
674
714
|
}
|
|
675
715
|
else {
|
|
676
|
-
// Create part from scratch: clone root from
|
|
677
|
-
|
|
716
|
+
// Create part from scratch: clone root from merge source, drop every
|
|
717
|
+
// non-reserved entry, then append the missing referenced ones.
|
|
718
|
+
// Reserved entries are footnote/endnote separators identified by
|
|
719
|
+
// w:type="separator" / w:type="continuationSeparator" — Word expects
|
|
720
|
+
// them to exist and they don't carry user content. Filtering by w:type
|
|
721
|
+
// (not by magic w:id values) keeps this robust across authoring tools.
|
|
722
|
+
const newDoc = parseXml(sourcePartXml);
|
|
678
723
|
const rootEl = newDoc.getElementsByTagName(descriptor.rootTag)[0];
|
|
679
724
|
if (rootEl) {
|
|
680
|
-
// Remove all existing entries — we only want the missing ones
|
|
681
725
|
const existingEntries = rootEl.getElementsByTagName(descriptor.entryTag);
|
|
682
726
|
const toRemove = [];
|
|
683
727
|
for (let i = 0; i < existingEntries.length; i++) {
|
|
684
|
-
|
|
728
|
+
const el = existingEntries[i];
|
|
729
|
+
const type = el.getAttribute('w:type');
|
|
730
|
+
if (type !== 'separator' && type !== 'continuationSeparator') {
|
|
731
|
+
toRemove.push(el);
|
|
732
|
+
}
|
|
685
733
|
}
|
|
686
734
|
for (const el of toRemove) {
|
|
687
735
|
rootEl.removeChild(el);
|
|
688
736
|
}
|
|
689
|
-
// Add back only the missing entries
|
|
690
737
|
for (const el of missingElements) {
|
|
691
738
|
const imported = newDoc.importNode(el, true);
|
|
692
739
|
rootEl.appendChild(imported);
|
|
693
740
|
}
|
|
694
741
|
resultArchive.setFile(descriptor.partPath, serializer.serializeToString(newDoc));
|
|
695
742
|
result.createdPart = true;
|
|
696
|
-
// Bootstrap OPC metadata for the newly created part
|
|
697
743
|
await ensureOpcMetadata(resultArchive, descriptor);
|
|
698
744
|
}
|
|
699
745
|
}
|
|
@@ -765,52 +811,154 @@ async function ensureOpcMetadata(archive, descriptor) {
|
|
|
765
811
|
// Comment Ancillary Parts Merging
|
|
766
812
|
// =============================================================================
|
|
767
813
|
/**
|
|
768
|
-
*
|
|
769
|
-
*
|
|
814
|
+
* Walk the comment reply graph from each root referenced in the result
|
|
815
|
+
* document, merging reply <w:comment> entries, their commentsExtended.xml
|
|
816
|
+
* threading entries, and people.xml authors. Replies have no
|
|
817
|
+
* <w:commentReference> in document.xml — they're discoverable only via
|
|
818
|
+
* w15:paraIdParent in commentsExtended.xml. Without this expansion, rebuild
|
|
819
|
+
* mode silently drops reply threads (issue #108).
|
|
770
820
|
*/
|
|
771
|
-
async function mergeCommentAncillaryParts(
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
if (!originalCommentsXml)
|
|
821
|
+
async function mergeCommentAncillaryParts(sourceArchive, resultArchive, rootCommentIds) {
|
|
822
|
+
const sourceCommentsXml = await sourceArchive.getFile('word/comments.xml');
|
|
823
|
+
if (!sourceCommentsXml)
|
|
775
824
|
return;
|
|
776
|
-
const
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
const
|
|
780
|
-
|
|
781
|
-
|
|
825
|
+
const sourceDoc = parseXml(sourceCommentsXml);
|
|
826
|
+
// Build full source comment maps. Canonical paraId is the first <w:p>
|
|
827
|
+
// child's w14:paraId, matching getCommentElParaId() in primitives/comments.ts.
|
|
828
|
+
const commentById = new Map();
|
|
829
|
+
const paraIdByCommentId = new Map();
|
|
830
|
+
const commentIdByParaId = new Map();
|
|
831
|
+
const authorByCommentId = new Map();
|
|
832
|
+
const allCommentEls = sourceDoc.getElementsByTagName('w:comment');
|
|
833
|
+
for (let i = 0; i < allCommentEls.length; i++) {
|
|
834
|
+
const el = allCommentEls[i];
|
|
782
835
|
const id = el.getAttribute('w:id');
|
|
783
|
-
if (!id
|
|
836
|
+
if (!id)
|
|
784
837
|
continue;
|
|
838
|
+
commentById.set(id, el);
|
|
785
839
|
const author = el.getAttribute('w:author');
|
|
786
840
|
if (author)
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
const
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
841
|
+
authorByCommentId.set(id, author);
|
|
842
|
+
const firstP = el.getElementsByTagName('w:p')[0];
|
|
843
|
+
const paraId = firstP?.getAttribute('w14:paraId');
|
|
844
|
+
if (paraId) {
|
|
845
|
+
paraIdByCommentId.set(id, paraId);
|
|
846
|
+
commentIdByParaId.set(paraId, id);
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
// Seed inclusion sets from the root IDs that appear in the result document.
|
|
850
|
+
const includedCommentIds = new Set();
|
|
851
|
+
const includedParaIds = new Set();
|
|
852
|
+
const includedAuthors = new Set();
|
|
853
|
+
for (const id of rootCommentIds) {
|
|
854
|
+
if (!commentById.has(id))
|
|
855
|
+
continue;
|
|
856
|
+
includedCommentIds.add(id);
|
|
857
|
+
const pid = paraIdByCommentId.get(id);
|
|
858
|
+
if (pid)
|
|
859
|
+
includedParaIds.add(pid);
|
|
860
|
+
const author = authorByCommentId.get(id);
|
|
861
|
+
if (author)
|
|
862
|
+
includedAuthors.add(author);
|
|
863
|
+
}
|
|
864
|
+
// BFS over commentsExtended.xml's paraIdParent graph from each included
|
|
865
|
+
// root paraId. Skip entries that don't resolve to a real source comment so
|
|
866
|
+
// we never pull in dangling commentEx/people without a backing definition.
|
|
867
|
+
const sourceExtendedXml = await sourceArchive.getFile('word/commentsExtended.xml');
|
|
868
|
+
if (sourceExtendedXml) {
|
|
869
|
+
const exDoc = parseXml(sourceExtendedXml);
|
|
870
|
+
const exEls = exDoc.getElementsByTagName('w15:commentEx');
|
|
871
|
+
const childrenOf = new Map();
|
|
872
|
+
for (let i = 0; i < exEls.length; i++) {
|
|
873
|
+
const ex = exEls[i];
|
|
874
|
+
const childPid = ex.getAttribute('w15:paraId');
|
|
875
|
+
const parentPid = ex.getAttribute('w15:paraIdParent');
|
|
876
|
+
if (!childPid || !parentPid)
|
|
877
|
+
continue;
|
|
878
|
+
const arr = childrenOf.get(parentPid);
|
|
879
|
+
if (arr)
|
|
880
|
+
arr.push(childPid);
|
|
881
|
+
else
|
|
882
|
+
childrenOf.set(parentPid, [childPid]);
|
|
883
|
+
}
|
|
884
|
+
const queue = [...includedParaIds];
|
|
885
|
+
while (queue.length > 0) {
|
|
886
|
+
const pid = queue.shift();
|
|
887
|
+
const children = childrenOf.get(pid);
|
|
888
|
+
if (!children)
|
|
889
|
+
continue;
|
|
890
|
+
for (const childPid of children) {
|
|
891
|
+
if (includedParaIds.has(childPid))
|
|
892
|
+
continue;
|
|
893
|
+
const childCommentId = commentIdByParaId.get(childPid);
|
|
894
|
+
if (!childCommentId)
|
|
895
|
+
continue;
|
|
896
|
+
includedParaIds.add(childPid);
|
|
897
|
+
includedCommentIds.add(childCommentId);
|
|
898
|
+
const author = authorByCommentId.get(childCommentId);
|
|
899
|
+
if (author)
|
|
900
|
+
includedAuthors.add(author);
|
|
901
|
+
queue.push(childPid);
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
// Append any reply <w:comment> definitions still missing from result.
|
|
906
|
+
// The generic merge already added roots when needed; we add the replies
|
|
907
|
+
// (and any roots not yet present in the result, defensively).
|
|
908
|
+
await mergeMissingCommentDefinitions(resultArchive, commentById, includedCommentIds);
|
|
909
|
+
// Merge commentsExtended and people for the expanded set.
|
|
910
|
+
await mergeCommentsExtended(sourceArchive, resultArchive, includedParaIds);
|
|
911
|
+
await mergePeople(sourceArchive, resultArchive, includedAuthors);
|
|
801
912
|
}
|
|
802
|
-
|
|
913
|
+
/**
|
|
914
|
+
* Append any source <w:comment> definitions in `includedCommentIds` that
|
|
915
|
+
* aren't already in result/word/comments.xml. Mirrors the append-with-importNode
|
|
916
|
+
* pattern used by mergeCommentsExtended below.
|
|
917
|
+
*/
|
|
918
|
+
async function mergeMissingCommentDefinitions(resultArchive, commentById, includedCommentIds) {
|
|
919
|
+
if (includedCommentIds.size === 0)
|
|
920
|
+
return;
|
|
921
|
+
const resultXml = await resultArchive.getFile('word/comments.xml');
|
|
922
|
+
if (!resultXml) {
|
|
923
|
+
// If result has no comments.xml at all, the generic merge would have
|
|
924
|
+
// bootstrapped it for any included root. Nothing to do here.
|
|
925
|
+
return;
|
|
926
|
+
}
|
|
927
|
+
const resultDoc = parseXml(resultXml);
|
|
928
|
+
const rootEl = resultDoc.documentElement;
|
|
929
|
+
const existingIds = new Set();
|
|
930
|
+
const existing = rootEl.getElementsByTagName('w:comment');
|
|
931
|
+
for (let i = 0; i < existing.length; i++) {
|
|
932
|
+
const id = existing[i].getAttribute('w:id');
|
|
933
|
+
if (id)
|
|
934
|
+
existingIds.add(id);
|
|
935
|
+
}
|
|
936
|
+
let appended = false;
|
|
937
|
+
for (const id of includedCommentIds) {
|
|
938
|
+
if (existingIds.has(id))
|
|
939
|
+
continue;
|
|
940
|
+
const sourceEl = commentById.get(id);
|
|
941
|
+
if (!sourceEl)
|
|
942
|
+
continue;
|
|
943
|
+
rootEl.appendChild(resultDoc.importNode(sourceEl, true));
|
|
944
|
+
appended = true;
|
|
945
|
+
}
|
|
946
|
+
if (appended) {
|
|
947
|
+
resultArchive.setFile('word/comments.xml', serializer.serializeToString(resultDoc));
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
async function mergeCommentsExtended(sourceArchive, resultArchive, mergedParaIds) {
|
|
803
951
|
if (mergedParaIds.size === 0)
|
|
804
952
|
return;
|
|
805
|
-
const
|
|
806
|
-
if (!
|
|
953
|
+
const sourceXml = await sourceArchive.getFile('word/commentsExtended.xml');
|
|
954
|
+
if (!sourceXml)
|
|
807
955
|
return;
|
|
808
|
-
const
|
|
809
|
-
const
|
|
956
|
+
const sourceDoc = parseXml(sourceXml);
|
|
957
|
+
const sourceEntries = sourceDoc.getElementsByTagName('w15:commentEx');
|
|
810
958
|
// Collect entries whose paraId matches a merged comment's paragraph
|
|
811
959
|
const entriesToMerge = [];
|
|
812
|
-
for (let i = 0; i <
|
|
813
|
-
const el =
|
|
960
|
+
for (let i = 0; i < sourceEntries.length; i++) {
|
|
961
|
+
const el = sourceEntries[i];
|
|
814
962
|
const paraId = el.getAttribute('w15:paraId');
|
|
815
963
|
if (paraId && mergedParaIds.has(paraId)) {
|
|
816
964
|
entriesToMerge.push(el);
|
|
@@ -818,11 +966,10 @@ async function mergeCommentsExtended(originalArchive, resultArchive, mergedParaI
|
|
|
818
966
|
}
|
|
819
967
|
if (entriesToMerge.length === 0)
|
|
820
968
|
return;
|
|
821
|
-
|
|
969
|
+
const resultXml = await resultArchive.getFile('word/commentsExtended.xml');
|
|
822
970
|
if (resultXml) {
|
|
823
971
|
const resultDoc = parseXml(resultXml);
|
|
824
972
|
const rootEl = resultDoc.documentElement;
|
|
825
|
-
// Check existing paraIds to avoid duplicates
|
|
826
973
|
const existingParaIds = new Set();
|
|
827
974
|
const existing = rootEl.getElementsByTagName('w15:commentEx');
|
|
828
975
|
for (let i = 0; i < existing.length; i++) {
|
|
@@ -837,21 +984,57 @@ async function mergeCommentsExtended(originalArchive, resultArchive, mergedParaI
|
|
|
837
984
|
}
|
|
838
985
|
}
|
|
839
986
|
resultArchive.setFile('word/commentsExtended.xml', serializer.serializeToString(resultDoc));
|
|
987
|
+
return;
|
|
840
988
|
}
|
|
841
|
-
//
|
|
842
|
-
//
|
|
989
|
+
// Bootstrap: result lacks commentsExtended.xml but the merged comments
|
|
990
|
+
// depend on it for reply threading / done state. Clone the source's root
|
|
991
|
+
// (preserves namespaces), drop non-matching entries, then add OPC metadata.
|
|
992
|
+
const newDoc = parseXml(sourceXml);
|
|
993
|
+
const newRoot = newDoc.documentElement;
|
|
994
|
+
const allEntries = newRoot.getElementsByTagName('w15:commentEx');
|
|
995
|
+
const toRemove = [];
|
|
996
|
+
for (let i = 0; i < allEntries.length; i++) {
|
|
997
|
+
const el = allEntries[i];
|
|
998
|
+
const paraId = el.getAttribute('w15:paraId');
|
|
999
|
+
if (!paraId || !mergedParaIds.has(paraId))
|
|
1000
|
+
toRemove.push(el);
|
|
1001
|
+
}
|
|
1002
|
+
for (const el of toRemove)
|
|
1003
|
+
newRoot.removeChild(el);
|
|
1004
|
+
resultArchive.setFile('word/commentsExtended.xml', serializer.serializeToString(newDoc));
|
|
1005
|
+
await ensureOpcMetadata(resultArchive, COMMENTS_EXTENDED_DESCRIPTOR);
|
|
843
1006
|
}
|
|
844
|
-
|
|
1007
|
+
const COMMENTS_EXTENDED_DESCRIPTOR = {
|
|
1008
|
+
label: 'commentsExtended',
|
|
1009
|
+
partPath: 'word/commentsExtended.xml',
|
|
1010
|
+
referenceTag: '',
|
|
1011
|
+
entryTag: 'w15:commentEx',
|
|
1012
|
+
rootTag: 'w15:commentsEx',
|
|
1013
|
+
contentType: 'application/vnd.ms-word.commentsExtended+xml',
|
|
1014
|
+
relationshipType: 'http://schemas.microsoft.com/office/2011/relationships/commentsExtended',
|
|
1015
|
+
idBearingTags: [], // keyed by w15:paraId, not w:id
|
|
1016
|
+
};
|
|
1017
|
+
const PEOPLE_DESCRIPTOR = {
|
|
1018
|
+
label: 'people',
|
|
1019
|
+
partPath: 'word/people.xml',
|
|
1020
|
+
referenceTag: '',
|
|
1021
|
+
entryTag: 'w15:person',
|
|
1022
|
+
rootTag: 'w15:people',
|
|
1023
|
+
contentType: 'application/vnd.ms-word.people+xml',
|
|
1024
|
+
relationshipType: 'http://schemas.microsoft.com/office/2011/relationships/people',
|
|
1025
|
+
idBearingTags: [], // keyed by w15:author, not w:id
|
|
1026
|
+
};
|
|
1027
|
+
async function mergePeople(sourceArchive, resultArchive, mergedAuthors) {
|
|
845
1028
|
if (mergedAuthors.size === 0)
|
|
846
1029
|
return;
|
|
847
|
-
const
|
|
848
|
-
if (!
|
|
1030
|
+
const sourceXml = await sourceArchive.getFile('word/people.xml');
|
|
1031
|
+
if (!sourceXml)
|
|
849
1032
|
return;
|
|
850
|
-
const
|
|
851
|
-
const
|
|
1033
|
+
const sourceDoc = parseXml(sourceXml);
|
|
1034
|
+
const sourcePersons = sourceDoc.getElementsByTagName('w15:person');
|
|
852
1035
|
const personsToMerge = [];
|
|
853
|
-
for (let i = 0; i <
|
|
854
|
-
const el =
|
|
1036
|
+
for (let i = 0; i < sourcePersons.length; i++) {
|
|
1037
|
+
const el = sourcePersons[i];
|
|
855
1038
|
const author = el.getAttribute('w15:author');
|
|
856
1039
|
if (author && mergedAuthors.has(author)) {
|
|
857
1040
|
personsToMerge.push(el);
|
|
@@ -859,11 +1042,10 @@ async function mergePeople(originalArchive, resultArchive, mergedAuthors) {
|
|
|
859
1042
|
}
|
|
860
1043
|
if (personsToMerge.length === 0)
|
|
861
1044
|
return;
|
|
862
|
-
|
|
1045
|
+
const resultXml = await resultArchive.getFile('word/people.xml');
|
|
863
1046
|
if (resultXml) {
|
|
864
1047
|
const resultDoc = parseXml(resultXml);
|
|
865
1048
|
const rootEl = resultDoc.documentElement;
|
|
866
|
-
// Check existing authors to avoid duplicates
|
|
867
1049
|
const existingAuthors = new Set();
|
|
868
1050
|
const existing = rootEl.getElementsByTagName('w15:person');
|
|
869
1051
|
for (let i = 0; i < existing.length; i++) {
|
|
@@ -878,51 +1060,101 @@ async function mergePeople(originalArchive, resultArchive, mergedAuthors) {
|
|
|
878
1060
|
}
|
|
879
1061
|
}
|
|
880
1062
|
resultArchive.setFile('word/people.xml', serializer.serializeToString(resultDoc));
|
|
1063
|
+
return;
|
|
881
1064
|
}
|
|
882
|
-
//
|
|
883
|
-
//
|
|
1065
|
+
// Bootstrap: result lacks people.xml. Clone source root (preserves
|
|
1066
|
+
// namespaces), remove non-matching authors, then add OPC metadata.
|
|
1067
|
+
const newDoc = parseXml(sourceXml);
|
|
1068
|
+
const newRoot = newDoc.documentElement;
|
|
1069
|
+
const allPersons = newRoot.getElementsByTagName('w15:person');
|
|
1070
|
+
const toRemove = [];
|
|
1071
|
+
for (let i = 0; i < allPersons.length; i++) {
|
|
1072
|
+
const el = allPersons[i];
|
|
1073
|
+
const author = el.getAttribute('w15:author');
|
|
1074
|
+
if (!author || !mergedAuthors.has(author))
|
|
1075
|
+
toRemove.push(el);
|
|
1076
|
+
}
|
|
1077
|
+
for (const el of toRemove)
|
|
1078
|
+
newRoot.removeChild(el);
|
|
1079
|
+
resultArchive.setFile('word/people.xml', serializer.serializeToString(newDoc));
|
|
1080
|
+
await ensureOpcMetadata(resultArchive, PEOPLE_DESCRIPTOR);
|
|
1081
|
+
}
|
|
1082
|
+
const fallbackParagraphStatsKeys = new WeakMap();
|
|
1083
|
+
let nextFallbackParagraphStatsKey = 0;
|
|
1084
|
+
function paragraphStatsKey(atom) {
|
|
1085
|
+
if (atom.paragraphIndex !== undefined) {
|
|
1086
|
+
return `${atom.part.uri}:${atom.paragraphIndex}`;
|
|
1087
|
+
}
|
|
1088
|
+
const pAncestor = atom.ancestorElements.find((a) => a.tagName === 'w:p');
|
|
1089
|
+
if (!pAncestor)
|
|
1090
|
+
return undefined;
|
|
1091
|
+
let key = fallbackParagraphStatsKeys.get(pAncestor);
|
|
1092
|
+
if (!key) {
|
|
1093
|
+
key = `${atom.part.uri}:paragraph-ref:${nextFallbackParagraphStatsKey++}`;
|
|
1094
|
+
fallbackParagraphStatsKeys.set(pAncestor, key);
|
|
1095
|
+
}
|
|
1096
|
+
return key;
|
|
884
1097
|
}
|
|
885
1098
|
/**
|
|
886
1099
|
* Compute comparison statistics from merged atoms.
|
|
1100
|
+
*
|
|
1101
|
+
* Range counts are contiguous same-status runs in the merged atom stream, scoped
|
|
1102
|
+
* to a paragraph. Atom counts remain available under explicit names for callers
|
|
1103
|
+
* that need the old granular benchmark signal.
|
|
887
1104
|
*/
|
|
888
|
-
function
|
|
1105
|
+
export function computeAtomizerStats(mergedAtoms) {
|
|
889
1106
|
const reconstructionStats = computeReconstructionStats(mergedAtoms);
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
let
|
|
894
|
-
let
|
|
895
|
-
|
|
1107
|
+
let insertedRanges = 0;
|
|
1108
|
+
let deletedRanges = 0;
|
|
1109
|
+
let formatChanges = 0;
|
|
1110
|
+
let previousRangeStatus = null;
|
|
1111
|
+
let previousRangeParagraph;
|
|
1112
|
+
const paragraphs = new Map();
|
|
896
1113
|
for (const atom of mergedAtoms) {
|
|
897
|
-
|
|
898
|
-
const
|
|
899
|
-
const
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
1114
|
+
const paragraphKey = paragraphStatsKey(atom);
|
|
1115
|
+
const status = atom.correlationStatus;
|
|
1116
|
+
const rangeStatus = status === CorrelationStatus.Inserted ||
|
|
1117
|
+
status === CorrelationStatus.Deleted ||
|
|
1118
|
+
status === CorrelationStatus.FormatChanged
|
|
1119
|
+
? status
|
|
1120
|
+
: null;
|
|
1121
|
+
if (rangeStatus) {
|
|
1122
|
+
if (rangeStatus !== previousRangeStatus || paragraphKey !== previousRangeParagraph) {
|
|
1123
|
+
if (rangeStatus === CorrelationStatus.Inserted)
|
|
1124
|
+
insertedRanges++;
|
|
1125
|
+
if (rangeStatus === CorrelationStatus.Deleted)
|
|
1126
|
+
deletedRanges++;
|
|
1127
|
+
if (rangeStatus === CorrelationStatus.FormatChanged)
|
|
1128
|
+
formatChanges++;
|
|
906
1129
|
}
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
hasInserted = false;
|
|
1130
|
+
previousRangeStatus = rangeStatus;
|
|
1131
|
+
previousRangeParagraph = paragraphKey;
|
|
910
1132
|
}
|
|
911
|
-
|
|
912
|
-
|
|
1133
|
+
else {
|
|
1134
|
+
previousRangeStatus = null;
|
|
1135
|
+
previousRangeParagraph = undefined;
|
|
913
1136
|
}
|
|
914
|
-
|
|
915
|
-
|
|
1137
|
+
if (paragraphKey && (status === CorrelationStatus.Deleted || status === CorrelationStatus.Inserted)) {
|
|
1138
|
+
const flags = paragraphs.get(paragraphKey) ?? { hasDeleted: false, hasInserted: false };
|
|
1139
|
+
if (status === CorrelationStatus.Deleted)
|
|
1140
|
+
flags.hasDeleted = true;
|
|
1141
|
+
if (status === CorrelationStatus.Inserted)
|
|
1142
|
+
flags.hasInserted = true;
|
|
1143
|
+
paragraphs.set(paragraphKey, flags);
|
|
916
1144
|
}
|
|
917
1145
|
}
|
|
918
|
-
|
|
919
|
-
if (currentParagraph && hasDeleted && hasInserted) {
|
|
920
|
-
modifiedParagraphs.add(currentParagraph);
|
|
921
|
-
}
|
|
1146
|
+
const modifiedParagraphs = Array.from(paragraphs.values()).filter((flags) => flags.hasDeleted && flags.hasInserted).length;
|
|
922
1147
|
return {
|
|
923
|
-
insertions:
|
|
924
|
-
deletions:
|
|
925
|
-
modifications: modifiedParagraphs
|
|
1148
|
+
insertions: insertedRanges,
|
|
1149
|
+
deletions: deletedRanges,
|
|
1150
|
+
modifications: modifiedParagraphs,
|
|
1151
|
+
insertedRanges,
|
|
1152
|
+
deletedRanges,
|
|
1153
|
+
insertedAtoms: reconstructionStats.insertions,
|
|
1154
|
+
deletedAtoms: reconstructionStats.deletions,
|
|
1155
|
+
modifiedParagraphs,
|
|
1156
|
+
formatChanges,
|
|
1157
|
+
formatChangeAtoms: reconstructionStats.formatChanges,
|
|
926
1158
|
};
|
|
927
1159
|
}
|
|
928
1160
|
//# sourceMappingURL=pipeline.js.map
|