ooxml-core 1.13.0 → 1.14.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/dist/PptxHandler-5YP75BPO.cjs +12 -0
- package/dist/PptxHandler-GT5Q66TG.mjs +3 -0
- package/dist/{PptxHandler-FIN6XDTI.mjs → PptxHandler-KNBFECUE.mjs} +3 -3
- package/dist/PresentationBuilder-5DCCFHWJ.mjs +7 -0
- package/dist/PresentationBuilder-CVM6LJ7L.mjs +3 -0
- package/dist/PresentationBuilder-II7C4A3R.cjs +20 -0
- package/dist/automation/docx.d.ts +18 -0
- package/dist/automation/docx.d.ts.map +1 -1
- package/dist/automation/index.cjs +21278 -8022
- package/dist/automation/index.d.ts +1 -0
- package/dist/automation/index.d.ts.map +1 -1
- package/dist/automation/index.mjs +21275 -8023
- package/dist/automation/node.cjs +66 -6
- package/dist/automation/node.d.ts +10 -0
- package/dist/automation/node.d.ts.map +1 -1
- package/dist/automation/node.mjs +67 -7
- package/dist/automation/outline.d.ts +29 -0
- package/dist/automation/outline.d.ts.map +1 -0
- package/dist/automation/xlsx.d.ts +21 -0
- package/dist/automation/xlsx.d.ts.map +1 -1
- package/dist/chart/auto-title.d.ts +31 -0
- package/dist/chart/auto-title.d.ts.map +1 -0
- package/dist/chart/axis-format.d.ts +13 -0
- package/dist/chart/axis-format.d.ts.map +1 -0
- package/dist/chart/bubble-radius.d.ts +30 -0
- package/dist/chart/bubble-radius.d.ts.map +1 -0
- package/dist/chart/error-bar-amount.d.ts +22 -0
- package/dist/chart/error-bar-amount.d.ts.map +1 -0
- package/dist/chart/hierarchy.d.ts +69 -0
- package/dist/chart/hierarchy.d.ts.map +1 -0
- package/dist/chart/index.cjs +2377 -527
- package/dist/chart/index.d.ts +12 -0
- package/dist/chart/index.d.ts.map +1 -1
- package/dist/chart/index.mjs +2338 -528
- package/dist/chart/model-analysis.d.ts +66 -0
- package/dist/chart/model-analysis.d.ts.map +1 -0
- package/dist/chart/model-series.d.ts +5 -0
- package/dist/chart/model-series.d.ts.map +1 -1
- package/dist/chart/number-format-pattern.d.ts +35 -0
- package/dist/chart/number-format-pattern.d.ts.map +1 -0
- package/dist/chart/number-format.d.ts +21 -0
- package/dist/chart/number-format.d.ts.map +1 -0
- package/dist/chart/parse-analysis.d.ts +13 -0
- package/dist/chart/parse-analysis.d.ts.map +1 -0
- package/dist/chart/parse-series.d.ts +1 -1
- package/dist/chart/parse-series.d.ts.map +1 -1
- package/dist/chart/parse-util.d.ts +2 -0
- package/dist/chart/parse-util.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-analysis.d.ts +7 -0
- package/dist/chart/render/chart-svg-analysis.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-bars.d.ts +5 -0
- package/dist/chart/render/chart-svg-bars.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-cartesian.d.ts +7 -2
- package/dist/chart/render/chart-svg-cartesian.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-hierarchy.d.ts +5 -0
- package/dist/chart/render/chart-svg-hierarchy.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-plots.d.ts +5 -0
- package/dist/chart/render/chart-svg-plots.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-stock.d.ts +4 -0
- package/dist/chart/render/chart-svg-stock.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-waterfall.d.ts +4 -0
- package/dist/chart/render/chart-svg-waterfall.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-xy.d.ts +4 -0
- package/dist/chart/render/chart-svg-xy.d.ts.map +1 -0
- package/dist/chart/render/chart-svg.d.ts +1 -1
- package/dist/chart/render/chart-svg.d.ts.map +1 -1
- package/dist/chart/render/chart-value-axis.d.ts +6 -1
- package/dist/chart/render/chart-value-axis.d.ts.map +1 -1
- package/dist/chart/render/chart-view-analysis.d.ts +30 -0
- package/dist/chart/render/chart-view-analysis.d.ts.map +1 -0
- package/dist/chart/render/chart-view-ex.d.ts +24 -0
- package/dist/chart/render/chart-view-ex.d.ts.map +1 -0
- package/dist/chart/render/chart-view-families.d.ts +10 -0
- package/dist/chart/render/chart-view-families.d.ts.map +1 -0
- package/dist/chart/render/chart-view-series.d.ts +36 -0
- package/dist/chart/render/chart-view-series.d.ts.map +1 -0
- package/dist/chart/render/chart-view-stock.d.ts +23 -0
- package/dist/chart/render/chart-view-stock.d.ts.map +1 -0
- package/dist/chart/render/chart-view.d.ts +49 -18
- package/dist/chart/render/chart-view.d.ts.map +1 -1
- package/dist/chart/render/index.d.ts +2 -0
- package/dist/chart/render/index.d.ts.map +1 -1
- package/dist/chart/render/render-space.d.ts +6 -1
- package/dist/chart/render/render-space.d.ts.map +1 -1
- package/dist/chart/render/summary-analysis.d.ts +11 -0
- package/dist/chart/render/summary-analysis.d.ts.map +1 -0
- package/dist/chart/render/summary-from-chartex.d.ts +11 -0
- package/dist/chart/render/summary-from-chartex.d.ts.map +1 -0
- package/dist/chart/render/summary-from-space.d.ts.map +1 -1
- package/dist/chart/render/summary.d.ts +86 -3
- package/dist/chart/render/summary.d.ts.map +1 -1
- package/dist/chart/stock-candles.d.ts +72 -0
- package/dist/chart/stock-candles.d.ts.map +1 -0
- package/dist/chart/style-palette.d.ts +29 -0
- package/dist/chart/style-palette.d.ts.map +1 -0
- package/dist/chart/sunburst-arcs.d.ts +41 -0
- package/dist/chart/sunburst-arcs.d.ts.map +1 -0
- package/dist/chart/trendline-fit.d.ts +39 -0
- package/dist/chart/trendline-fit.d.ts.map +1 -0
- package/dist/chart/waterfall.d.ts +31 -0
- package/dist/chart/waterfall.d.ts.map +1 -0
- package/dist/chart/write-analysis.d.ts +12 -0
- package/dist/chart/write-analysis.d.ts.map +1 -0
- package/dist/chart/write-series.d.ts.map +1 -1
- package/dist/{chunk-G5PQKHCG.mjs → chunk-2D4IFQ5M.mjs} +1 -1
- package/dist/{chunk-UAY26XOI.mjs → chunk-2EBMHIGJ.mjs} +1303 -994
- package/dist/{chunk-TVE6UIJF.mjs → chunk-4WZLFUUA.mjs} +54 -13
- package/dist/{chunk-H2FRDUNV.mjs → chunk-54ASP65T.mjs} +868 -585
- package/dist/chunk-M4XLF4R7.mjs +387 -0
- package/dist/{chunk-O6NIA4NG.mjs → chunk-ORH32TO3.mjs} +5798 -5742
- package/dist/{chunk-B2JBBAEQ.mjs → chunk-TNNXOW2O.mjs} +1 -1
- package/dist/{chunk-IT3U6QD6.cjs → chunk-TQE7FFNT.cjs} +6754 -6695
- package/dist/{chunk-7QZGRB3T.cjs → chunk-X7MGZQ6C.cjs} +1321 -995
- package/dist/{chunk-6DELVMYB.mjs → chunk-XGXIS4PN.mjs} +12316 -12260
- package/dist/crypto/decrypt.d.ts +17 -3
- package/dist/crypto/decrypt.d.ts.map +1 -1
- package/dist/crypto/encryption-info.d.ts.map +1 -1
- package/dist/crypto/index.cjs +252 -78
- package/dist/crypto/index.d.ts +19 -4
- package/dist/crypto/index.d.ts.map +1 -1
- package/dist/crypto/index.mjs +252 -79
- package/dist/crypto/key-derivation.d.ts +2 -3
- package/dist/crypto/key-derivation.d.ts.map +1 -1
- package/dist/crypto/validate.d.ts +22 -0
- package/dist/crypto/validate.d.ts.map +1 -0
- package/dist/diagram/engine/layout-def-parse.d.ts.map +1 -1
- package/dist/diagram/engine/pres-tree.d.ts.map +1 -1
- package/dist/diagram/index.cjs +102 -52
- package/dist/diagram/index.mjs +102 -52
- package/dist/digest/index.cjs +23 -11
- package/dist/digest/index.d.ts +2 -1
- package/dist/digest/index.d.ts.map +1 -1
- package/dist/digest/index.mjs +21 -12
- package/dist/digest/password-hash.d.ts +19 -5
- package/dist/digest/password-hash.d.ts.map +1 -1
- package/dist/digest/timing-safe.d.ts +7 -0
- package/dist/digest/timing-safe.d.ts.map +1 -0
- package/dist/docx/block-parser.d.ts.map +1 -1
- package/dist/docx/chart-paint.d.ts.map +1 -1
- package/dist/docx/chart.d.ts +10 -2
- package/dist/docx/chart.d.ts.map +1 -1
- package/dist/docx/content-control-edit.d.ts +26 -0
- package/dist/docx/content-control-edit.d.ts.map +1 -0
- package/dist/docx/content-control-model.d.ts +51 -0
- package/dist/docx/content-control-model.d.ts.map +1 -0
- package/dist/docx/content-control.d.ts +9 -0
- package/dist/docx/content-control.d.ts.map +1 -0
- package/dist/docx/default-styles.d.ts.map +1 -1
- package/dist/docx/drawing.d.ts.map +1 -1
- package/dist/docx/embedded.cjs +9932 -935
- package/dist/docx/embedded.mjs +9932 -935
- package/dist/docx/equation.d.ts +7 -3
- package/dist/docx/equation.d.ts.map +1 -1
- package/dist/docx/index.cjs +14117 -1513
- package/dist/docx/index.d.ts +6 -0
- package/dist/docx/index.d.ts.map +1 -1
- package/dist/docx/index.mjs +14093 -1514
- package/dist/docx/inline-model.d.ts +3 -0
- package/dist/docx/inline-model.d.ts.map +1 -1
- package/dist/docx/layout/adapt-floats.d.ts +3 -3
- package/dist/docx/layout/adapt-floats.d.ts.map +1 -1
- package/dist/docx/layout/adapter.d.ts.map +1 -1
- package/dist/docx/layout/equation-object.d.ts +7 -0
- package/dist/docx/layout/equation-object.d.ts.map +1 -0
- package/dist/docx/layout/floats.d.ts +8 -0
- package/dist/docx/layout/floats.d.ts.map +1 -1
- package/dist/docx/layout/incremental-layout.d.ts +39 -0
- package/dist/docx/layout/incremental-layout.d.ts.map +1 -0
- package/dist/docx/layout/index.cjs +14177 -1707
- package/dist/docx/layout/index.d.ts +2 -2
- package/dist/docx/layout/index.d.ts.map +1 -1
- package/dist/docx/layout/index.mjs +14176 -1708
- package/dist/docx/layout/input.d.ts +4 -0
- package/dist/docx/layout/input.d.ts.map +1 -1
- package/dist/docx/layout/layout-session.d.ts +13 -2
- package/dist/docx/layout/layout-session.d.ts.map +1 -1
- package/dist/docx/layout/layout.d.ts +1 -1
- package/dist/docx/layout/layout.d.ts.map +1 -1
- package/dist/docx/layout/line-metrics.d.ts.map +1 -1
- package/dist/docx/layout/page-cursor.d.ts +1 -1
- package/dist/docx/layout/page-cursor.d.ts.map +1 -1
- package/dist/docx/layout/page-fields.d.ts +3 -1
- package/dist/docx/layout/page-fields.d.ts.map +1 -1
- package/dist/docx/layout/result.d.ts +14 -1
- package/dist/docx/layout/result.d.ts.map +1 -1
- package/dist/docx/layout/section-flow.d.ts +11 -1
- package/dist/docx/layout/section-flow.d.ts.map +1 -1
- package/dist/docx/ligatures.d.ts +2 -0
- package/dist/docx/ligatures.d.ts.map +1 -1
- package/dist/docx/load/index.cjs +12709 -3590
- package/dist/docx/load/index.mjs +12709 -3590
- package/dist/docx/model-paragraph.d.ts +3 -0
- package/dist/docx/model-paragraph.d.ts.map +1 -1
- package/dist/docx/model-run.d.ts +3 -0
- package/dist/docx/model-run.d.ts.map +1 -1
- package/dist/docx/model.d.ts +3 -0
- package/dist/docx/model.d.ts.map +1 -1
- package/dist/docx/numbering-parse.d.ts.map +1 -1
- package/dist/docx/numbering-text.d.ts.map +1 -1
- package/dist/docx/package-limits.d.ts +6 -0
- package/dist/docx/package-limits.d.ts.map +1 -0
- package/dist/docx/parse-content-control.d.ts +28 -0
- package/dist/docx/parse-content-control.d.ts.map +1 -0
- package/dist/docx/parse-table.d.ts.map +1 -1
- package/dist/docx/parse.d.ts.map +1 -1
- package/dist/docx/save.d.ts.map +1 -1
- package/dist/docx/shape-model.d.ts +31 -0
- package/dist/docx/shape-model.d.ts.map +1 -0
- package/dist/docx/shape-palette.d.ts +19 -0
- package/dist/docx/shape-palette.d.ts.map +1 -0
- package/dist/docx/shape-parse.d.ts +16 -0
- package/dist/docx/shape-parse.d.ts.map +1 -0
- package/dist/docx/shape-svg.d.ts +20 -0
- package/dist/docx/shape-svg.d.ts.map +1 -0
- package/dist/docx/table-model.d.ts +4 -0
- package/dist/docx/table-model.d.ts.map +1 -1
- package/dist/docx/ui/content-control-commands.d.ts +37 -0
- package/dist/docx/ui/content-control-commands.d.ts.map +1 -0
- package/dist/docx/ui/content-control-guard.d.ts +8 -0
- package/dist/docx/ui/content-control-guard.d.ts.map +1 -0
- package/dist/docx/ui/content-control-spans.d.ts +19 -0
- package/dist/docx/ui/content-control-spans.d.ts.map +1 -0
- package/dist/docx/ui/index.cjs +3132 -506
- package/dist/docx/ui/index.d.ts +3 -0
- package/dist/docx/ui/index.d.ts.map +1 -1
- package/dist/docx/ui/index.mjs +3117 -507
- package/dist/docx/ui/inline-content-schema.d.ts.map +1 -1
- package/dist/docx/ui/paragraph-attributes.d.ts.map +1 -1
- package/dist/docx/ui/ribbon-action-ids.d.ts +1 -1
- package/dist/docx/ui/ribbon-action-ids.d.ts.map +1 -1
- package/dist/docx/ui/run-adapter.d.ts.map +1 -1
- package/dist/docx/ui/run-compare.d.ts.map +1 -1
- package/dist/docx/ui/run-mark-properties.d.ts.map +1 -1
- package/dist/docx/ui/run-marks.d.ts.map +1 -1
- package/dist/docx/ui/schema-marks.d.ts +16 -1
- package/dist/docx/ui/schema-marks.d.ts.map +1 -1
- package/dist/docx/ui/table-structure-guard.d.ts.map +1 -1
- package/dist/docx/write-block-placement.d.ts +9 -0
- package/dist/docx/write-block-placement.d.ts.map +1 -0
- package/dist/docx/write-content-control.d.ts +12 -0
- package/dist/docx/write-content-control.d.ts.map +1 -0
- package/dist/docx/write-drawing.d.ts +2 -0
- package/dist/docx/write-drawing.d.ts.map +1 -1
- package/dist/docx/write-inline.d.ts.map +1 -1
- package/dist/docx/write-paragraph.d.ts.map +1 -1
- package/dist/docx/write-shape.d.ts +16 -0
- package/dist/docx/write-shape.d.ts.map +1 -0
- package/dist/docx/write-table.d.ts.map +1 -1
- package/dist/docx/write.d.ts.map +1 -1
- package/dist/drawingml/index.cjs +24 -0
- package/dist/drawingml/index.mjs +24 -0
- package/dist/geometry/index.cjs +63 -48
- package/dist/geometry/index.mjs +63 -48
- package/dist/geometry/preset-shape-definitions-table.d.ts.map +1 -1
- package/dist/index.cjs +4291 -1578
- package/dist/index.mjs +4291 -1578
- package/dist/math/equation-gallery.d.ts +10 -0
- package/dist/math/equation-gallery.d.ts.map +1 -0
- package/dist/math/index.cjs +777 -139
- package/dist/math/index.d.ts +3 -0
- package/dist/math/index.d.ts.map +1 -1
- package/dist/math/index.mjs +772 -140
- package/dist/math/latex-omml-siblings.d.ts.map +1 -1
- package/dist/math/latex-to-omml.d.ts.map +1 -1
- package/dist/math/omml-box-grouped.d.ts +9 -0
- package/dist/math/omml-box-grouped.d.ts.map +1 -0
- package/dist/math/omml-box-layout.d.ts +15 -0
- package/dist/math/omml-box-layout.d.ts.map +1 -0
- package/dist/math/omml-box-structures.d.ts +7 -0
- package/dist/math/omml-box-structures.d.ts.map +1 -0
- package/dist/math/omml-box.d.ts +85 -0
- package/dist/math/omml-box.d.ts.map +1 -0
- package/dist/math/omml-dom.d.ts.map +1 -1
- package/dist/math/omml-mathml-converters.d.ts.map +1 -1
- package/dist/math/omml-svg.d.ts +14 -0
- package/dist/math/omml-svg.d.ts.map +1 -0
- package/dist/math/omml-to-xml.d.ts +10 -0
- package/dist/math/omml-to-xml.d.ts.map +1 -0
- package/dist/opc/embedded-packages.d.ts.map +1 -1
- package/dist/opc/index.cjs +257 -22
- package/dist/opc/index.d.ts +1 -0
- package/dist/opc/index.d.ts.map +1 -1
- package/dist/opc/index.mjs +251 -23
- package/dist/opc/package.d.ts.map +1 -1
- package/dist/opc/signature/detection.d.ts +22 -6
- package/dist/opc/signature/detection.d.ts.map +1 -1
- package/dist/opc/signature/index.d.ts +1 -1
- package/dist/opc/signature/index.d.ts.map +1 -1
- package/dist/opc/signature/xml-utils.d.ts.map +1 -1
- package/dist/opc/zip-limits.d.ts +52 -0
- package/dist/opc/zip-limits.d.ts.map +1 -0
- package/dist/pptx/automation/index.cjs +1848 -1320
- package/dist/pptx/automation/index.d.ts +4 -4
- package/dist/pptx/automation/index.mjs +6 -6
- package/dist/pptx/chunks/{elements-DmbzOhFu.d.ts → elements-tK7xnWeS.d.ts} +20 -9
- package/dist/pptx/chunks/elements-tK7xnWeS.d.ts.map +1 -0
- package/dist/pptx/chunks/{index-Cija6Dih.d.ts → index-BSpNQuvz.d.ts} +30 -5
- package/dist/pptx/chunks/{index-Cija6Dih.d.ts.map → index-BSpNQuvz.d.ts.map} +1 -1
- package/dist/pptx/chunks/{index-BmvOxbsh.d.ts → index-DS9Y4Ne3.d.ts} +25 -9
- package/dist/pptx/chunks/index-DS9Y4Ne3.d.ts.map +1 -0
- package/dist/pptx/chunks/inspection-status-DjiWd_Aa.d.ts.map +1 -1
- package/dist/pptx/chunks/{text-operations-sXxhsKDd.d.ts → text-operations-BdD_UQ11.d.ts} +2 -2
- package/dist/pptx/chunks/{text-operations-sXxhsKDd.d.ts.map → text-operations-BdD_UQ11.d.ts.map} +1 -1
- package/dist/pptx/cli/index.cjs +1795 -1275
- package/dist/pptx/cli/index.d.ts +1 -1
- package/dist/pptx/cli/index.mjs +5 -5
- package/dist/pptx/converter/index.cjs +80 -54
- package/dist/pptx/converter/index.d.ts +1 -1
- package/dist/pptx/converter/index.mjs +3 -3
- package/dist/pptx/editor/render/find-replace.cjs +14 -14
- package/dist/pptx/editor/render/find-replace.d.ts +2 -2
- package/dist/pptx/editor/render/find-replace.mjs +1 -1
- package/dist/pptx/editor/render/slide-operations.cjs +8 -8
- package/dist/pptx/editor/render/slide-operations.mjs +2 -2
- package/dist/pptx/editor/render/text-runs-style-patch.d.ts +1 -1
- package/dist/pptx/editor/render/text-style-scope.d.ts +1 -1
- package/dist/pptx/index.cjs +1117 -351
- package/dist/pptx/index.d.ts +5 -5
- package/dist/pptx/index.mjs +6 -6
- package/dist/pptx/signature-node/index.cjs +342 -65
- package/dist/pptx/signature-node/index.d.ts +12 -1
- package/dist/pptx/signature-node/index.d.ts.map +1 -1
- package/dist/pptx/signature-node/index.mjs +112 -52
- package/dist/teams/activity-feed.d.ts +19 -0
- package/dist/teams/activity-feed.d.ts.map +1 -0
- package/dist/teams/activity-state.d.ts +12 -0
- package/dist/teams/activity-state.d.ts.map +1 -0
- package/dist/teams/activity.d.ts +52 -0
- package/dist/teams/activity.d.ts.map +1 -0
- package/dist/teams/calendar.d.ts +57 -0
- package/dist/teams/calendar.d.ts.map +1 -0
- package/dist/teams/chat-actions.d.ts +20 -0
- package/dist/teams/chat-actions.d.ts.map +1 -0
- package/dist/teams/chat-rooms.d.ts +42 -0
- package/dist/teams/chat-rooms.d.ts.map +1 -0
- package/dist/teams/chat-view.d.ts +56 -0
- package/dist/teams/chat-view.d.ts.map +1 -0
- package/dist/teams/chat.d.ts +19 -3
- package/dist/teams/chat.d.ts.map +1 -1
- package/dist/teams/chats.d.ts +52 -0
- package/dist/teams/chats.d.ts.map +1 -0
- package/dist/teams/ics-timezone.d.ts +17 -0
- package/dist/teams/ics-timezone.d.ts.map +1 -0
- package/dist/teams/ics.d.ts +20 -0
- package/dist/teams/ics.d.ts.map +1 -0
- package/dist/teams/index.cjs +7252 -2926
- package/dist/teams/index.d.ts +22 -0
- package/dist/teams/index.d.ts.map +1 -1
- package/dist/teams/index.mjs +7162 -2927
- package/dist/teams/meeting-actions.d.ts +31 -0
- package/dist/teams/meeting-actions.d.ts.map +1 -0
- package/dist/teams/meeting-exceptions.d.ts +28 -0
- package/dist/teams/meeting-exceptions.d.ts.map +1 -0
- package/dist/teams/meeting-reminders.d.ts +13 -0
- package/dist/teams/meeting-reminders.d.ts.map +1 -0
- package/dist/teams/meetings.d.ts +71 -0
- package/dist/teams/meetings.d.ts.map +1 -0
- package/dist/teams/mention-text.d.ts +11 -0
- package/dist/teams/mention-text.d.ts.map +1 -0
- package/dist/teams/mentions.d.ts +68 -0
- package/dist/teams/mentions.d.ts.map +1 -0
- package/dist/teams/model.d.ts +7 -0
- package/dist/teams/model.d.ts.map +1 -1
- package/dist/teams/notifications.d.ts +21 -0
- package/dist/teams/notifications.d.ts.map +1 -0
- package/dist/teams/recurrence.d.ts +18 -0
- package/dist/teams/recurrence.d.ts.map +1 -0
- package/dist/teams/roster.d.ts +12 -0
- package/dist/teams/roster.d.ts.map +1 -0
- package/dist/teams/server-config.d.ts +23 -2
- package/dist/teams/server-config.d.ts.map +1 -1
- package/dist/teams/server-session.d.ts +19 -0
- package/dist/teams/server-session.d.ts.map +1 -0
- package/dist/teams/shared-chat.d.ts +83 -0
- package/dist/teams/shared-chat.d.ts.map +1 -0
- package/dist/teams/store.d.ts +58 -4
- package/dist/teams/store.d.ts.map +1 -1
- package/dist/teams/sync-transport.d.ts +12 -0
- package/dist/teams/sync-transport.d.ts.map +1 -0
- package/dist/teams/time-zone.d.ts +32 -0
- package/dist/teams/time-zone.d.ts.map +1 -0
- package/dist/teams/view.d.ts +3 -0
- package/dist/teams/view.d.ts.map +1 -1
- package/dist/teams/workspace.d.ts +13 -2
- package/dist/teams/workspace.d.ts.map +1 -1
- package/dist/visio/edit-connector-follow.d.ts +15 -0
- package/dist/visio/edit-connector-follow.d.ts.map +1 -0
- package/dist/visio/edit-connector-obstacles.d.ts +9 -3
- package/dist/visio/edit-connector-obstacles.d.ts.map +1 -1
- package/dist/visio/edit-connector-reroute.d.ts.map +1 -1
- package/dist/visio/edit-connector.d.ts.map +1 -1
- package/dist/visio/edit-master-add.d.ts +37 -0
- package/dist/visio/edit-master-add.d.ts.map +1 -0
- package/dist/visio/edit-master-drop.d.ts +6 -0
- package/dist/visio/edit-master-drop.d.ts.map +1 -1
- package/dist/visio/edit-recalculate-index.d.ts +5 -0
- package/dist/visio/edit-recalculate-index.d.ts.map +1 -1
- package/dist/visio/edit-recalculate-values.d.ts.map +1 -1
- package/dist/visio/edit-stencil-connector-layout.d.ts +2 -0
- package/dist/visio/edit-stencil-connector-layout.d.ts.map +1 -1
- package/dist/visio/edit-stencil-connector.d.ts +1 -0
- package/dist/visio/edit-stencil-connector.d.ts.map +1 -1
- package/dist/visio/edit-stencil-import.d.ts +10 -0
- package/dist/visio/edit-stencil-import.d.ts.map +1 -0
- package/dist/visio/edit-stencil-line.d.ts +29 -0
- package/dist/visio/edit-stencil-line.d.ts.map +1 -0
- package/dist/visio/edit-stencil-master.d.ts +3 -8
- package/dist/visio/edit-stencil-master.d.ts.map +1 -1
- package/dist/visio/edit.d.ts.map +1 -1
- package/dist/visio/formula-evaluate.d.ts.map +1 -1
- package/dist/visio/formula-math-functions.d.ts +11 -0
- package/dist/visio/formula-math-functions.d.ts.map +1 -0
- package/dist/visio/formula-text-functions.d.ts +23 -0
- package/dist/visio/formula-text-functions.d.ts.map +1 -0
- package/dist/visio/formula.d.ts.map +1 -1
- package/dist/visio/index.cjs +2552 -1833
- package/dist/visio/index.d.ts +1 -0
- package/dist/visio/index.d.ts.map +1 -1
- package/dist/visio/index.mjs +2552 -1834
- package/dist/visio/parser.d.ts +6 -0
- package/dist/visio/parser.d.ts.map +1 -1
- package/dist/visio/stencil-file.d.ts +14 -0
- package/dist/visio/stencil-file.d.ts.map +1 -0
- package/dist/visio/ui/index.cjs +2398 -1679
- package/dist/visio/ui/index.mjs +2398 -1680
- package/dist/visio/ui/master-drop.d.ts +10 -0
- package/dist/visio/ui/master-drop.d.ts.map +1 -1
- package/dist/xlsx/edit/cell-values.d.ts.map +1 -1
- package/dist/xlsx/edit/clipboard-html-parse.d.ts +4 -0
- package/dist/xlsx/edit/clipboard-html-parse.d.ts.map +1 -1
- package/dist/xlsx/edit/data-table.d.ts +38 -0
- package/dist/xlsx/edit/data-table.d.ts.map +1 -0
- package/dist/xlsx/edit/drawings.d.ts.map +1 -1
- package/dist/xlsx/edit/goal-seek.d.ts +30 -0
- package/dist/xlsx/edit/goal-seek.d.ts.map +1 -0
- package/dist/xlsx/edit/goal-solver.d.ts +20 -0
- package/dist/xlsx/edit/goal-solver.d.ts.map +1 -0
- package/dist/xlsx/edit/history.d.ts +1 -1
- package/dist/xlsx/edit/history.d.ts.map +1 -1
- package/dist/xlsx/edit/index.d.ts +5 -0
- package/dist/xlsx/edit/index.d.ts.map +1 -1
- package/dist/xlsx/edit/input-text.d.ts.map +1 -1
- package/dist/xlsx/edit/pivots.d.ts +2 -1
- package/dist/xlsx/edit/pivots.d.ts.map +1 -1
- package/dist/xlsx/edit/scenarios.d.ts +41 -0
- package/dist/xlsx/edit/scenarios.d.ts.map +1 -0
- package/dist/xlsx/edit/session.d.ts.map +1 -1
- package/dist/xlsx/edit/slicers.d.ts +34 -0
- package/dist/xlsx/edit/slicers.d.ts.map +1 -0
- package/dist/xlsx/edit/table-edits.d.ts.map +1 -1
- package/dist/xlsx/edit/timelines.d.ts +26 -0
- package/dist/xlsx/edit/timelines.d.ts.map +1 -0
- package/dist/xlsx/edit/types.d.ts +39 -0
- package/dist/xlsx/edit/types.d.ts.map +1 -1
- package/dist/xlsx/formula/context.d.ts +13 -0
- package/dist/xlsx/formula/context.d.ts.map +1 -1
- package/dist/xlsx/formula/engine.d.ts.map +1 -1
- package/dist/xlsx/formula/evaluator.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/helpers.d.ts +3 -2
- package/dist/xlsx/formula/functions/helpers.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/text-regex.d.ts +8 -0
- package/dist/xlsx/formula/functions/text-regex.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/text.d.ts.map +1 -1
- package/dist/xlsx/formula/functions/wildcard.d.ts +8 -0
- package/dist/xlsx/formula/functions/wildcard.d.ts.map +1 -0
- package/dist/xlsx/formula/values.d.ts +9 -0
- package/dist/xlsx/formula/values.d.ts.map +1 -1
- package/dist/xlsx/index.cjs +9230 -3233
- package/dist/xlsx/index.d.ts +1 -0
- package/dist/xlsx/index.d.ts.map +1 -1
- package/dist/xlsx/index.mjs +9146 -3233
- package/dist/xlsx/layout/chart-view.d.ts.map +1 -1
- package/dist/xlsx/layout/header-footer-edit.d.ts +16 -0
- package/dist/xlsx/layout/header-footer-edit.d.ts.map +1 -0
- package/dist/xlsx/layout/index.d.ts +3 -0
- package/dist/xlsx/layout/index.d.ts.map +1 -1
- package/dist/xlsx/layout/page-break-view.d.ts +39 -0
- package/dist/xlsx/layout/page-break-view.d.ts.map +1 -0
- package/dist/xlsx/layout/page-view.d.ts +69 -0
- package/dist/xlsx/layout/page-view.d.ts.map +1 -0
- package/dist/xlsx/layout/ref-evaluator.d.ts.map +1 -1
- package/dist/xlsx/load/index.cjs +4528 -1707
- package/dist/xlsx/load/index.mjs +4527 -1706
- package/dist/xlsx/model-pivots.d.ts +88 -2
- package/dist/xlsx/model-pivots.d.ts.map +1 -1
- package/dist/xlsx/model-slicers.d.ts +146 -0
- package/dist/xlsx/model-slicers.d.ts.map +1 -0
- package/dist/xlsx/model-whatif.d.ts +51 -0
- package/dist/xlsx/model-whatif.d.ts.map +1 -0
- package/dist/xlsx/model.d.ts +26 -1
- package/dist/xlsx/model.d.ts.map +1 -1
- package/dist/xlsx/pivot/admission.d.ts.map +1 -1
- package/dist/xlsx/pivot/aggregate.d.ts +15 -6
- package/dist/xlsx/pivot/aggregate.d.ts.map +1 -1
- package/dist/xlsx/pivot/axes.d.ts +6 -0
- package/dist/xlsx/pivot/axes.d.ts.map +1 -0
- package/dist/xlsx/pivot/cache-xml.d.ts.map +1 -1
- package/dist/xlsx/pivot/columns.d.ts +48 -0
- package/dist/xlsx/pivot/columns.d.ts.map +1 -0
- package/dist/xlsx/pivot/data.d.ts +9 -3
- package/dist/xlsx/pivot/data.d.ts.map +1 -1
- package/dist/xlsx/pivot/date-axes.d.ts +12 -0
- package/dist/xlsx/pivot/date-axes.d.ts.map +1 -0
- package/dist/xlsx/pivot/date-group-read.d.ts +11 -0
- package/dist/xlsx/pivot/date-group-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/date-groups.d.ts +60 -0
- package/dist/xlsx/pivot/date-groups.d.ts.map +1 -0
- package/dist/xlsx/pivot/date-read.d.ts +10 -0
- package/dist/xlsx/pivot/date-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/dates.d.ts +17 -0
- package/dist/xlsx/pivot/dates.d.ts.map +1 -0
- package/dist/xlsx/pivot/group-read.d.ts +9 -0
- package/dist/xlsx/pivot/group-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/groups.d.ts +31 -0
- package/dist/xlsx/pivot/groups.d.ts.map +1 -0
- package/dist/xlsx/pivot/hierarchy.d.ts +4 -1
- package/dist/xlsx/pivot/hierarchy.d.ts.map +1 -1
- package/dist/xlsx/pivot/index.d.ts +7 -0
- package/dist/xlsx/pivot/index.d.ts.map +1 -1
- package/dist/xlsx/pivot/item-filters-read.d.ts +7 -0
- package/dist/xlsx/pivot/item-filters-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/item-filters.d.ts +23 -0
- package/dist/xlsx/pivot/item-filters.d.ts.map +1 -0
- package/dist/xlsx/pivot/measures.d.ts +6 -4
- package/dist/xlsx/pivot/measures.d.ts.map +1 -1
- package/dist/xlsx/pivot/nested.d.ts +8 -0
- package/dist/xlsx/pivot/nested.d.ts.map +1 -0
- package/dist/xlsx/pivot/page-filter-admission.d.ts.map +1 -1
- package/dist/xlsx/pivot/page-filter.d.ts.map +1 -1
- package/dist/xlsx/pivot/read.d.ts +2 -1
- package/dist/xlsx/pivot/read.d.ts.map +1 -1
- package/dist/xlsx/pivot/subtotal-read.d.ts +9 -0
- package/dist/xlsx/pivot/subtotal-read.d.ts.map +1 -0
- package/dist/xlsx/pivot/subtotals.d.ts +23 -0
- package/dist/xlsx/pivot/subtotals.d.ts.map +1 -0
- package/dist/xlsx/pivot/table-xml.d.ts +1 -1
- package/dist/xlsx/pivot/table-xml.d.ts.map +1 -1
- package/dist/xlsx/pivot/values-axis.d.ts +2 -2
- package/dist/xlsx/pivot/values-axis.d.ts.map +1 -1
- package/dist/xlsx/read/chart-ex.d.ts +9 -0
- package/dist/xlsx/read/chart-ex.d.ts.map +1 -0
- package/dist/xlsx/read/chart.d.ts.map +1 -1
- package/dist/xlsx/read/drawing.d.ts.map +1 -1
- package/dist/xlsx/read/load.d.ts.map +1 -1
- package/dist/xlsx/read/package.d.ts +2 -1
- package/dist/xlsx/read/package.d.ts.map +1 -1
- package/dist/xlsx/read/scenarios.d.ts +4 -0
- package/dist/xlsx/read/scenarios.d.ts.map +1 -0
- package/dist/xlsx/read/sheet-data.d.ts.map +1 -1
- package/dist/xlsx/read/sheet-props.d.ts.map +1 -1
- package/dist/xlsx/read/tables.d.ts +3 -0
- package/dist/xlsx/read/tables.d.ts.map +1 -1
- package/dist/xlsx/read/worksheet.d.ts.map +1 -1
- package/dist/xlsx/slicer/book.d.ts +16 -0
- package/dist/xlsx/slicer/book.d.ts.map +1 -0
- package/dist/xlsx/slicer/frame.d.ts +14 -0
- package/dist/xlsx/slicer/frame.d.ts.map +1 -0
- package/dist/xlsx/slicer/index.d.ts +10 -0
- package/dist/xlsx/slicer/index.d.ts.map +1 -0
- package/dist/xlsx/slicer/items.d.ts +30 -0
- package/dist/xlsx/slicer/items.d.ts.map +1 -0
- package/dist/xlsx/slicer/layout.d.ts +67 -0
- package/dist/xlsx/slicer/layout.d.ts.map +1 -0
- package/dist/xlsx/slicer/read-slicers.d.ts +11 -0
- package/dist/xlsx/slicer/read-slicers.d.ts.map +1 -0
- package/dist/xlsx/slicer/read-timelines.d.ts +5 -0
- package/dist/xlsx/slicer/read-timelines.d.ts.map +1 -0
- package/dist/xlsx/slicer/read.d.ts +26 -0
- package/dist/xlsx/slicer/read.d.ts.map +1 -0
- package/dist/xlsx/slicer/select.d.ts +10 -0
- package/dist/xlsx/slicer/select.d.ts.map +1 -0
- package/dist/xlsx/slicer/styles.d.ts +36 -0
- package/dist/xlsx/slicer/styles.d.ts.map +1 -0
- package/dist/xlsx/slicer/table-filter.d.ts +28 -0
- package/dist/xlsx/slicer/table-filter.d.ts.map +1 -0
- package/dist/xlsx/slicer/timeline-periods.d.ts +35 -0
- package/dist/xlsx/slicer/timeline-periods.d.ts.map +1 -0
- package/dist/xlsx/slicer/timeline-view.d.ts +60 -0
- package/dist/xlsx/slicer/timeline-view.d.ts.map +1 -0
- package/dist/xlsx/slicer/write-plan.d.ts +31 -0
- package/dist/xlsx/slicer/write-plan.d.ts.map +1 -0
- package/dist/xlsx/slicer/write-timeline.d.ts +7 -0
- package/dist/xlsx/slicer/write-timeline.d.ts.map +1 -0
- package/dist/xlsx/slicer/write-xml.d.ts +17 -0
- package/dist/xlsx/slicer/write-xml.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/i18n/index.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/pivots.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/print-layout.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/i18n/slicers.d.ts +3 -0
- package/dist/xlsx/ui/commands/i18n/slicers.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/i18n/what-if.d.ts +3 -0
- package/dist/xlsx/ui/commands/i18n/what-if.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/icons.d.ts.map +1 -1
- package/dist/xlsx/ui/commands/slicers.d.ts +37 -0
- package/dist/xlsx/ui/commands/slicers.d.ts.map +1 -0
- package/dist/xlsx/ui/commands/what-if.d.ts +4 -0
- package/dist/xlsx/ui/commands/what-if.d.ts.map +1 -0
- package/dist/xlsx/ui/commands.d.ts +2 -0
- package/dist/xlsx/ui/commands.d.ts.map +1 -1
- package/dist/xlsx/ui/index.cjs +4201 -1316
- package/dist/xlsx/ui/index.d.ts +2 -0
- package/dist/xlsx/ui/index.d.ts.map +1 -1
- package/dist/xlsx/ui/index.mjs +4196 -1317
- package/dist/xlsx/ui/locales/de/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/en/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/es/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/fr/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/locales/zh-CN/shell.d.ts.map +1 -1
- package/dist/xlsx/ui/ribbon/tabs/review-view.d.ts.map +1 -1
- package/dist/xlsx/write/carried-refs.d.ts.map +1 -1
- package/dist/xlsx/write/drawing.d.ts.map +1 -1
- package/dist/xlsx/write/package-writer.d.ts +2 -0
- package/dist/xlsx/write/package-writer.d.ts.map +1 -1
- package/dist/xlsx/write/save.d.ts.map +1 -1
- package/dist/xlsx/write/scenarios.d.ts +4 -0
- package/dist/xlsx/write/scenarios.d.ts.map +1 -0
- package/dist/xlsx/write/sheet-data.d.ts.map +1 -1
- package/dist/xlsx/write/sheet-parts.d.ts +1 -0
- package/dist/xlsx/write/sheet-parts.d.ts.map +1 -1
- package/dist/xlsx/write/sheet-props.d.ts.map +1 -1
- package/dist/xlsx/write/table-patch.d.ts.map +1 -1
- package/dist/xlsx/write/tables.d.ts.map +1 -1
- package/dist/xlsx/write/worksheet.d.ts.map +1 -1
- package/dist/xml/index.cjs +28 -0
- package/dist/xml/index.mjs +27 -1
- package/dist/xml/namespaces.d.ts +2 -0
- package/dist/xml/namespaces.d.ts.map +1 -1
- package/dist/xml/xml.d.ts +15 -0
- package/dist/xml/xml.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/PptxHandler-RWTOUCLC.mjs +0 -3
- package/dist/PptxHandler-UU4ZCT6H.cjs +0 -12
- package/dist/chunk-KBIJI6P5.mjs +0 -166
- package/dist/pptx/chunks/elements-DmbzOhFu.d.ts.map +0 -1
- package/dist/pptx/chunks/index-BmvOxbsh.d.ts.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { XMLDSIG_NS, ENTERPRISE_TRUST_ROOTS_PEM_ENV, ENTERPRISE_TRUST_ROOTS_FILE_ENV, ENTERPRISE_REQUIRE_TIMESTAMP_ENV, ENTERPRISE_FAIL_ON_REVOCATION_UNKNOWN_ENV, ENTERPRISE_REQUIRE_REVOCATION_ENV, OPC_RELATIONSHIP_TRANSFORM, SUPPORTED_XML_CANON_TRANSFORMS, DIGEST_ALGORITHM_TO_HASH, resolveReferenceUriToPart, PPTX_VIEWER_MANIFEST_NS, DIGITAL_SIGNATURE_ORIGIN_REL_TYPE, extractAllTagText, extractFirstTagText, extractTagAttribute, computeDetailStatus, computeVerificationStatus, DIGITAL_SIGNATURE_REL_TYPE, normalizePartPath, escapeXmlAttr, escapeXmlText, isValidBase64 } from '../../chunk-
|
|
2
|
-
export { DIGEST_ALGORITHM_TO_HASH, DIGEST_ALGORITHM_TO_WEB_CRYPTO, DIGITAL_SIGNATURE_ORIGIN_REL_TYPE, DIGITAL_SIGNATURE_REL_TYPE, ENTERPRISE_FAIL_ON_REVOCATION_UNKNOWN_ENV, ENTERPRISE_REQUIRE_REVOCATION_ENV, ENTERPRISE_REQUIRE_TIMESTAMP_ENV, ENTERPRISE_TRUST_ROOTS_FILE_ENV, ENTERPRISE_TRUST_ROOTS_PEM_ENV, OPC_RELATIONSHIP_TRANSFORM, PPTX_VIEWER_MANIFEST_NS, SUPPORTED_XML_CANON_TRANSFORMS, XMLDSIG_NS, XML_TRANSFORM_ENVELOPED_SIGNATURE, computeDetailStatus, computeDigestBase64 as computeDigestBase64WebCrypto, computeVerificationStatus, escapeXmlAttr, escapeXmlText, extractAllTagText, extractFirstTagText, extractTagAttribute, isValidBase64, normalizePartPath, resolveReferenceUriToPart } from '../../chunk-
|
|
1
|
+
import { XMLDSIG_NS, ENTERPRISE_TRUST_ROOTS_PEM_ENV, ENTERPRISE_TRUST_ROOTS_FILE_ENV, ENTERPRISE_REQUIRE_TIMESTAMP_ENV, ENTERPRISE_FAIL_ON_REVOCATION_UNKNOWN_ENV, ENTERPRISE_REQUIRE_REVOCATION_ENV, OPC_RELATIONSHIP_TRANSFORM, SUPPORTED_XML_CANON_TRANSFORMS, DIGEST_ALGORITHM_TO_HASH, resolveReferenceUriToPart, PPTX_VIEWER_MANIFEST_NS, openPptxZip, DIGITAL_SIGNATURE_ORIGIN_REL_TYPE, extractAllTagText, extractFirstTagText, extractTagAttribute, computeDetailStatus, computeVerificationStatus, DIGITAL_SIGNATURE_REL_TYPE, normalizePartPath, escapeXmlAttr, escapeXmlText, isValidBase64 } from '../../chunk-M4XLF4R7.mjs';
|
|
2
|
+
export { DIGEST_ALGORITHM_TO_HASH, DIGEST_ALGORITHM_TO_WEB_CRYPTO, DIGITAL_SIGNATURE_ORIGIN_REL_TYPE, DIGITAL_SIGNATURE_REL_TYPE, ENTERPRISE_FAIL_ON_REVOCATION_UNKNOWN_ENV, ENTERPRISE_REQUIRE_REVOCATION_ENV, ENTERPRISE_REQUIRE_TIMESTAMP_ENV, ENTERPRISE_TRUST_ROOTS_FILE_ENV, ENTERPRISE_TRUST_ROOTS_PEM_ENV, OPC_RELATIONSHIP_TRANSFORM, PPTX_VIEWER_MANIFEST_NS, SUPPORTED_XML_CANON_TRANSFORMS, XMLDSIG_NS, XML_TRANSFORM_ENVELOPED_SIGNATURE, computeDetailStatus, computeDigestBase64 as computeDigestBase64WebCrypto, computeVerificationStatus, escapeXmlAttr, escapeXmlText, extractAllTagText, extractFirstTagText, extractTagAttribute, isValidBase64, normalizePartPath, resolveReferenceUriToPart } from '../../chunk-M4XLF4R7.mjs';
|
|
3
3
|
import '../../chunk-7P6ASYW6.mjs';
|
|
4
4
|
import { DOMParser, XMLSerializer } from '@xmldom/xmldom';
|
|
5
5
|
import { SignedXml } from 'xml-crypto';
|
|
@@ -7,10 +7,9 @@ import crypto2 from 'crypto';
|
|
|
7
7
|
import path from 'path';
|
|
8
8
|
import tls from 'tls';
|
|
9
9
|
import forge3 from 'node-forge';
|
|
10
|
-
import
|
|
11
|
-
import
|
|
10
|
+
import dns from 'dns';
|
|
11
|
+
import net from 'net';
|
|
12
12
|
import fs from 'fs/promises';
|
|
13
|
-
import JSZip from 'jszip';
|
|
14
13
|
|
|
15
14
|
function getNodeLocalName(node) {
|
|
16
15
|
if (node.localName) {
|
|
@@ -345,6 +344,108 @@ function loadSigningMaterialFromBuffer(certificateBuffer, certificatePath, certi
|
|
|
345
344
|
function pemCertificateToBase64(pem) {
|
|
346
345
|
return pem.replace(/-----BEGIN CERTIFICATE-----/g, "").replace(/-----END CERTIFICATE-----/g, "").replace(/\s+/g, "").trim();
|
|
347
346
|
}
|
|
347
|
+
var OCSP_TIMEOUT_MS = 1e4;
|
|
348
|
+
var OCSP_MAX_RESPONSE_BYTES = 1024 * 1024;
|
|
349
|
+
function isPrivateIpv4(ip) {
|
|
350
|
+
const p = ip.split(".").map(Number);
|
|
351
|
+
const [a = 0, b = 0] = p;
|
|
352
|
+
return a === 0 || a === 10 || a === 127 || a === 169 && b === 254 || a === 172 && b >= 16 && b <= 31 || a === 192 && b === 168 || a === 100 && b >= 64 && b <= 127;
|
|
353
|
+
}
|
|
354
|
+
function isPrivateAddress(address) {
|
|
355
|
+
const ip = address.replace(/^\[|\]$/g, "").split("%")[0] ?? "";
|
|
356
|
+
if (net.isIPv4(ip)) {
|
|
357
|
+
return isPrivateIpv4(ip);
|
|
358
|
+
}
|
|
359
|
+
if (!net.isIPv6(ip)) {
|
|
360
|
+
return true;
|
|
361
|
+
}
|
|
362
|
+
const lower = ip.toLowerCase();
|
|
363
|
+
const mapped = /^::ffff:(\d+\.\d+\.\d+\.\d+)$/.exec(lower);
|
|
364
|
+
if (mapped?.[1]) {
|
|
365
|
+
return isPrivateIpv4(mapped[1]);
|
|
366
|
+
}
|
|
367
|
+
const hex = /^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(lower);
|
|
368
|
+
if (hex?.[1] && hex[2]) {
|
|
369
|
+
const hi = Number.parseInt(hex[1], 16);
|
|
370
|
+
const lo = Number.parseInt(hex[2], 16);
|
|
371
|
+
return isPrivateIpv4(`${hi >> 8}.${hi & 255}.${lo >> 8}.${lo & 255}`);
|
|
372
|
+
}
|
|
373
|
+
if (lower === "::" || lower === "::1") {
|
|
374
|
+
return true;
|
|
375
|
+
}
|
|
376
|
+
const first = Number.parseInt(lower.split(":")[0] || "0", 16);
|
|
377
|
+
return (first & 65024) === 64512 || (first & 65472) === 65152;
|
|
378
|
+
}
|
|
379
|
+
async function assertPublicHost(hostname) {
|
|
380
|
+
const host = hostname.replace(/^\[|\]$/g, "");
|
|
381
|
+
const addresses = net.isIP(host) ? [host] : (await dns.promises.lookup(host, { all: true })).map((entry) => entry.address);
|
|
382
|
+
if (addresses.length === 0) {
|
|
383
|
+
throw new Error("Responder host did not resolve");
|
|
384
|
+
}
|
|
385
|
+
for (const address of addresses) {
|
|
386
|
+
if (isPrivateAddress(address)) {
|
|
387
|
+
throw new Error("Responder host resolves to a private network address");
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
async function readCapped(response, controller) {
|
|
392
|
+
const declared = Number(response.headers.get("content-length") ?? 0);
|
|
393
|
+
if (declared > OCSP_MAX_RESPONSE_BYTES) {
|
|
394
|
+
controller.abort();
|
|
395
|
+
throw new Error("Response too large");
|
|
396
|
+
}
|
|
397
|
+
if (!response.body) {
|
|
398
|
+
return Buffer.alloc(0);
|
|
399
|
+
}
|
|
400
|
+
const reader = response.body.getReader();
|
|
401
|
+
const chunks = [];
|
|
402
|
+
let total = 0;
|
|
403
|
+
for (; ; ) {
|
|
404
|
+
const { done, value } = await reader.read();
|
|
405
|
+
if (done) break;
|
|
406
|
+
total += value.byteLength;
|
|
407
|
+
if (total > OCSP_MAX_RESPONSE_BYTES) {
|
|
408
|
+
controller.abort();
|
|
409
|
+
await reader.cancel().catch(() => void 0);
|
|
410
|
+
throw new Error("Response too large");
|
|
411
|
+
}
|
|
412
|
+
chunks.push(Buffer.from(value));
|
|
413
|
+
}
|
|
414
|
+
return Buffer.concat(chunks);
|
|
415
|
+
}
|
|
416
|
+
async function httpPost(url, body, contentType, options = {}) {
|
|
417
|
+
let parsed;
|
|
418
|
+
try {
|
|
419
|
+
parsed = new URL(url);
|
|
420
|
+
} catch {
|
|
421
|
+
throw new Error("Invalid URL");
|
|
422
|
+
}
|
|
423
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
424
|
+
throw new Error("Unsupported protocol");
|
|
425
|
+
}
|
|
426
|
+
if (!options.allowPrivateNetwork) {
|
|
427
|
+
await assertPublicHost(parsed.hostname);
|
|
428
|
+
}
|
|
429
|
+
const controller = new AbortController();
|
|
430
|
+
const timer = setTimeout(() => controller.abort(), OCSP_TIMEOUT_MS);
|
|
431
|
+
try {
|
|
432
|
+
const response = await fetch(parsed, {
|
|
433
|
+
method: "POST",
|
|
434
|
+
headers: { "Content-Type": contentType },
|
|
435
|
+
body: new Uint8Array(body),
|
|
436
|
+
redirect: "manual",
|
|
437
|
+
signal: controller.signal
|
|
438
|
+
});
|
|
439
|
+
if (response.status >= 300 && response.status < 400) {
|
|
440
|
+
throw new Error("Redirects are not followed");
|
|
441
|
+
}
|
|
442
|
+
return await readCapped(response, controller);
|
|
443
|
+
} finally {
|
|
444
|
+
clearTimeout(timer);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
// pptx/signature-node/ocsp.ts
|
|
348
449
|
function asn1Child2(node, index) {
|
|
349
450
|
return Array.isArray(node.value) ? node.value[index] : void 0;
|
|
350
451
|
}
|
|
@@ -370,49 +471,6 @@ function extractOcspUrls(certPem) {
|
|
|
370
471
|
return [];
|
|
371
472
|
}
|
|
372
473
|
}
|
|
373
|
-
var HTTP_TIMEOUT_MS = 1e4;
|
|
374
|
-
function httpPost(url, body, contentType) {
|
|
375
|
-
return new Promise((resolve, reject) => {
|
|
376
|
-
let parsed;
|
|
377
|
-
try {
|
|
378
|
-
parsed = new URL(url);
|
|
379
|
-
} catch {
|
|
380
|
-
reject(new Error("Invalid URL"));
|
|
381
|
-
return;
|
|
382
|
-
}
|
|
383
|
-
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
384
|
-
reject(new Error("Unsupported protocol"));
|
|
385
|
-
return;
|
|
386
|
-
}
|
|
387
|
-
const transport = parsed.protocol === "https:" ? https : http;
|
|
388
|
-
const req = transport.request(
|
|
389
|
-
{
|
|
390
|
-
hostname: parsed.hostname,
|
|
391
|
-
port: parsed.port || void 0,
|
|
392
|
-
path: parsed.pathname + parsed.search,
|
|
393
|
-
method: "POST",
|
|
394
|
-
headers: {
|
|
395
|
-
"Content-Type": contentType,
|
|
396
|
-
"Content-Length": body.length
|
|
397
|
-
},
|
|
398
|
-
timeout: HTTP_TIMEOUT_MS
|
|
399
|
-
},
|
|
400
|
-
(res) => {
|
|
401
|
-
const chunks = [];
|
|
402
|
-
res.on("data", (chunk) => chunks.push(chunk));
|
|
403
|
-
res.on("end", () => resolve(Buffer.concat(chunks)));
|
|
404
|
-
res.on("error", reject);
|
|
405
|
-
}
|
|
406
|
-
);
|
|
407
|
-
req.on("error", reject);
|
|
408
|
-
req.on("timeout", () => {
|
|
409
|
-
req.destroy();
|
|
410
|
-
reject(new Error("Timeout"));
|
|
411
|
-
});
|
|
412
|
-
req.write(body);
|
|
413
|
-
req.end();
|
|
414
|
-
});
|
|
415
|
-
}
|
|
416
474
|
var SHA1_OID = "1.3.14.3.2.26";
|
|
417
475
|
function buildOcspRequestDer(leafPem, issuerPem) {
|
|
418
476
|
try {
|
|
@@ -519,7 +577,7 @@ function parseOcspResponseStatus(data) {
|
|
|
519
577
|
return "error";
|
|
520
578
|
}
|
|
521
579
|
}
|
|
522
|
-
async function evaluateCertificateRevocation(leafCertPem, issuerCertPem) {
|
|
580
|
+
async function evaluateCertificateRevocation(leafCertPem, issuerCertPem, options = {}) {
|
|
523
581
|
const ocspUrls = extractOcspUrls(leafCertPem);
|
|
524
582
|
const checkedOcspUrls = [];
|
|
525
583
|
const checkedCrlUrls = [];
|
|
@@ -529,7 +587,7 @@ async function evaluateCertificateRevocation(leafCertPem, issuerCertPem) {
|
|
|
529
587
|
for (const url of ocspUrls) {
|
|
530
588
|
checkedOcspUrls.push(url);
|
|
531
589
|
try {
|
|
532
|
-
const resp = await httpPost(url, reqDer, "application/ocsp-request");
|
|
590
|
+
const resp = await httpPost(url, reqDer, "application/ocsp-request", options);
|
|
533
591
|
const status = parseOcspResponseStatus(resp);
|
|
534
592
|
if (status === "good" || status === "revoked") {
|
|
535
593
|
return { status, checkedOcspUrls, checkedCrlUrls };
|
|
@@ -860,9 +918,11 @@ async function buildReferenceChecksFromPptxViewerManifest(zip, signatureXml) {
|
|
|
860
918
|
}
|
|
861
919
|
return checks;
|
|
862
920
|
}
|
|
921
|
+
|
|
922
|
+
// pptx/signature-node/inspection.ts
|
|
863
923
|
async function inspectPptxDigitalSignatures(data) {
|
|
864
924
|
try {
|
|
865
|
-
const zip = await
|
|
925
|
+
const zip = await openPptxZip(Buffer.from(data));
|
|
866
926
|
const signaturePaths = Object.keys(zip.files).filter(
|
|
867
927
|
(entryPath) => entryPath.startsWith("_xmlsignatures/") && entryPath.endsWith(".xml")
|
|
868
928
|
);
|
|
@@ -1061,7 +1121,7 @@ async function signPptxWithCertificate(data, certificateBuffer, options) {
|
|
|
1061
1121
|
options.certificatePath,
|
|
1062
1122
|
options.certificatePassword
|
|
1063
1123
|
);
|
|
1064
|
-
const zip = await
|
|
1124
|
+
const zip = await openPptxZip(Buffer.from(data));
|
|
1065
1125
|
for (const entryPath of Object.keys(zip.files)) {
|
|
1066
1126
|
if (entryPath.startsWith("_xmlsignatures/")) {
|
|
1067
1127
|
zip.remove(entryPath);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ActivityInput, type ActivityItem } from './activity.js';
|
|
2
|
+
import { createNotificationSettings } from './notifications.js';
|
|
3
|
+
import type { PresenceStatus } from './presence.js';
|
|
4
|
+
import type { StorageLike } from './store.js';
|
|
5
|
+
export interface ActivityFeed {
|
|
6
|
+
/** Re-derive the feed; items that appeared since the last call are queued for `drain`. */
|
|
7
|
+
update: (input: Omit<ActivityInput, 'isRead'>, status: PresenceStatus) => ActivityFeedView;
|
|
8
|
+
/** The new, unread items that settings and presence allow to be announced. Clears the queue. */
|
|
9
|
+
drain: () => ActivityItem[];
|
|
10
|
+
markRead: (id: string, read?: boolean) => boolean;
|
|
11
|
+
markAllRead: () => boolean;
|
|
12
|
+
readonly settings: ReturnType<typeof createNotificationSettings>;
|
|
13
|
+
}
|
|
14
|
+
export interface ActivityFeedView {
|
|
15
|
+
items: ActivityItem[];
|
|
16
|
+
unread: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function createActivityFeed(storage: StorageLike | undefined, keyBase: string): ActivityFeed;
|
|
19
|
+
//# sourceMappingURL=activity-feed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-feed.d.ts","sourceRoot":"","sources":["../../teams/activity-feed.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAkB,MAAM,YAAY,CAAC;AAEnF,OAAO,EAAE,0BAA0B,EAAgB,MAAM,iBAAiB,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,YAAY;IAC5B,0FAA0F;IAC1F,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,cAAc,KAAK,gBAAgB,CAAC;IAC3F,gGAAgG;IAChG,KAAK,EAAE,MAAM,YAAY,EAAE,CAAC;IAC5B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IAClD,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,OAAO,EAAE,MAAM,GACb,YAAY,CAkCd"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { StorageLike } from './store.js';
|
|
2
|
+
export interface ActivityReadState {
|
|
3
|
+
isRead: (id: string, ts: number) => boolean;
|
|
4
|
+
/** Mark one item read (or unread). Returns whether anything changed. */
|
|
5
|
+
mark: (id: string, ts: number, read: boolean) => boolean;
|
|
6
|
+
/** Everything up to `upTo` is read; overrides below it are dropped. */
|
|
7
|
+
markAll: (upTo: number) => boolean;
|
|
8
|
+
/** The watermark: items at or before it are read unless overridden. */
|
|
9
|
+
readAt: () => number;
|
|
10
|
+
}
|
|
11
|
+
export declare function createActivityReadState(storage: StorageLike | undefined, key: string, now?: () => number): ActivityReadState;
|
|
12
|
+
//# sourceMappingURL=activity-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-state.d.ts","sourceRoot":"","sources":["../../teams/activity-state.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAK3C,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,wEAAwE;IACxE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;IACzD,uEAAuE;IACvE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,uEAAuE;IACvE,MAAM,EAAE,MAAM,MAAM,CAAC;CACrB;AAQD,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,MAAM,MAAiB,GAC1B,iBAAiB,CAoEnB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Channel, Message } from './model.js';
|
|
2
|
+
import type { PinnedMessage } from './pins.js';
|
|
3
|
+
export type ActivityKind = 'mention' | 'reply' | 'reaction' | 'pin' | 'meeting';
|
|
4
|
+
export interface ActivityItem {
|
|
5
|
+
/** Stable across recomputation, so read state and notifications can refer to it. */
|
|
6
|
+
id: string;
|
|
7
|
+
kind: ActivityKind;
|
|
8
|
+
channelId: string;
|
|
9
|
+
channelName: string;
|
|
10
|
+
/** The message to scroll to: the mentioning or replying message, or the one reacted to or pinned. */
|
|
11
|
+
messageId: string;
|
|
12
|
+
/** The thread root of that message (itself when it is a post). */
|
|
13
|
+
rootId: string;
|
|
14
|
+
actorId: string;
|
|
15
|
+
actorName: string;
|
|
16
|
+
ts: number;
|
|
17
|
+
/** A one-line excerpt of the message. */
|
|
18
|
+
preview: string;
|
|
19
|
+
/** The emoji, for reactions. */
|
|
20
|
+
emoji?: string;
|
|
21
|
+
/** The conversation is a private chat rather than a channel. */
|
|
22
|
+
chat?: boolean;
|
|
23
|
+
read: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface ReactionLike {
|
|
26
|
+
messageId: string;
|
|
27
|
+
emoji: string;
|
|
28
|
+
userId: string;
|
|
29
|
+
ts: number;
|
|
30
|
+
}
|
|
31
|
+
export interface ActivityInput {
|
|
32
|
+
selfId: string;
|
|
33
|
+
channels: readonly Channel[];
|
|
34
|
+
messagesOf: (channelId: string) => Message[];
|
|
35
|
+
reactions: readonly ReactionLike[];
|
|
36
|
+
pinsOf: (channelId: string) => PinnedMessage[];
|
|
37
|
+
/** Whether the person follows the thread rooted at this message. */
|
|
38
|
+
isFollowed?: (channelId: string, rootId: string) => boolean;
|
|
39
|
+
/** Read state; items are unread when omitted. */
|
|
40
|
+
isRead?: (id: string, ts: number) => boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare const MAX_ACTIVITY_ITEMS = 200;
|
|
43
|
+
export declare const activityPreview: (message: Pick<Message, 'text' | 'attachments' | 'mentions'>) => string;
|
|
44
|
+
/** Newest first. Your own actions never appear; deleted messages and archived channels are skipped. */
|
|
45
|
+
export declare function deriveActivity(input: ActivityInput): ActivityItem[];
|
|
46
|
+
export type ActivityFilter = 'all' | 'unread' | 'mentions' | 'replies' | 'reactions';
|
|
47
|
+
export declare const ACTIVITY_FILTERS: readonly ActivityFilter[];
|
|
48
|
+
/** The items a feed filter shows (Unread, Mentions, Replies and Reactions as in Teams). */
|
|
49
|
+
export declare function filterActivity(items: readonly ActivityItem[], filter: ActivityFilter): ActivityItem[];
|
|
50
|
+
/** The line a feed row shows, like Teams: who did what. */
|
|
51
|
+
export declare function describeActivity(item: ActivityItem): string;
|
|
52
|
+
//# sourceMappingURL=activity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../teams/activity.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAG5C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC5B,oFAAoF;IACpF,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,qGAAqG;IACrG,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;IAC7C,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,aAAa,EAAE,CAAC;IAC/C,oEAAoE;IACpE,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5D,iDAAiD;IACjD,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7C;AAED,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAGtC,eAAO,MAAM,eAAe,YAClB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,UAAU,CAAC,KACzD,MAIF,CAAC;AAEF,uGAAuG;AACvG,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,EAAE,CAgFnE;AAED,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAErF,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAMrD,CAAC;AAEF,2FAA2F;AAC3F,wBAAgB,cAAc,CAC7B,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,MAAM,EAAE,cAAc,GACpB,YAAY,EAAE,CAMhB;AAED,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAc3D"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { Meeting } from './meetings.js';
|
|
2
|
+
export interface Occurrence {
|
|
3
|
+
/** `<meeting id>@<start>`: stable per occurrence, what reminders remember. */
|
|
4
|
+
key: string;
|
|
5
|
+
meetingId: string;
|
|
6
|
+
start: number;
|
|
7
|
+
end: number;
|
|
8
|
+
/** 0 for the first occurrence. */
|
|
9
|
+
index: number;
|
|
10
|
+
/** The start this occurrence had in the series (iCalendar RECURRENCE-ID), when it repeats. */
|
|
11
|
+
recurrenceId?: number;
|
|
12
|
+
/** This occurrence was changed on its own; the overrides below are set for what changed. */
|
|
13
|
+
changed?: boolean;
|
|
14
|
+
title?: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Occurrences that overlap `[from, to)`, in start order. Cancelled meetings have none; a repeat
|
|
19
|
+
* stops at its end (count or date), skips cancelled occurrences and applies changed ones.
|
|
20
|
+
*/
|
|
21
|
+
export declare function occurrencesBetween(meeting: Meeting, from: number, to: number): Occurrence[];
|
|
22
|
+
/** The occurrence that starts exactly at `start` (as shown), or null. */
|
|
23
|
+
export declare const occurrenceAt: (meeting: Meeting, start: number) => Occurrence | null;
|
|
24
|
+
export type CalendarMode = 'workweek' | 'week' | 'day';
|
|
25
|
+
export interface CalendarDay {
|
|
26
|
+
/** UTC instant of local midnight. */
|
|
27
|
+
start: number;
|
|
28
|
+
/** UTC instant of the next local midnight. */
|
|
29
|
+
end: number;
|
|
30
|
+
/** 0 = Sunday. */
|
|
31
|
+
weekday: number;
|
|
32
|
+
day: number;
|
|
33
|
+
month: number;
|
|
34
|
+
year: number;
|
|
35
|
+
}
|
|
36
|
+
/** The days a view shows around `anchor`: Monday to Friday, Monday to Sunday, or just that day. */
|
|
37
|
+
export declare function viewDays(anchor: number, mode: CalendarMode, zone: string): CalendarDay[];
|
|
38
|
+
/** Previous (-1) or next (1) period: a day for the day view, a week otherwise. */
|
|
39
|
+
export declare function shiftAnchor(anchor: number, mode: CalendarMode, direction: -1 | 1, zone: string): number;
|
|
40
|
+
export interface PlacedOccurrence {
|
|
41
|
+
occurrence: Occurrence;
|
|
42
|
+
/** Minutes after local midnight, clipped to the day. */
|
|
43
|
+
startMinute: number;
|
|
44
|
+
endMinute: number;
|
|
45
|
+
/** The side-by-side column and how many columns the overlapping group has. */
|
|
46
|
+
column: number;
|
|
47
|
+
columns: number;
|
|
48
|
+
}
|
|
49
|
+
/** Position occurrences in one day's column; overlapping ones share the width. */
|
|
50
|
+
export declare function layoutDay(occurrences: readonly Occurrence[], day: Pick<CalendarDay, 'start' | 'end'>, zone: string): PlacedOccurrence[];
|
|
51
|
+
export declare const REMINDER_LEAD_MS: number;
|
|
52
|
+
/** Occurrences that start within `lead` of `now` (and have not started). */
|
|
53
|
+
export declare function remindersDue(meetings: readonly Meeting[], now: number, lead?: number): {
|
|
54
|
+
meeting: Meeting;
|
|
55
|
+
occurrence: Occurrence;
|
|
56
|
+
}[];
|
|
57
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../teams/calendar.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1C,MAAM,WAAW,UAAU;IAC1B,8EAA8E;IAC9E,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,EAAE,CAiC3F;AAED,yEAAyE;AACzE,eAAO,MAAM,YAAY,YAAa,OAAO,SAAS,MAAM,KAAG,UAAU,GAAG,IACS,CAAC;AAEtF,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC3B,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAcD,mGAAmG;AACnG,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAOxF;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,EACjB,IAAI,EAAE,MAAM,GACV,MAAM,CAER;AAED,MAAM,WAAW,gBAAgB;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CACxB,WAAW,EAAE,SAAS,UAAU,EAAE,EAClC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,KAAK,CAAC,EACvC,IAAI,EAAE,MAAM,GACV,gBAAgB,EAAE,CA4BpB;AAED,eAAO,MAAM,gBAAgB,QAAgB,CAAC;AAE9C,4EAA4E;AAC5E,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAyB,GAC7B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,EAAE,CAOhD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { TeamsWorkspace } from './workspace.js';
|
|
2
|
+
export interface ChatActions {
|
|
3
|
+
/** Open (creating if needed) the 1:1 chat with a person and select it. Returns the chat id. */
|
|
4
|
+
openDirectChat: (userId: string) => string | null;
|
|
5
|
+
/** A group of you and the people listed (at least one), optionally named. Selects it. */
|
|
6
|
+
createGroupChat: (userIds: readonly string[], name?: string) => string | null;
|
|
7
|
+
renameChat: (chatId: string, name: string) => boolean;
|
|
8
|
+
addToChat: (chatId: string, userIds: readonly string[]) => boolean;
|
|
9
|
+
removeFromChat: (chatId: string, userId: string) => boolean;
|
|
10
|
+
/** Leave a group chat. 1:1 chats cannot be left. */
|
|
11
|
+
leaveChat: (chatId: string) => boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface ChatActionDeps {
|
|
14
|
+
ws: TeamsWorkspace;
|
|
15
|
+
select: (id: string) => void;
|
|
16
|
+
notice: (text: string) => void;
|
|
17
|
+
refresh: () => void;
|
|
18
|
+
}
|
|
19
|
+
export declare function createChatActions({ ws, select, notice, refresh }: ChatActionDeps): ChatActions;
|
|
20
|
+
//# sourceMappingURL=chat-actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-actions.d.ts","sourceRoot":"","sources":["../../teams/chat-actions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,WAAW;IAC3B,+FAA+F;IAC/F,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAClD,yFAAyF;IACzF,eAAe,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC9E,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC;IACnE,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5D,oDAAoD;IACpD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,cAAc,CAAC;IACnB,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,GAAG,WAAW,CAmD9F"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as Y from 'yjs';
|
|
2
|
+
import type { ChatStore, ChatUser } from './chat.js';
|
|
3
|
+
import { type ChatInfo, type ChatMember } from './chats.js';
|
|
4
|
+
/** The members map inside a chat document; the reference server reads it to admit sockets. */
|
|
5
|
+
export declare const CHAT_MEMBERS_MAP = "teams:chat-members";
|
|
6
|
+
export interface ChatRoomHandle {
|
|
7
|
+
destroy: () => void;
|
|
8
|
+
}
|
|
9
|
+
export interface ChatRoomsOptions {
|
|
10
|
+
/** The workspace document (holds the directory) and the channel store built on it. */
|
|
11
|
+
doc: Y.Doc;
|
|
12
|
+
base: ChatStore;
|
|
13
|
+
user: ChatUser;
|
|
14
|
+
/**
|
|
15
|
+
* Start syncing a chat's own document. Called once per chat the person belongs to, with a
|
|
16
|
+
* document the caller may seed from storage. Return a handle that stops the sync.
|
|
17
|
+
*/
|
|
18
|
+
openRoom: (chat: ChatInfo, doc: Y.Doc) => ChatRoomHandle;
|
|
19
|
+
/** A document for a chat, for example restored from a local snapshot. */
|
|
20
|
+
createDoc?: (chat: ChatInfo) => Y.Doc;
|
|
21
|
+
}
|
|
22
|
+
export interface ChatRooms extends ChatStore {
|
|
23
|
+
/** The chats the person belongs to, in creation order. */
|
|
24
|
+
chats: () => ChatInfo[];
|
|
25
|
+
chat: (id: string) => ChatInfo | null;
|
|
26
|
+
/** The 1:1 chat with someone, created when missing. */
|
|
27
|
+
openDirect: (other: ChatMember) => ChatInfo | null;
|
|
28
|
+
createGroup: (input: {
|
|
29
|
+
others: readonly ChatMember[];
|
|
30
|
+
name?: string;
|
|
31
|
+
id?: string;
|
|
32
|
+
meetingId?: string;
|
|
33
|
+
}) => ChatInfo | null;
|
|
34
|
+
renameChat: (id: string, name: string) => boolean;
|
|
35
|
+
addPeople: (id: string, people: readonly ChatMember[]) => ChatMember[];
|
|
36
|
+
removePerson: (id: string, userId: string) => boolean;
|
|
37
|
+
leaveChat: (id: string) => boolean;
|
|
38
|
+
/** Whether a message id is a chat the person belongs to. */
|
|
39
|
+
isChat: (id: string) => boolean;
|
|
40
|
+
}
|
|
41
|
+
export declare function createChatRooms(options: ChatRoomsOptions): ChatRooms;
|
|
42
|
+
//# sourceMappingURL=chat-rooms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-rooms.d.ts","sourceRoot":"","sources":["../../teams/chat-rooms.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAEN,KAAK,QAAQ,EACb,KAAK,UAAU,EAIf,MAAM,SAAS,CAAC;AAKjB,8FAA8F;AAC9F,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AAErD,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAChC,sFAAsF;IACtF,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf;;;OAGG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC;IACzD,yEAAyE;IACzE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,CAAC,CAAC,GAAG,CAAC;CACtC;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC3C,0DAA0D;IAC1D,KAAK,EAAE,MAAM,QAAQ,EAAE,CAAC;IACxB,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC;IACtC,uDAAuD;IACvD,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,QAAQ,GAAG,IAAI,CAAC;IACnD,WAAW,EAAE,CAAC,KAAK,EAAE;QACpB,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,KAAK,QAAQ,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAClD,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,KAAK,UAAU,EAAE,CAAC;IACvE,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACtD,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,4DAA4D;IAC5D,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;CAChC;AAYD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CA2NpE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type ChatInfo, type ChatKind } from './chats.js';
|
|
2
|
+
import type { Message } from './model.js';
|
|
3
|
+
import { type PresenceStatus } from './presence.js';
|
|
4
|
+
import type { RosterEntry } from './roster.js';
|
|
5
|
+
import { type PeerLike } from './view.js';
|
|
6
|
+
export interface ChatMemberView {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
self: boolean;
|
|
10
|
+
availability: PresenceStatus;
|
|
11
|
+
}
|
|
12
|
+
export interface ChatLastMessage {
|
|
13
|
+
authorName: string;
|
|
14
|
+
text: string;
|
|
15
|
+
ts: number;
|
|
16
|
+
mine: boolean;
|
|
17
|
+
system: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface ChatView {
|
|
20
|
+
id: string;
|
|
21
|
+
kind: ChatKind;
|
|
22
|
+
title: string;
|
|
23
|
+
/** A group's own name, empty for a 1:1 chat or an unnamed group. */
|
|
24
|
+
name: string;
|
|
25
|
+
members: ChatMemberView[];
|
|
26
|
+
unread: number;
|
|
27
|
+
lastMessage: ChatLastMessage | null;
|
|
28
|
+
/** Last activity (last message, else creation); the list is sorted by it. */
|
|
29
|
+
ts: number;
|
|
30
|
+
meetingId?: string;
|
|
31
|
+
/** Someone is in this chat's call right now. */
|
|
32
|
+
live: boolean;
|
|
33
|
+
/** 1:1 chats cannot be left; groups can. */
|
|
34
|
+
canLeave: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface ContactView {
|
|
37
|
+
id: string;
|
|
38
|
+
name: string;
|
|
39
|
+
availability: PresenceStatus;
|
|
40
|
+
}
|
|
41
|
+
export declare function memberPresence(userId: string, selfId: string, selfStatus: PresenceStatus, peers: readonly PeerLike[]): PresenceStatus;
|
|
42
|
+
/** Chats the person belongs to, newest activity first. Unread = others' messages after the marker. */
|
|
43
|
+
export declare function chatViews(input: {
|
|
44
|
+
chats: readonly ChatInfo[];
|
|
45
|
+
messagesOf: (chatId: string) => Message[];
|
|
46
|
+
selfId: string;
|
|
47
|
+
selfStatus: PresenceStatus;
|
|
48
|
+
lastRead: Record<string, number>;
|
|
49
|
+
peers: readonly PeerLike[];
|
|
50
|
+
workspaceId: string;
|
|
51
|
+
selectedId: string;
|
|
52
|
+
inCallRoom?: string;
|
|
53
|
+
}): ChatView[];
|
|
54
|
+
/** Everybody on the roster except you, with presence, online people first. */
|
|
55
|
+
export declare function contactViews(roster: readonly RosterEntry[], selfId: string, peers: readonly PeerLike[]): ContactView[];
|
|
56
|
+
//# sourceMappingURL=chat-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-view.d.ts","sourceRoot":"","sources":["../../teams/chat-view.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAa,MAAM,SAAS,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,KAAK,cAAc,EAAkB,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,QAAQ,EAAc,MAAM,QAAQ,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,IAAI,EAAE,OAAO,CAAC;IACd,4CAA4C;IAC5C,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,cAAc,CAAC;CAC7B;AAED,wBAAgB,cAAc,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,cAAc,EAC1B,KAAK,EAAE,SAAS,QAAQ,EAAE,GACxB,cAAc,CAIhB;AAED,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAChC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC3B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,QAAQ,EAAE,CAuCb;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAC3B,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,QAAQ,EAAE,GACxB,WAAW,EAAE,CAUf"}
|
package/dist/teams/chat.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as Y from 'yjs';
|
|
2
|
+
import { type MentionTarget } from './mentions.js';
|
|
2
3
|
import { type PinnedMessage } from './pins.js';
|
|
3
4
|
import type { ChannelTab } from './tabs.js';
|
|
4
5
|
import { type Attachment, type Channel, type ChannelKind, type Message } from './model.js';
|
|
@@ -6,6 +7,12 @@ export interface ChatUser {
|
|
|
6
7
|
id: string;
|
|
7
8
|
name: string;
|
|
8
9
|
}
|
|
10
|
+
export interface ReactionEvent {
|
|
11
|
+
messageId: string;
|
|
12
|
+
emoji: string;
|
|
13
|
+
userId: string;
|
|
14
|
+
ts: number;
|
|
15
|
+
}
|
|
9
16
|
export interface ChatStore {
|
|
10
17
|
channels: () => Channel[];
|
|
11
18
|
createChannel: (input: {
|
|
@@ -21,11 +28,17 @@ export interface ChatStore {
|
|
|
21
28
|
text: string;
|
|
22
29
|
replyTo?: string;
|
|
23
30
|
attachments?: Attachment[];
|
|
31
|
+
/** Who may be mentioned; the `@name` runs of the text that match are stored as mentions. */
|
|
32
|
+
mentions?: readonly MentionTarget[];
|
|
33
|
+
/** Mark the row as an app notice (members added or removed). */
|
|
34
|
+
system?: boolean;
|
|
35
|
+
/** Announce a scheduled meeting with a card (the text is the fallback for old clients). */
|
|
36
|
+
meetingId?: string;
|
|
24
37
|
}) => Message | null;
|
|
25
38
|
/** Idempotent root creation. Concurrent peers use one stable message id; existing rows survive. */
|
|
26
39
|
ensureTabConversation: (tab: ChannelTab) => Message | null;
|
|
27
40
|
/** Only the author can edit. Returns whether the edit applied. */
|
|
28
|
-
edit: (channelId: string, messageId: string, text: string) => boolean;
|
|
41
|
+
edit: (channelId: string, messageId: string, text: string, mentions?: readonly MentionTarget[]) => boolean;
|
|
29
42
|
/** Soft delete (the row stays so threads keep their shape). Only the author can delete. */
|
|
30
43
|
remove: (channelId: string, messageId: string) => boolean;
|
|
31
44
|
/** Pin a live message of the channel; any member may. Returns whether it applied. */
|
|
@@ -33,8 +46,11 @@ export interface ChatStore {
|
|
|
33
46
|
unpin: (channelId: string, messageId: string) => boolean;
|
|
34
47
|
/** Pinned messages of a channel, most recently pinned first. */
|
|
35
48
|
pinned: (channelId: string) => PinnedMessage[];
|
|
36
|
-
|
|
37
|
-
|
|
49
|
+
/** Every live reaction with the time it was added (0 for rows written by older clients). */
|
|
50
|
+
reactionEvents: () => ReactionEvent[];
|
|
51
|
+
/** `channelId` routes to a private chat's own document; channels ignore it. */
|
|
52
|
+
react: (messageId: string, emoji: string, channelId?: string) => void;
|
|
53
|
+
unreact: (messageId: string, emoji: string, channelId?: string) => void;
|
|
38
54
|
/** Fires after any channel, message or reaction change (local or remote), coalesced per tick. */
|
|
39
55
|
observe: (listener: () => void) => () => void;
|
|
40
56
|
destroy: () => void;
|
package/dist/teams/chat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../teams/chat.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,OAAO,EAAE,KAAK,aAAa,EAAkB,MAAM,QAAQ,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EACN,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,OAAO,EAMZ,MAAM,SAAS,CAAC;AAOjB,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,SAAS;IACzB,QAAQ,EAAE,MAAM,OAAO,EAAE,CAAC;IAC1B,aAAa,EAAE,CAAC,KAAK,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,EAAE,CAAC,EAAE,MAAM,CAAC;KACZ,KAAK,OAAO,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;IAC3C,iFAAiF;IACjF,IAAI,EAAE,CACL,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../teams/chat.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,OAAO,EAAgB,KAAK,aAAa,EAAqC,MAAM,YAAY,CAAC;AACjG,OAAO,EAAE,KAAK,aAAa,EAAkB,MAAM,QAAQ,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EACN,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,OAAO,EAMZ,MAAM,SAAS,CAAC;AAOjB,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,SAAS;IACzB,QAAQ,EAAE,MAAM,OAAO,EAAE,CAAC;IAC1B,aAAa,EAAE,CAAC,KAAK,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,EAAE,CAAC,EAAE,MAAM,CAAC;KACZ,KAAK,OAAO,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;IAC3C,iFAAiF;IACjF,IAAI,EAAE,CACL,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;QAC3B,4FAA4F;QAC5F,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;QACpC,gEAAgE;QAChE,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,2FAA2F;QAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,KACG,OAAO,GAAG,IAAI,CAAC;IACpB,mGAAmG;IACnG,qBAAqB,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,GAAG,IAAI,CAAC;IAC3D,kEAAkE;IAClE,IAAI,EAAE,CACL,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,KAC/B,OAAO,CAAC;IACb,2FAA2F;IAC3F,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1D,qFAAqF;IACrF,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACvD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACzD,gEAAgE;IAChE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,aAAa,EAAE,CAAC;IAC/C,4FAA4F;IAC5F,cAAc,EAAE,MAAM,aAAa,EAAE,CAAC;IACtC,+EAA+E;IAC/E,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,iGAAiG;IACjG,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAC9C,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAkED,wBAAgB,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAG,SAAS,CA+KrE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as Y from 'yjs';
|
|
2
|
+
export type ChatKind = 'direct' | 'group';
|
|
3
|
+
export interface ChatMember {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ChatInfo {
|
|
8
|
+
id: string;
|
|
9
|
+
kind: ChatKind;
|
|
10
|
+
/** The group's name; empty for 1:1 chats and unnamed groups. */
|
|
11
|
+
name: string;
|
|
12
|
+
members: ChatMember[];
|
|
13
|
+
createdAt: number;
|
|
14
|
+
createdBy: string;
|
|
15
|
+
/** Set when the chat belongs to a scheduled meeting. */
|
|
16
|
+
meetingId?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const MAX_CHAT_MEMBERS = 50;
|
|
19
|
+
/** Ids the server can carry in a query string; people with other ids cannot be chatted with. */
|
|
20
|
+
export declare const isChatUserId: (id: unknown) => id is string;
|
|
21
|
+
/** Two 32-bit FNV-1a hashes as 16 hex digits: a stable short name, not a security measure. */
|
|
22
|
+
export declare function shortHash(value: string): string;
|
|
23
|
+
/** The same chat for the same two people, whoever opens it first. */
|
|
24
|
+
export declare const directChatId: (a: string, b: string) => string;
|
|
25
|
+
/** The sync room of a chat. At most 128 characters, whatever the workspace id. */
|
|
26
|
+
export declare const chatRoomId: (workspaceId: string, chatId: string) => string;
|
|
27
|
+
export declare function sanitizeMembers(raw: unknown): ChatMember[];
|
|
28
|
+
/** What the list shows: the group name, or the other people's names. */
|
|
29
|
+
export declare function chatTitle(chat: Pick<ChatInfo, 'kind' | 'name' | 'members'>, selfId: string): string;
|
|
30
|
+
export declare const isChatMember: (chat: Pick<ChatInfo, 'members'>, userId: string) => boolean;
|
|
31
|
+
export interface ChatDirectory {
|
|
32
|
+
/** Every chat the directory lists (the caller filters to its own). */
|
|
33
|
+
list: () => ChatInfo[];
|
|
34
|
+
get: (id: string) => ChatInfo | null;
|
|
35
|
+
/** Idempotent: the 1:1 chat with `other`, created when missing. Null for yourself or bad ids. */
|
|
36
|
+
ensureDirect: (other: ChatMember) => ChatInfo | null;
|
|
37
|
+
/** A group of you and `others` (at least one). Idempotent for a given `id`. */
|
|
38
|
+
createGroup: (input: {
|
|
39
|
+
others: readonly ChatMember[];
|
|
40
|
+
name?: string;
|
|
41
|
+
id?: string;
|
|
42
|
+
meetingId?: string;
|
|
43
|
+
}) => ChatInfo | null;
|
|
44
|
+
/** Members only, groups only. */
|
|
45
|
+
rename: (id: string, name: string) => boolean;
|
|
46
|
+
/** Members only, groups only. Returns the people actually added. */
|
|
47
|
+
add: (id: string, people: readonly ChatMember[]) => ChatMember[];
|
|
48
|
+
/** A member removes someone (or leaves with their own id). Groups only; a group keeps one member. */
|
|
49
|
+
remove: (id: string, userId: string) => boolean;
|
|
50
|
+
}
|
|
51
|
+
export declare function createChatDirectory(doc: Y.Doc, user: ChatMember, now?: () => number): ChatDirectory;
|
|
52
|
+
//# sourceMappingURL=chats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../teams/chats.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1C,MAAM,WAAW,UAAU;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAKnC,gGAAgG;AAChG,eAAO,MAAM,YAAY,OAAQ,OAAO,KAAG,EAAE,IAAI,MACJ,CAAC;AAE9C,8FAA8F;AAC9F,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS/C;AAED,qEAAqE;AACrE,eAAO,MAAM,YAAY,MAAO,MAAM,KAAK,MAAM,KAAG,MACR,CAAC;AAE7C,kFAAkF;AAClF,eAAO,MAAM,UAAU,gBAAiB,MAAM,UAAU,MAAM,KAAG,MACR,CAAC;AAE1D,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,EAAE,CAa1D;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CACxB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EACjD,MAAM,EAAE,MAAM,GACZ,MAAM,CAKR;AAED,eAAO,MAAM,YAAY,SAAU,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,UAAU,MAAM,KAAG,OACrC,CAAC;AAoB3C,MAAM,WAAW,aAAa;IAC7B,sEAAsE;IACtE,IAAI,EAAE,MAAM,QAAQ,EAAE,CAAC;IACvB,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC;IACrC,iGAAiG;IACjG,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,QAAQ,GAAG,IAAI,CAAC;IACrD,+EAA+E;IAC/E,WAAW,EAAE,CAAC,KAAK,EAAE;QACpB,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,KAAK,QAAQ,GAAG,IAAI,CAAC;IACtB,iCAAiC;IACjC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,oEAAoE;IACpE,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,KAAK,UAAU,EAAE,CAAC;IACjE,qGAAqG;IACrG,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CAChD;AAED,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,CAAC,CAAC,GAAG,EACV,IAAI,EAAE,UAAU,EAChB,GAAG,GAAE,MAAM,MAAiB,GAC1B,aAAa,CA8Ef"}
|