arc-1 1.6.0 → 1.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/README.md +26 -18
- package/dist/adt/application-log.d.ts +36 -0
- package/dist/adt/application-log.d.ts.map +1 -0
- package/dist/adt/application-log.js +143 -0
- package/dist/adt/application-log.js.map +1 -0
- package/dist/adt/aunit-package.d.ts.map +1 -1
- package/dist/adt/aunit-package.js +9 -1
- package/dist/adt/aunit-package.js.map +1 -1
- package/dist/adt/ci-quality.d.ts.map +1 -1
- package/dist/adt/ci-quality.js +1 -1
- package/dist/adt/ci-quality.js.map +1 -1
- package/dist/adt/class-structure.d.ts +2 -1
- package/dist/adt/class-structure.d.ts.map +1 -1
- package/dist/adt/class-structure.js +28 -10
- package/dist/adt/class-structure.js.map +1 -1
- package/dist/adt/client.d.ts +27 -9
- package/dist/adt/client.d.ts.map +1 -1
- package/dist/adt/client.js +23 -16
- package/dist/adt/client.js.map +1 -1
- package/dist/adt/codeintel.d.ts +9 -23
- package/dist/adt/codeintel.d.ts.map +1 -1
- package/dist/adt/codeintel.js +14 -34
- package/dist/adt/codeintel.js.map +1 -1
- package/dist/adt/crud.d.ts +3 -2
- package/dist/adt/crud.d.ts.map +1 -1
- package/dist/adt/crud.js +13 -3
- package/dist/adt/crud.js.map +1 -1
- package/dist/adt/devtools.d.ts +21 -7
- package/dist/adt/devtools.d.ts.map +1 -1
- package/dist/adt/devtools.js +98 -44
- package/dist/adt/devtools.js.map +1 -1
- package/dist/adt/diagnostics.d.ts +2 -0
- package/dist/adt/diagnostics.d.ts.map +1 -1
- package/dist/adt/diagnostics.js +12 -10
- package/dist/adt/diagnostics.js.map +1 -1
- package/dist/adt/errors.d.ts +5 -1
- package/dist/adt/errors.d.ts.map +1 -1
- package/dist/adt/errors.js +26 -0
- package/dist/adt/errors.js.map +1 -1
- package/dist/adt/feed-schema.d.ts +32 -0
- package/dist/adt/feed-schema.d.ts.map +1 -0
- package/dist/adt/feed-schema.js +123 -0
- package/dist/adt/feed-schema.js.map +1 -0
- package/dist/adt/fm-parameter-docs.d.ts +7 -0
- package/dist/adt/fm-parameter-docs.d.ts.map +1 -0
- package/dist/adt/fm-parameter-docs.js +134 -0
- package/dist/adt/fm-parameter-docs.js.map +1 -0
- package/dist/adt/fm-signature.d.ts +8 -1
- package/dist/adt/fm-signature.d.ts.map +1 -1
- package/dist/adt/fm-signature.js +37 -28
- package/dist/adt/fm-signature.js.map +1 -1
- package/dist/adt/http-deadline.d.ts +2 -0
- package/dist/adt/http-deadline.d.ts.map +1 -1
- package/dist/adt/http-deadline.js +4 -1
- package/dist/adt/http-deadline.js.map +1 -1
- package/dist/adt/http-retry-after.d.ts +20 -0
- package/dist/adt/http-retry-after.d.ts.map +1 -0
- package/dist/adt/http-retry-after.js +37 -0
- package/dist/adt/http-retry-after.js.map +1 -0
- package/dist/adt/http.d.ts +11 -20
- package/dist/adt/http.d.ts.map +1 -1
- package/dist/adt/http.js +104 -90
- package/dist/adt/http.js.map +1 -1
- package/dist/adt/include-expansion.d.ts +143 -0
- package/dist/adt/include-expansion.d.ts.map +1 -0
- package/dist/adt/include-expansion.js +475 -0
- package/dist/adt/include-expansion.js.map +1 -0
- package/dist/adt/internal-data-operations.d.ts +3 -3
- package/dist/adt/internal-data-operations.d.ts.map +1 -1
- package/dist/adt/internal-data-operations.js +9 -2
- package/dist/adt/internal-data-operations.js.map +1 -1
- package/dist/adt/package-browser.d.ts +23 -0
- package/dist/adt/package-browser.d.ts.map +1 -0
- package/dist/adt/package-browser.js +139 -0
- package/dist/adt/package-browser.js.map +1 -0
- package/dist/adt/package-contents.d.ts +2 -0
- package/dist/adt/package-contents.d.ts.map +1 -1
- package/dist/adt/package-contents.js +3 -1
- package/dist/adt/package-contents.js.map +1 -1
- package/dist/adt/pinned-write-policy.d.ts +15 -0
- package/dist/adt/pinned-write-policy.d.ts.map +1 -0
- package/dist/adt/pinned-write-policy.js +111 -0
- package/dist/adt/pinned-write-policy.js.map +1 -0
- package/dist/adt/revision-feed.d.ts +8 -0
- package/dist/adt/revision-feed.d.ts.map +1 -0
- package/dist/adt/revision-feed.js +108 -0
- package/dist/adt/revision-feed.js.map +1 -0
- package/dist/adt/safety.d.ts +11 -0
- package/dist/adt/safety.d.ts.map +1 -1
- package/dist/adt/safety.js +18 -2
- package/dist/adt/safety.js.map +1 -1
- package/dist/adt/security-session-gate.d.ts +23 -0
- package/dist/adt/security-session-gate.d.ts.map +1 -0
- package/dist/adt/security-session-gate.js +56 -0
- package/dist/adt/security-session-gate.js.map +1 -0
- package/dist/adt/source-diff.d.ts +4 -1
- package/dist/adt/source-diff.d.ts.map +1 -1
- package/dist/adt/source-diff.js +5 -3
- package/dist/adt/source-diff.js.map +1 -1
- package/dist/adt/stored-text/chunks.d.ts +8 -0
- package/dist/adt/stored-text/chunks.d.ts.map +1 -0
- package/dist/adt/stored-text/chunks.js +55 -0
- package/dist/adt/stored-text/chunks.js.map +1 -0
- package/dist/adt/stored-text/decoder.d.ts +31 -0
- package/dist/adt/stored-text/decoder.d.ts.map +1 -0
- package/dist/adt/stored-text/decoder.js +319 -0
- package/dist/adt/stored-text/decoder.js.map +1 -0
- package/dist/adt/stored-text/errors.d.ts +10 -0
- package/dist/adt/stored-text/errors.d.ts.map +1 -0
- package/dist/adt/stored-text/errors.js +10 -0
- package/dist/adt/stored-text/errors.js.map +1 -0
- package/dist/adt/stored-text/index.d.ts +7 -0
- package/dist/adt/stored-text/index.d.ts.map +1 -0
- package/dist/adt/stored-text/index.js +6 -0
- package/dist/adt/stored-text/index.js.map +1 -0
- package/dist/adt/stored-text/key.d.ts +3 -0
- package/dist/adt/stored-text/key.d.ts.map +1 -0
- package/dist/adt/stored-text/key.js +23 -0
- package/dist/adt/stored-text/key.js.map +1 -0
- package/dist/adt/stored-text/reader.d.ts +52 -0
- package/dist/adt/stored-text/reader.d.ts.map +1 -0
- package/dist/adt/stored-text/reader.js +142 -0
- package/dist/adt/stored-text/reader.js.map +1 -0
- package/dist/adt/stored-text/source.d.ts +5 -0
- package/dist/adt/stored-text/source.d.ts.map +1 -0
- package/dist/adt/stored-text/source.js +284 -0
- package/dist/adt/stored-text/source.js.map +1 -0
- package/dist/adt/stored-text/types.d.ts +38 -0
- package/dist/adt/stored-text/types.d.ts.map +1 -0
- package/dist/adt/stored-text/types.js +2 -0
- package/dist/adt/stored-text/types.js.map +1 -0
- package/dist/adt/structure-hierarchy.d.ts.map +1 -1
- package/dist/adt/structure-hierarchy.js +11 -27
- package/dist/adt/structure-hierarchy.js.map +1 -1
- package/dist/adt/syntax-batch.d.ts +66 -0
- package/dist/adt/syntax-batch.d.ts.map +1 -0
- package/dist/adt/syntax-batch.js +115 -0
- package/dist/adt/syntax-batch.js.map +1 -0
- package/dist/adt/table-query.d.ts +3 -1
- package/dist/adt/table-query.d.ts.map +1 -1
- package/dist/adt/table-query.js +32 -4
- package/dist/adt/table-query.js.map +1 -1
- package/dist/adt/table-settings.d.ts +3 -0
- package/dist/adt/table-settings.d.ts.map +1 -1
- package/dist/adt/table-settings.js +11 -1
- package/dist/adt/table-settings.js.map +1 -1
- package/dist/adt/text-elements.js +1 -1
- package/dist/adt/text-elements.js.map +1 -1
- package/dist/adt/transport-diff.d.ts +16 -25
- package/dist/adt/transport-diff.d.ts.map +1 -1
- package/dist/adt/transport-diff.js +201 -103
- package/dist/adt/transport-diff.js.map +1 -1
- package/dist/adt/transport-locks.d.ts +7 -0
- package/dist/adt/transport-locks.d.ts.map +1 -0
- package/dist/adt/transport-locks.js +56 -0
- package/dist/adt/transport-locks.js.map +1 -0
- package/dist/adt/transport-review-budget.d.ts +15 -0
- package/dist/adt/transport-review-budget.d.ts.map +1 -0
- package/dist/adt/transport-review-budget.js +57 -0
- package/dist/adt/transport-review-budget.js.map +1 -0
- package/dist/adt/transport.d.ts +5 -2
- package/dist/adt/transport.d.ts.map +1 -1
- package/dist/adt/transport.js +8 -46
- package/dist/adt/transport.js.map +1 -1
- package/dist/adt/types.d.ts +1 -0
- package/dist/adt/types.d.ts.map +1 -1
- package/dist/adt/user-agent.d.ts +1 -1
- package/dist/adt/where-used-native.d.ts +22 -0
- package/dist/adt/where-used-native.d.ts.map +1 -0
- package/dist/adt/where-used-native.js +111 -0
- package/dist/adt/where-used-native.js.map +1 -0
- package/dist/adt/xml-parser.d.ts +2 -3
- package/dist/adt/xml-parser.d.ts.map +1 -1
- package/dist/adt/xml-parser.js +1 -91
- package/dist/adt/xml-parser.js.map +1 -1
- package/dist/aff/validator.d.ts.map +1 -1
- package/dist/aff/validator.js +8 -2
- package/dist/aff/validator.js.map +1 -1
- package/dist/authz/policy.d.ts.map +1 -1
- package/dist/authz/policy.js +10 -2
- package/dist/authz/policy.js.map +1 -1
- package/dist/cache/sqlite-driver.d.ts +24 -0
- package/dist/cache/sqlite-driver.d.ts.map +1 -0
- package/dist/cache/sqlite-driver.js +59 -0
- package/dist/cache/sqlite-driver.js.map +1 -0
- package/dist/cache/sqlite.d.ts +4 -2
- package/dist/cache/sqlite.d.ts.map +1 -1
- package/dist/cache/sqlite.js +5 -4
- package/dist/cache/sqlite.js.map +1 -1
- package/dist/cli-ide.d.ts +11 -0
- package/dist/cli-ide.d.ts.map +1 -0
- package/dist/cli-ide.js +69 -0
- package/dist/cli-ide.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -2
- package/dist/cli.js.map +1 -1
- package/dist/context/grep.d.ts +2 -0
- package/dist/context/grep.d.ts.map +1 -1
- package/dist/context/grep.js +8 -7
- package/dist/context/grep.js.map +1 -1
- package/dist/extract-sap-cookies.js +1 -0
- package/dist/extract-sap-cookies.js.map +1 -1
- package/dist/handlers/activate.d.ts.map +1 -1
- package/dist/handlers/activate.js +3 -0
- package/dist/handlers/activate.js.map +1 -1
- package/dist/handlers/application-log-input.d.ts +32 -0
- package/dist/handlers/application-log-input.d.ts.map +1 -0
- package/dist/handlers/application-log-input.js +34 -0
- package/dist/handlers/application-log-input.js.map +1 -0
- package/dist/handlers/application-log.d.ts +4 -0
- package/dist/handlers/application-log.d.ts.map +1 -0
- package/dist/handlers/application-log.js +14 -0
- package/dist/handlers/application-log.js.map +1 -0
- package/dist/handlers/cds-hints.d.ts +1 -1
- package/dist/handlers/cds-hints.d.ts.map +1 -1
- package/dist/handlers/cds-hints.js +21 -63
- package/dist/handlers/cds-hints.js.map +1 -1
- package/dist/handlers/context.d.ts.map +1 -1
- package/dist/handlers/context.js +7 -3
- package/dist/handlers/context.js.map +1 -1
- package/dist/handlers/diagnose.d.ts.map +1 -1
- package/dist/handlers/diagnose.js +10 -1
- package/dist/handlers/diagnose.js.map +1 -1
- package/dist/handlers/dispatch.d.ts +2 -1
- package/dist/handlers/dispatch.d.ts.map +1 -1
- package/dist/handlers/dispatch.js +63 -12
- package/dist/handlers/dispatch.js.map +1 -1
- package/dist/handlers/dump-filter-inputs.d.ts +38 -0
- package/dist/handlers/dump-filter-inputs.d.ts.map +1 -0
- package/dist/handlers/dump-filter-inputs.js +44 -0
- package/dist/handlers/dump-filter-inputs.js.map +1 -0
- package/dist/handlers/expanded-read.d.ts +24 -0
- package/dist/handlers/expanded-read.d.ts.map +1 -0
- package/dist/handlers/expanded-read.js +56 -0
- package/dist/handlers/expanded-read.js.map +1 -0
- package/dist/handlers/function-parameter-language.d.ts +5 -0
- package/dist/handlers/function-parameter-language.d.ts.map +1 -0
- package/dist/handlers/function-parameter-language.js +19 -0
- package/dist/handlers/function-parameter-language.js.map +1 -0
- package/dist/handlers/function-processing.d.ts +5 -0
- package/dist/handlers/function-processing.d.ts.map +1 -1
- package/dist/handlers/function-processing.js +5 -0
- package/dist/handlers/function-processing.js.map +1 -1
- package/dist/handlers/hyperfocused.d.ts.map +1 -1
- package/dist/handlers/hyperfocused.js +2 -1
- package/dist/handlers/hyperfocused.js.map +1 -1
- package/dist/handlers/long-text-input.d.ts +113 -0
- package/dist/handlers/long-text-input.d.ts.map +1 -0
- package/dist/handlers/long-text-input.js +113 -0
- package/dist/handlers/long-text-input.js.map +1 -0
- package/dist/handlers/long-text.d.ts +5 -0
- package/dist/handlers/long-text.d.ts.map +1 -0
- package/dist/handlers/long-text.js +122 -0
- package/dist/handlers/long-text.js.map +1 -0
- package/dist/handlers/navigate.d.ts.map +1 -1
- package/dist/handlers/navigate.js +8 -3
- package/dist/handlers/navigate.js.map +1 -1
- package/dist/handlers/object-types.d.ts.map +1 -1
- package/dist/handlers/object-types.js +12 -5
- package/dist/handlers/object-types.js.map +1 -1
- package/dist/handlers/query-input.d.ts +50 -0
- package/dist/handlers/query-input.d.ts.map +1 -0
- package/dist/handlers/query-input.js +59 -0
- package/dist/handlers/query-input.js.map +1 -0
- package/dist/handlers/query-tool.d.ts +11 -0
- package/dist/handlers/query-tool.d.ts.map +1 -0
- package/dist/handlers/query-tool.js +99 -0
- package/dist/handlers/query-tool.js.map +1 -0
- package/dist/handlers/query.d.ts +1 -1
- package/dist/handlers/query.d.ts.map +1 -1
- package/dist/handlers/query.js +7 -1
- package/dist/handlers/query.js.map +1 -1
- package/dist/handlers/read.d.ts +1 -0
- package/dist/handlers/read.d.ts.map +1 -1
- package/dist/handlers/read.js +62 -11
- package/dist/handlers/read.js.map +1 -1
- package/dist/handlers/schemas.d.ts +23 -4
- package/dist/handlers/schemas.d.ts.map +1 -1
- package/dist/handlers/schemas.js +82 -9
- package/dist/handlers/schemas.js.map +1 -1
- package/dist/handlers/syntax.d.ts.map +1 -1
- package/dist/handlers/syntax.js +8 -0
- package/dist/handlers/syntax.js.map +1 -1
- package/dist/handlers/tool-descriptions.js +2 -2
- package/dist/handlers/tool-descriptions.js.map +1 -1
- package/dist/handlers/tools.d.ts.map +1 -1
- package/dist/handlers/tools.js +81 -74
- package/dist/handlers/tools.js.map +1 -1
- package/dist/handlers/transport-review.d.ts +5 -0
- package/dist/handlers/transport-review.d.ts.map +1 -0
- package/dist/handlers/transport-review.js +108 -0
- package/dist/handlers/transport-review.js.map +1 -0
- package/dist/handlers/transport.d.ts.map +1 -1
- package/dist/handlers/transport.js +3 -58
- package/dist/handlers/transport.js.map +1 -1
- package/dist/handlers/where-used-details.d.ts +28 -0
- package/dist/handlers/where-used-details.d.ts.map +1 -0
- package/dist/handlers/where-used-details.js +67 -0
- package/dist/handlers/where-used-details.js.map +1 -0
- package/dist/handlers/where-used.d.ts +8 -3
- package/dist/handlers/where-used.d.ts.map +1 -1
- package/dist/handlers/where-used.js +40 -18
- package/dist/handlers/where-used.js.map +1 -1
- package/dist/handlers/write/create.d.ts.map +1 -1
- package/dist/handlers/write/create.js +15 -12
- package/dist/handlers/write/create.js.map +1 -1
- package/dist/handlers/write/pinned-activation.d.ts +8 -0
- package/dist/handlers/write/pinned-activation.d.ts.map +1 -0
- package/dist/handlers/write/pinned-activation.js +68 -0
- package/dist/handlers/write/pinned-activation.js.map +1 -0
- package/dist/handlers/write/pinned.d.ts +10 -0
- package/dist/handlers/write/pinned.d.ts.map +1 -0
- package/dist/handlers/write/pinned.js +202 -0
- package/dist/handlers/write/pinned.js.map +1 -0
- package/dist/handlers/write/update-delete.d.ts.map +1 -1
- package/dist/handlers/write/update-delete.js +5 -3
- package/dist/handlers/write/update-delete.js.map +1 -1
- package/dist/handlers/write-helpers.d.ts +2 -2
- package/dist/handlers/write-helpers.d.ts.map +1 -1
- package/dist/handlers/write-helpers.js +8 -6
- package/dist/handlers/write-helpers.js.map +1 -1
- package/dist/handlers/write.d.ts.map +1 -1
- package/dist/handlers/write.js +4 -1
- package/dist/handlers/write.js.map +1 -1
- package/dist/server/audit.d.ts +1 -0
- package/dist/server/audit.d.ts.map +1 -1
- package/dist/server/audit.js +49 -2
- package/dist/server/audit.js.map +1 -1
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +29 -1
- package/dist/server/config.js.map +1 -1
- package/dist/server/destination-registry.d.ts +14 -0
- package/dist/server/destination-registry.d.ts.map +1 -1
- package/dist/server/destination-registry.js +43 -4
- package/dist/server/destination-registry.js.map +1 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +25 -5
- package/dist/server/http.js.map +1 -1
- package/dist/server/ide-links.d.ts +14 -0
- package/dist/server/ide-links.d.ts.map +1 -0
- package/dist/server/ide-links.js +146 -0
- package/dist/server/ide-links.js.map +1 -0
- package/dist/server/ide-request.d.ts +13 -0
- package/dist/server/ide-request.d.ts.map +1 -0
- package/dist/server/ide-request.js +14 -0
- package/dist/server/ide-request.js.map +1 -0
- package/dist/server/multi-target-authorization.d.ts +1 -1
- package/dist/server/multi-target-authorization.d.ts.map +1 -1
- package/dist/server/multi-target-authorization.js +5 -3
- package/dist/server/multi-target-authorization.js.map +1 -1
- package/dist/server/multi-target-catalog-enforced.d.ts +6 -1
- package/dist/server/multi-target-catalog-enforced.d.ts.map +1 -1
- package/dist/server/multi-target-catalog-enforced.js +3 -0
- package/dist/server/multi-target-catalog-enforced.js.map +1 -1
- package/dist/server/multi-target-catalog-projection.d.ts.map +1 -1
- package/dist/server/multi-target-catalog-projection.js +1 -0
- package/dist/server/multi-target-catalog-projection.js.map +1 -1
- package/dist/server/multi-target-catalog.d.ts.map +1 -1
- package/dist/server/multi-target-catalog.js +1 -0
- package/dist/server/multi-target-catalog.js.map +1 -1
- package/dist/server/multi-target-destination-config.d.ts +2 -0
- package/dist/server/multi-target-destination-config.d.ts.map +1 -1
- package/dist/server/multi-target-destination-config.js +18 -0
- package/dist/server/multi-target-destination-config.js.map +1 -1
- package/dist/server/multi-target-identity.d.ts.map +1 -1
- package/dist/server/multi-target-identity.js +4 -3
- package/dist/server/multi-target-identity.js.map +1 -1
- package/dist/server/multi-target-request-projection.d.ts +2 -0
- package/dist/server/multi-target-request-projection.d.ts.map +1 -1
- package/dist/server/multi-target-request-projection.js +2 -0
- package/dist/server/multi-target-request-projection.js.map +1 -1
- package/dist/server/multi-target-runtime.d.ts +5 -1
- package/dist/server/multi-target-runtime.d.ts.map +1 -1
- package/dist/server/multi-target-runtime.js +30 -3
- package/dist/server/multi-target-runtime.js.map +1 -1
- package/dist/server/multi-target-server.d.ts.map +1 -1
- package/dist/server/multi-target-server.js +42 -6
- package/dist/server/multi-target-server.js.map +1 -1
- package/dist/server/multi-target-tools.d.ts.map +1 -1
- package/dist/server/multi-target-tools.js +64 -7
- package/dist/server/multi-target-tools.js.map +1 -1
- package/dist/server/multi-target-write-surface.d.ts +9 -0
- package/dist/server/multi-target-write-surface.d.ts.map +1 -0
- package/dist/server/multi-target-write-surface.js +42 -0
- package/dist/server/multi-target-write-surface.js.map +1 -0
- package/dist/server/per-user-transport.d.ts +18 -0
- package/dist/server/per-user-transport.d.ts.map +1 -0
- package/dist/server/per-user-transport.js +72 -0
- package/dist/server/per-user-transport.js.map +1 -0
- package/dist/server/server-instructions.d.ts +2 -0
- package/dist/server/server-instructions.d.ts.map +1 -1
- package/dist/server/server-instructions.js +10 -12
- package/dist/server/server-instructions.js.map +1 -1
- package/dist/server/server.d.ts +3 -0
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +22 -8
- package/dist/server/server.js.map +1 -1
- package/dist/server/tool-auth.d.ts +1 -1
- package/dist/server/tool-auth.d.ts.map +1 -1
- package/dist/server/tool-auth.js +24 -4
- package/dist/server/tool-auth.js.map +1 -1
- package/dist/server/types.d.ts +7 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +3 -0
- package/dist/server/types.js.map +1 -1
- package/dist/server/ui-state.d.ts.map +1 -1
- package/dist/server/ui-state.js +1 -0
- package/dist/server/ui-state.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +14 -10
package/dist/adt/safety.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safety.js","sourceRoot":"","sources":["../../src/adt/safety.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"safety.js","sourceRoot":"","sources":["../../src/adt/safety.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lets one request establish the SAP security session before a cold client fans out.
|
|
3
|
+
*
|
|
4
|
+
* Returning the first response's cookie avoids issuing unused sessions for every
|
|
5
|
+
* startup probe. See docs/research/2026-10-22-security-session-bootstrap.md.
|
|
6
|
+
*/
|
|
7
|
+
import { type RequestDeadlineOptions } from './http-deadline.js';
|
|
8
|
+
/** True when one of the cookies is a SAP security session cookie (`SAP_SESSIONID_<SID>_<CLNT>`). */
|
|
9
|
+
export declare function hasSecuritySessionCookie(cookieNames: Iterable<string>): boolean;
|
|
10
|
+
export declare class SecuritySessionGate {
|
|
11
|
+
private pending;
|
|
12
|
+
private ready;
|
|
13
|
+
private currentGeneration;
|
|
14
|
+
get generation(): number;
|
|
15
|
+
/**
|
|
16
|
+
* A failed cold request lets one waiter take over. A successful response (or 304)
|
|
17
|
+
* opens the gate even without cookies, for systems without security sessions.
|
|
18
|
+
*/
|
|
19
|
+
run(hasSessionCookie: () => boolean, request: (waited: boolean) => Promise<Response>, options?: RequestDeadlineOptions): Promise<Response>;
|
|
20
|
+
/** Keep a pending owner until it settles, but reject its old session state. */
|
|
21
|
+
reset(): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=security-session-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-session-gate.d.ts","sourceRoot":"","sources":["../../src/adt/security-session-gate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA4B,KAAK,sBAAsB,EAA2B,MAAM,oBAAoB,CAAC;AAEpH,oGAAoG;AACpG,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAE/E;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,iBAAiB,CAAK;IAE9B,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;;OAGG;IACG,GAAG,CACP,gBAAgB,EAAE,MAAM,OAAO,EAC/B,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,EAC/C,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,QAAQ,CAAC,CAuBnB;IAED,+EAA+E;IAC/E,KAAK,IAAI,IAAI,CAGZ;CACF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lets one request establish the SAP security session before a cold client fans out.
|
|
3
|
+
*
|
|
4
|
+
* Returning the first response's cookie avoids issuing unused sessions for every
|
|
5
|
+
* startup probe. See docs/research/2026-10-22-security-session-bootstrap.md.
|
|
6
|
+
*/
|
|
7
|
+
import { awaitWithinRequestBudget, throwIfRequestCancelled } from './http-deadline.js';
|
|
8
|
+
/** True when one of the cookies is a SAP security session cookie (`SAP_SESSIONID_<SID>_<CLNT>`). */
|
|
9
|
+
export function hasSecuritySessionCookie(cookieNames) {
|
|
10
|
+
return [...cookieNames].some((name) => name.startsWith('SAP_SESSIONID'));
|
|
11
|
+
}
|
|
12
|
+
export class SecuritySessionGate {
|
|
13
|
+
pending;
|
|
14
|
+
ready = false;
|
|
15
|
+
currentGeneration = 0;
|
|
16
|
+
get generation() {
|
|
17
|
+
return this.currentGeneration;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A failed cold request lets one waiter take over. A successful response (or 304)
|
|
21
|
+
* opens the gate even without cookies, for systems without security sessions.
|
|
22
|
+
*/
|
|
23
|
+
async run(hasSessionCookie, request, options) {
|
|
24
|
+
let waited = false;
|
|
25
|
+
while (this.pending) {
|
|
26
|
+
waited = true;
|
|
27
|
+
await awaitWithinRequestBudget(this.pending, options);
|
|
28
|
+
}
|
|
29
|
+
throwIfRequestCancelled(options);
|
|
30
|
+
if (this.ready || hasSessionCookie())
|
|
31
|
+
return request(waited);
|
|
32
|
+
const generation = this.generation;
|
|
33
|
+
let release;
|
|
34
|
+
const pending = new Promise((resolve) => {
|
|
35
|
+
release = resolve;
|
|
36
|
+
});
|
|
37
|
+
this.pending = pending;
|
|
38
|
+
try {
|
|
39
|
+
const result = await request(waited);
|
|
40
|
+
if (generation === this.generation && (result.ok || result.status === 304))
|
|
41
|
+
this.ready = true;
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
if (this.pending === pending)
|
|
46
|
+
this.pending = undefined;
|
|
47
|
+
release();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** Keep a pending owner until it settles, but reject its old session state. */
|
|
51
|
+
reset() {
|
|
52
|
+
this.currentGeneration++;
|
|
53
|
+
this.ready = false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=security-session-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-session-gate.js","sourceRoot":"","sources":["../../src/adt/security-session-gate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,wBAAwB,EAA+B,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEpH,oGAAoG;AACpG,MAAM,UAAU,wBAAwB,CAAC,WAA6B;IACpE,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,OAAO,mBAAmB;IACtB,OAAO,CAA4B;IACnC,KAAK,GAAG,KAAK,CAAC;IACd,iBAAiB,GAAG,CAAC,CAAC;IAE9B,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG,CACP,gBAA+B,EAC/B,OAA+C,EAC/C,OAAgC;QAEhC,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,GAAG,IAAI,CAAC;YACd,MAAM,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;QACD,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,KAAK,IAAI,gBAAgB,EAAE;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,OAAoB,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5C,OAAO,GAAG,OAAO,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC;gBAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAC9F,OAAO,MAAM,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;gBAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YACvD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,KAAK;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -24,5 +24,8 @@ export interface UnifiedDiffResult {
|
|
|
24
24
|
* `ignoreCosmetics` additionally drops trailing blanks and normalizes the final newline —
|
|
25
25
|
* opt-in, for review diffs (see `normalizeCosmetics`).
|
|
26
26
|
*/
|
|
27
|
-
export declare function unifiedDiff(oldText: string, newText: string, oldLabel: string, newLabel: string, context?: number, ignoreCosmetics?: boolean
|
|
27
|
+
export declare function unifiedDiff(oldText: string, newText: string, oldLabel: string, newLabel: string, context?: number, ignoreCosmetics?: boolean, work?: {
|
|
28
|
+
timeout: number;
|
|
29
|
+
maxEditLength: number;
|
|
30
|
+
}): UnifiedDiffResult;
|
|
28
31
|
//# sourceMappingURL=source-diff.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-diff.d.ts","sourceRoot":"","sources":["../../src/adt/source-diff.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAqBD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,SAAI,EACX,eAAe,UAAQ,
|
|
1
|
+
{"version":3,"file":"source-diff.d.ts","sourceRoot":"","sources":["../../src/adt/source-diff.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAqBD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,SAAI,EACX,eAAe,UAAQ,EACvB,IAAI,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAChD,iBAAiB,CAwBnB"}
|
package/dist/adt/source-diff.js
CHANGED
|
@@ -17,7 +17,7 @@ function normalizeNewlines(text) {
|
|
|
17
17
|
*
|
|
18
18
|
* Review-only (opt-in): the ABAP pretty-printer and a save round-trip can flip trailing
|
|
19
19
|
* spaces across a whole include, which renders as a full-file rewrite in a transport
|
|
20
|
-
* review. SAP
|
|
20
|
+
* review. SAP ADT 1.2 also exposes a whitespace-ignore option;
|
|
21
21
|
* `SAPRead action="diff"` keeps SAP's byte-exact behaviour by default.
|
|
22
22
|
*/
|
|
23
23
|
function normalizeCosmetics(text) {
|
|
@@ -36,7 +36,7 @@ function normalizeCosmetics(text) {
|
|
|
36
36
|
* `ignoreCosmetics` additionally drops trailing blanks and normalizes the final newline —
|
|
37
37
|
* opt-in, for review diffs (see `normalizeCosmetics`).
|
|
38
38
|
*/
|
|
39
|
-
export function unifiedDiff(oldText, newText, oldLabel, newLabel, context = 3, ignoreCosmetics = false) {
|
|
39
|
+
export function unifiedDiff(oldText, newText, oldLabel, newLabel, context = 3, ignoreCosmetics = false, work) {
|
|
40
40
|
const rawA = normalizeNewlines(oldText);
|
|
41
41
|
const rawB = normalizeNewlines(newText);
|
|
42
42
|
const a = ignoreCosmetics ? normalizeCosmetics(rawA) : rawA;
|
|
@@ -46,7 +46,9 @@ export function unifiedDiff(oldText, newText, oldLabel, newLabel, context = 3, i
|
|
|
46
46
|
// as whitespace-only rather than letting the caller render "no change".
|
|
47
47
|
return { identical: true, diff: '', added: 0, removed: 0, ...(rawA !== rawB ? { cosmeticOnly: true } : {}) };
|
|
48
48
|
}
|
|
49
|
-
const patch = createTwoFilesPatch(oldLabel, newLabel, a, b, '', '', { context });
|
|
49
|
+
const patch = createTwoFilesPatch(oldLabel, newLabel, a, b, '', '', { context, ...work });
|
|
50
|
+
if (patch === undefined)
|
|
51
|
+
throw new Error('Diff calculation exceeded its work budget; statistics are unavailable.');
|
|
50
52
|
// `---`/`+++` are the two file headers and appear first; skipping by PREFIX would also drop
|
|
51
53
|
// real deletions of lines that start with `--` (the ABAP/CDS comment marker), so anchor on
|
|
52
54
|
// the header position instead. Hunk bodies start after the first `@@`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-diff.js","sourceRoot":"","sources":["../../src/adt/source-diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAmB3C,0FAA0F;AAC1F,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC;AAC3D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CACzB,OAAe,EACf,OAAe,EACf,QAAgB,EAChB,QAAgB,EAChB,OAAO,GAAG,CAAC,EACX,eAAe,GAAG,KAAK;
|
|
1
|
+
{"version":3,"file":"source-diff.js","sourceRoot":"","sources":["../../src/adt/source-diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAmB3C,0FAA0F;AAC1F,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC;AAC3D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CACzB,OAAe,EACf,OAAe,EACf,QAAgB,EAChB,QAAgB,EAChB,OAAO,GAAG,CAAC,EACX,eAAe,GAAG,KAAK,EACvB,IAAiD;IAEjD,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,yFAAyF;QACzF,wEAAwE;QACxE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/G,CAAC;IACD,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC1F,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IACnH,4FAA4F;IAC5F,2FAA2F;IAC3F,uEAAuE;IACvE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAClE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,KAAK,EAAE,CAAC;aAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TextKey } from './types.js';
|
|
2
|
+
export declare function keyFilters(key: TextKey): {
|
|
3
|
+
field: string;
|
|
4
|
+
op: string;
|
|
5
|
+
value: string;
|
|
6
|
+
}[];
|
|
7
|
+
export declare function assembleChunks(rows: Record<string, string>[], key: TextKey, client: string): Buffer;
|
|
8
|
+
//# sourceMappingURL=chunks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks.d.ts","sourceRoot":"","sources":["../../../src/adt/stored-text/chunks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO;;;;IAatC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAyCnG"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/** Assemble bounded STXL storage rows; decoding and SAP access live in separate modules. */
|
|
2
|
+
import { DEFAULT_LIMITS } from './decoder.js';
|
|
3
|
+
import { TextReadError } from './errors.js';
|
|
4
|
+
const keyLengths = { TDOBJECT: 10, TDNAME: 70, TDID: 4, TDSPRAS: 1 };
|
|
5
|
+
export function keyFilters(key) {
|
|
6
|
+
return Object.entries(keyLengths).map(([name, length]) => {
|
|
7
|
+
const value = key[name];
|
|
8
|
+
if (typeof value !== 'string' ||
|
|
9
|
+
!value.length ||
|
|
10
|
+
value.length > length ||
|
|
11
|
+
Array.from(value).some((char) => char.charCodeAt(0) < 32)) {
|
|
12
|
+
throw new TextReadError('INVALID_KEY', `invalid ${name}`);
|
|
13
|
+
}
|
|
14
|
+
return { field: name, op: '=', value };
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export function assembleChunks(rows, key, client) {
|
|
18
|
+
keyFilters(key);
|
|
19
|
+
if (!/^\d{3}$/.test(client))
|
|
20
|
+
throw new TextReadError('INVALID_KEY', 'invalid client');
|
|
21
|
+
if (!rows.length || rows.length > 256)
|
|
22
|
+
throw new TextReadError('CORRUPT_CLUSTER', 'missing or excessive chunks');
|
|
23
|
+
const chunks = rows
|
|
24
|
+
.map((row) => {
|
|
25
|
+
if (row.MANDT !== client ||
|
|
26
|
+
row.RELID !== 'TX' ||
|
|
27
|
+
Object.keys(keyLengths).some((name) => row[name] !== key[name]))
|
|
28
|
+
throw new TextReadError('CORRUPT_CLUSTER', 'chunk identity mismatch');
|
|
29
|
+
if (!/^\d+ *$/.test(row.SRTF2) || !/^\d+ *$/.test(row.CLUSTR))
|
|
30
|
+
throw new TextReadError('CORRUPT_CLUSTER', 'invalid chunk integer');
|
|
31
|
+
const index = Number(row.SRTF2);
|
|
32
|
+
const length = Number(row.CLUSTR);
|
|
33
|
+
if (!Number.isSafeInteger(index) ||
|
|
34
|
+
index < 0 ||
|
|
35
|
+
index > 255 ||
|
|
36
|
+
length < 1 ||
|
|
37
|
+
length > 7902 ||
|
|
38
|
+
!/^[\da-f]{15804}$/iu.test(row.CLUSTD))
|
|
39
|
+
throw new TextReadError('CORRUPT_CLUSTER', 'invalid or truncated binary chunk');
|
|
40
|
+
return { index, data: Buffer.from(row.CLUSTD.slice(0, length * 2), 'hex') };
|
|
41
|
+
})
|
|
42
|
+
.sort((a, b) => a.index - b.index);
|
|
43
|
+
let total = 0;
|
|
44
|
+
for (const [index, chunk] of chunks.entries()) {
|
|
45
|
+
if (chunk.index !== index)
|
|
46
|
+
throw new TextReadError('CORRUPT_CLUSTER', 'missing or duplicate chunk sequence');
|
|
47
|
+
if (index < chunks.length - 1 && chunk.data.length !== 7902)
|
|
48
|
+
throw new TextReadError('CORRUPT_CLUSTER', 'short intermediate chunk');
|
|
49
|
+
total += chunk.data.length;
|
|
50
|
+
if (total > DEFAULT_LIMITS.maxInputBytes)
|
|
51
|
+
throw new TextReadError('LIMIT_EXCEEDED', 'compressed input limit exceeded');
|
|
52
|
+
}
|
|
53
|
+
return Buffer.concat(chunks.map((chunk) => chunk.data), total);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=chunks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks.js","sourceRoot":"","sources":["../../../src/adt/stored-text/chunks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface TextLine {
|
|
2
|
+
format: string;
|
|
3
|
+
text: string;
|
|
4
|
+
}
|
|
5
|
+
export interface DecodeLimits {
|
|
6
|
+
maxInputBytes: number;
|
|
7
|
+
maxOutputBytes: number;
|
|
8
|
+
maxLines: number;
|
|
9
|
+
}
|
|
10
|
+
export interface UnpackedCluster {
|
|
11
|
+
version: number;
|
|
12
|
+
codePage: string;
|
|
13
|
+
compressed: boolean;
|
|
14
|
+
compressedTrailingBytes: number;
|
|
15
|
+
payload: Buffer;
|
|
16
|
+
}
|
|
17
|
+
export interface DecodedText {
|
|
18
|
+
version: number;
|
|
19
|
+
codePage: string;
|
|
20
|
+
compressed: boolean;
|
|
21
|
+
compressedTrailingBytes: number;
|
|
22
|
+
wellFormedUnicode: boolean;
|
|
23
|
+
lines: TextLine[];
|
|
24
|
+
outputBytes: number;
|
|
25
|
+
}
|
|
26
|
+
export declare const DEFAULT_LIMITS: Readonly<DecodeLimits>;
|
|
27
|
+
/** Validate the tested container profile and return its bounded decompressed payload. */
|
|
28
|
+
export declare function unpackCluster(data: Buffer, limits?: DecodeLimits): Promise<UnpackedCluster>;
|
|
29
|
+
/** Decode the verified stored-TLINE profile; returned lines retain ITF formatting codes. */
|
|
30
|
+
export declare function decodeStxl(data: Buffer, limits?: DecodeLimits): Promise<DecodedText>;
|
|
31
|
+
//# sourceMappingURL=decoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../../src/adt/stored-text/decoder.ts"],"names":[],"mappings":"AA2DA,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,MAAM,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AACD,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,YAAY,CAIhD,CAAC;AA6CH,yFAAyF;AACzF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,YAA6B,GAAG,OAAO,CAAC,eAAe,CAAC,CAoDjH;AAqID,4FAA4F;AAC5F,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,YAA6B,GAAG,OAAO,CAAC,WAAW,CAAC,CAY1G"}
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STXL container marker research and portions of the traversal design are adapted from:
|
|
3
|
+
* https://github.com/aamelin1/sap-long-texts
|
|
4
|
+
* Revision: 19c8c272b23f0ab481f7d63b6b36c45db15fd095
|
|
5
|
+
*
|
|
6
|
+
* MIT License
|
|
7
|
+
*
|
|
8
|
+
* Copyright (c) 2026 Andrey
|
|
9
|
+
*
|
|
10
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
* in the Software without restriction, including without limitation the rights
|
|
13
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
* furnished to do so, subject to the following conditions:
|
|
16
|
+
*
|
|
17
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
* copies or substantial portions of the Software.
|
|
19
|
+
*
|
|
20
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
* SOFTWARE.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Bounded STXL/TLINE decoder; no SAP installation, RFC, Python, or third-party runtime.
|
|
30
|
+
* Container marker research: aamelin1/sap-long-texts, commit 19c8c272 (MIT; attribution above).
|
|
31
|
+
* Verified profile: FF06, Unicode little-endian (4103), flat TLINE, CS_LZH or plain.
|
|
32
|
+
* This accepts the qualified stored profile; it is not a universal IMPORT/READ_TEXT implementation.
|
|
33
|
+
*/
|
|
34
|
+
import { promisify } from 'node:util';
|
|
35
|
+
import { inflateRaw } from 'node:zlib';
|
|
36
|
+
import { TextReadError } from './errors.js';
|
|
37
|
+
const inflate = promisify(inflateRaw);
|
|
38
|
+
const CONTAINER_HEADER_BYTES = 16;
|
|
39
|
+
const COMPRESSION_HEADER_BYTES = 8;
|
|
40
|
+
const TLINE_FORMAT_UNITS = 2;
|
|
41
|
+
const TLINE_TEXT_UNITS = 132;
|
|
42
|
+
const UTF16_BYTES_PER_UNIT = 2;
|
|
43
|
+
const TLINE_ROW_BYTES = (TLINE_FORMAT_UNITS + TLINE_TEXT_UNITS) * UTF16_BYTES_PER_UNIT;
|
|
44
|
+
// Empirical ceiling for the verified SAP-produced compressed profile; not a trailer grammar.
|
|
45
|
+
const MAX_COMPRESSED_TRAILING_BYTES = 6;
|
|
46
|
+
const MARKER = {
|
|
47
|
+
segment: 3,
|
|
48
|
+
containerEnd: 4,
|
|
49
|
+
characterField: 0xaa,
|
|
50
|
+
structureStart: 0xad,
|
|
51
|
+
structureEnd: 0xae,
|
|
52
|
+
fixedRow: 0xbb,
|
|
53
|
+
sizedRow: 0xbc,
|
|
54
|
+
rowEnd: 0xbd,
|
|
55
|
+
table: 0xbe,
|
|
56
|
+
tableEnd: 0xbf,
|
|
57
|
+
};
|
|
58
|
+
export const DEFAULT_LIMITS = Object.freeze({
|
|
59
|
+
maxInputBytes: 2 * 1024 * 1024,
|
|
60
|
+
maxOutputBytes: 4 * 1024 * 1024,
|
|
61
|
+
maxLines: 10_000,
|
|
62
|
+
});
|
|
63
|
+
function fail(message, code = 'CORRUPT_CLUSTER') {
|
|
64
|
+
throw new TextReadError(code, message);
|
|
65
|
+
}
|
|
66
|
+
function checkLimits(limits) {
|
|
67
|
+
for (const name of Object.keys(DEFAULT_LIMITS)) {
|
|
68
|
+
const value = limits?.[name];
|
|
69
|
+
if (!Number.isSafeInteger(value) || value < 1 || value > DEFAULT_LIMITS[name]) {
|
|
70
|
+
fail(`invalid ${name}; limits may only narrow the hard ceiling`, 'LIMIT_EXCEEDED');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function range(data, offset, size) {
|
|
75
|
+
if (!Number.isSafeInteger(offset) ||
|
|
76
|
+
!Number.isSafeInteger(size) ||
|
|
77
|
+
offset < 0 ||
|
|
78
|
+
size < 0 ||
|
|
79
|
+
offset + size > data.length) {
|
|
80
|
+
fail(`truncated container at byte ${offset}`);
|
|
81
|
+
}
|
|
82
|
+
return data.subarray(offset, offset + size);
|
|
83
|
+
}
|
|
84
|
+
function uint(data, offset, size) {
|
|
85
|
+
return range(data, offset, size).readUIntBE(0, size);
|
|
86
|
+
}
|
|
87
|
+
function textBytes(bytes, codePage) {
|
|
88
|
+
if (codePage !== '4103')
|
|
89
|
+
fail(`unverified code page ${codePage}`, 'UNSUPPORTED_PROFILE');
|
|
90
|
+
// ABAP CHAR truncation can leave a lone surrogate. Preserve its code unit, as IMPORT does.
|
|
91
|
+
// JSON.stringify escapes such units; callers must not silently replace them during encoding.
|
|
92
|
+
return bytes.toString('utf16le');
|
|
93
|
+
}
|
|
94
|
+
/** Remove SAP's bit prefix while preserving the bounded input size for native zlib. */
|
|
95
|
+
function reframeLzh(source) {
|
|
96
|
+
const shift = 2 + (source[0] & 3);
|
|
97
|
+
const reframed = Buffer.alloc(source.length);
|
|
98
|
+
for (let i = 0; i < source.length; i++) {
|
|
99
|
+
reframed[i] = (source[i] >>> shift) | ((source[i + 1] ?? 0) << (8 - shift));
|
|
100
|
+
}
|
|
101
|
+
return reframed;
|
|
102
|
+
}
|
|
103
|
+
/** Validate the tested container profile and return its bounded decompressed payload. */
|
|
104
|
+
export async function unpackCluster(data, limits = DEFAULT_LIMITS) {
|
|
105
|
+
checkLimits(limits);
|
|
106
|
+
if (data.length > limits.maxInputBytes)
|
|
107
|
+
fail('compressed input limit exceeded', 'LIMIT_EXCEEDED');
|
|
108
|
+
range(data, 0, CONTAINER_HEADER_BYTES);
|
|
109
|
+
if (data[0] !== 0xff || data[1] !== 6 || data[2] !== 2)
|
|
110
|
+
fail('unverified container signature/version/byte order', 'UNSUPPORTED_PROFILE');
|
|
111
|
+
const version = data[1];
|
|
112
|
+
const codePage = data.subarray(8, 12).toString('latin1');
|
|
113
|
+
textBytes(Buffer.alloc(0), codePage); // Reject unknown code pages even for an empty table.
|
|
114
|
+
const compression = data[4];
|
|
115
|
+
let payload;
|
|
116
|
+
let compressedTrailingBytes = 0;
|
|
117
|
+
if (compression === 1) {
|
|
118
|
+
payload = data.subarray(CONTAINER_HEADER_BYTES);
|
|
119
|
+
if (payload.length > limits.maxOutputBytes)
|
|
120
|
+
fail('uncompressed output limit exceeded', 'LIMIT_EXCEEDED');
|
|
121
|
+
}
|
|
122
|
+
else if (compression === 2) {
|
|
123
|
+
range(data, CONTAINER_HEADER_BYTES, COMPRESSION_HEADER_BYTES + 1);
|
|
124
|
+
if (data[20] !== 0x12 || data[21] !== 0x1f || data[22] !== 0x9d)
|
|
125
|
+
fail('unsupported compression header', 'UNSUPPORTED_PROFILE');
|
|
126
|
+
const expected = data.readUInt32LE(CONTAINER_HEADER_BYTES);
|
|
127
|
+
if (expected < 1 || expected > limits.maxOutputBytes)
|
|
128
|
+
fail('declared output limit exceeded', 'LIMIT_EXCEEDED');
|
|
129
|
+
const reframed = reframeLzh(data.subarray(CONTAINER_HEADER_BYTES + COMPRESSION_HEADER_BYTES));
|
|
130
|
+
const firstBlockType = (reframed[0] >>> 1) & 3;
|
|
131
|
+
if (firstBlockType !== 1 && firstBlockType !== 2)
|
|
132
|
+
fail('unsupported initial LZH block type', 'UNSUPPORTED_PROFILE');
|
|
133
|
+
let consumed;
|
|
134
|
+
try {
|
|
135
|
+
// Node's callback typings omit the info:true result shape.
|
|
136
|
+
const inflated = (await inflate(reframed, {
|
|
137
|
+
maxOutputLength: expected,
|
|
138
|
+
windowBits: 14,
|
|
139
|
+
info: true,
|
|
140
|
+
}));
|
|
141
|
+
payload = inflated.buffer;
|
|
142
|
+
consumed = inflated.engine.bytesWritten;
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return fail('invalid, truncated, oversized, or unsupported LZH stream');
|
|
146
|
+
}
|
|
147
|
+
if (payload.length !== expected)
|
|
148
|
+
fail('decompressed length mismatch');
|
|
149
|
+
compressedTrailingBytes = reframed.length - consumed;
|
|
150
|
+
// Live SAP buffers have 1–6 residual bytes, sometimes nonzero. Their grammar is unverified.
|
|
151
|
+
// Bound the opaque tail to reject appended stale chunks; this is not an integrity check.
|
|
152
|
+
if (!Number.isSafeInteger(consumed) ||
|
|
153
|
+
consumed < 1 ||
|
|
154
|
+
compressedTrailingBytes < 0 ||
|
|
155
|
+
compressedTrailingBytes > MAX_COMPRESSED_TRAILING_BYTES)
|
|
156
|
+
fail('excess compressed trailer bytes');
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
return fail(`unsupported compression flag ${compression}`, 'UNSUPPORTED_PROFILE');
|
|
160
|
+
}
|
|
161
|
+
return { version, codePage, compressed: compression === 2, compressedTrailingBytes, payload };
|
|
162
|
+
}
|
|
163
|
+
/** Parse one complete named TLINE table; every transition checks its required predecessor. */
|
|
164
|
+
function parseTlinePayload(payload, codePage, limits) {
|
|
165
|
+
// unpackCluster has already rejected all profiles except UTF-16LE / 4103.
|
|
166
|
+
const charBytes = UTF16_BYTES_PER_UNIT;
|
|
167
|
+
const lines = [];
|
|
168
|
+
let p = 0;
|
|
169
|
+
let descriptor = false;
|
|
170
|
+
let ended = false;
|
|
171
|
+
let rowBytes = 0;
|
|
172
|
+
const fields = [];
|
|
173
|
+
let declaredRows;
|
|
174
|
+
let structureStarted = false;
|
|
175
|
+
let structureEnded = false;
|
|
176
|
+
let rowPending = false;
|
|
177
|
+
let tableClosed = false;
|
|
178
|
+
let segmentLength = 0;
|
|
179
|
+
const emit = (offset, length) => {
|
|
180
|
+
if (ended ||
|
|
181
|
+
tableClosed ||
|
|
182
|
+
rowPending ||
|
|
183
|
+
!descriptor ||
|
|
184
|
+
declaredRows === undefined ||
|
|
185
|
+
length !== TLINE_ROW_BYTES ||
|
|
186
|
+
rowBytes !== length ||
|
|
187
|
+
fields.length !== 2 ||
|
|
188
|
+
fields[0] !== TLINE_FORMAT_UNITS * charBytes ||
|
|
189
|
+
fields[1] !== TLINE_TEXT_UNITS * charBytes)
|
|
190
|
+
fail('unexpected TLINE row shape');
|
|
191
|
+
if (lines.length >= limits.maxLines)
|
|
192
|
+
fail('line limit exceeded', 'LIMIT_EXCEEDED');
|
|
193
|
+
const row = range(payload, offset, length);
|
|
194
|
+
lines.push({
|
|
195
|
+
format: textBytes(row.subarray(0, TLINE_FORMAT_UNITS * charBytes), codePage).replace(/ +$/u, ''),
|
|
196
|
+
text: textBytes(row.subarray(TLINE_FORMAT_UNITS * charBytes), codePage).replace(/ +$/u, ''),
|
|
197
|
+
});
|
|
198
|
+
rowPending = true;
|
|
199
|
+
};
|
|
200
|
+
while (p < payload.length) {
|
|
201
|
+
const marker = payload[p];
|
|
202
|
+
// Verified plain and inflated TLINE payloads end exactly at marker 04. CLUSTR has
|
|
203
|
+
// already removed storage padding; accepting zeros here could hide stale chunks.
|
|
204
|
+
if (ended)
|
|
205
|
+
fail('non-padding bytes after container end (trailing padding is unsupported)');
|
|
206
|
+
switch (marker) {
|
|
207
|
+
case MARKER.segment: {
|
|
208
|
+
if (descriptor)
|
|
209
|
+
fail('multiple tables in TLINE container');
|
|
210
|
+
const nameOffset = 32;
|
|
211
|
+
if (uint(payload, p + 1, 1) !== 14 ||
|
|
212
|
+
uint(payload, p + 2, 1) !== 0 ||
|
|
213
|
+
uint(payload, p + 3, 4) !== TLINE_ROW_BYTES)
|
|
214
|
+
fail('unexpected TLINE segment descriptor');
|
|
215
|
+
if (range(payload, p + 12, 20).some((byte) => byte !== 0))
|
|
216
|
+
fail('unsupported segment header fields');
|
|
217
|
+
segmentLength = uint(payload, p + 7, 4);
|
|
218
|
+
const nameLength = uint(payload, p + 11, 1);
|
|
219
|
+
const bytes = charBytes;
|
|
220
|
+
const name = textBytes(range(payload, p + nameOffset, nameLength * bytes), codePage);
|
|
221
|
+
if (name !== 'TLINE')
|
|
222
|
+
fail('container does not hold TLINE');
|
|
223
|
+
range(payload, p, nameOffset + nameLength * bytes);
|
|
224
|
+
p += nameOffset + nameLength * bytes;
|
|
225
|
+
descriptor = true;
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
case MARKER.structureStart:
|
|
229
|
+
if (!descriptor || structureStarted || fields.length || declaredRows !== undefined)
|
|
230
|
+
fail('misplaced structure start');
|
|
231
|
+
if (uint(payload, p + 3, 4) !== TLINE_ROW_BYTES)
|
|
232
|
+
fail('unexpected structure length');
|
|
233
|
+
structureStarted = true;
|
|
234
|
+
p += 7;
|
|
235
|
+
break;
|
|
236
|
+
case MARKER.structureEnd:
|
|
237
|
+
if (!structureStarted || structureEnded || fields.length !== 2 || declaredRows !== undefined)
|
|
238
|
+
fail('misplaced structure end');
|
|
239
|
+
if (uint(payload, p + 3, 4) !== TLINE_ROW_BYTES)
|
|
240
|
+
fail('unexpected structure length');
|
|
241
|
+
structureEnded = true;
|
|
242
|
+
p += 7;
|
|
243
|
+
break;
|
|
244
|
+
case MARKER.characterField: {
|
|
245
|
+
if (!structureStarted || structureEnded || fields.length >= 2)
|
|
246
|
+
fail('unexpected character descriptor');
|
|
247
|
+
const length = uint(payload, p + 3, 4);
|
|
248
|
+
if (length !== (fields.length === 0 ? TLINE_FORMAT_UNITS : TLINE_TEXT_UNITS) * charBytes)
|
|
249
|
+
fail('unexpected TLINE field length');
|
|
250
|
+
fields.push(length);
|
|
251
|
+
rowBytes += length;
|
|
252
|
+
p += 7;
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
case MARKER.table:
|
|
256
|
+
if (!structureEnded || declaredRows !== undefined || lines.length)
|
|
257
|
+
fail('misplaced table descriptor');
|
|
258
|
+
if (uint(payload, p + 1, 4) !== rowBytes)
|
|
259
|
+
fail('table row length mismatch');
|
|
260
|
+
declaredRows = uint(payload, p + 5, 4);
|
|
261
|
+
if (declaredRows > limits.maxLines)
|
|
262
|
+
fail('declared line limit exceeded', 'LIMIT_EXCEEDED');
|
|
263
|
+
p += 9;
|
|
264
|
+
break;
|
|
265
|
+
case MARKER.sizedRow: {
|
|
266
|
+
const length = uint(payload, p + 1, 4);
|
|
267
|
+
emit(p + 5, length);
|
|
268
|
+
p += 5 + length;
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
case MARKER.fixedRow:
|
|
272
|
+
emit(p + 1, rowBytes);
|
|
273
|
+
p += 1 + rowBytes;
|
|
274
|
+
break;
|
|
275
|
+
case MARKER.rowEnd:
|
|
276
|
+
if (!rowPending || tableClosed)
|
|
277
|
+
fail('misplaced row end');
|
|
278
|
+
rowPending = false;
|
|
279
|
+
p++;
|
|
280
|
+
break;
|
|
281
|
+
case MARKER.tableEnd:
|
|
282
|
+
if (declaredRows === undefined || tableClosed || rowPending || declaredRows !== lines.length)
|
|
283
|
+
fail('misplaced table end');
|
|
284
|
+
tableClosed = true;
|
|
285
|
+
p++;
|
|
286
|
+
break;
|
|
287
|
+
case MARKER.containerEnd:
|
|
288
|
+
if (!tableClosed)
|
|
289
|
+
fail('container ended before table');
|
|
290
|
+
if (segmentLength !== 0 && segmentLength !== p)
|
|
291
|
+
fail('segment length mismatch');
|
|
292
|
+
ended = true;
|
|
293
|
+
p++;
|
|
294
|
+
break;
|
|
295
|
+
default:
|
|
296
|
+
return fail(`unsupported container marker ${marker} at ${p}`);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
if (!descriptor || !ended)
|
|
300
|
+
fail('missing TLINE descriptor or end marker');
|
|
301
|
+
if (declaredRows !== undefined && declaredRows !== lines.length)
|
|
302
|
+
fail('declared line count mismatch');
|
|
303
|
+
return lines;
|
|
304
|
+
}
|
|
305
|
+
/** Decode the verified stored-TLINE profile; returned lines retain ITF formatting codes. */
|
|
306
|
+
export async function decodeStxl(data, limits = DEFAULT_LIMITS) {
|
|
307
|
+
const { version, codePage, compressed, compressedTrailingBytes, payload } = await unpackCluster(data, limits);
|
|
308
|
+
const lines = parseTlinePayload(payload, codePage, limits);
|
|
309
|
+
return {
|
|
310
|
+
version,
|
|
311
|
+
codePage,
|
|
312
|
+
compressed,
|
|
313
|
+
compressedTrailingBytes,
|
|
314
|
+
wellFormedUnicode: lines.every((line) => !/\p{Surrogate}/u.test(line.format) && !/\p{Surrogate}/u.test(line.text)),
|
|
315
|
+
lines,
|
|
316
|
+
outputBytes: payload.length,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=decoder.js.map
|