Skip to content

SK-2449 ga ready render zip file in js sdk - #734

Merged
skyflow-bharti merged 10 commits into
release/26.9.22from
SK-2449-ga-ready-render-zip-file-in-js-sdk
Sep 22, 2026
Merged

skyflow-bharti merged 10 commits into
release/26.9.22from
SK-2449-ga-ready-render-zip-file-in-js-sdk

Conversation

@skyflow-bharti

Copy link
Copy Markdown
Collaborator

Added zip render file support

* SK-2449 zip render support

* SK-2449 add preserve file name fix

* SK-2449 update lock file for jszip

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Zip rendering currently detects archives via a brittle URL query-param mime parse (and uses a hardcoded loading string), which can cause valid zip files to be rendered as plain files and creates inconsistent user-visible messaging.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 2 Medium severity

Open (2)
What changed in this PR

Adds GA support for rendering .zip files in the Skyflow JS SDK’s composable reveal file elements by unzipping archives client-side and presenting a list-detail viewer with per-file preview and optional download.

Changes:

  • Implement zip rendering in the reveal iframe (lazy extraction, list-detail UI, dangerous-type blocking, downloadCurrentFile support).
  • Add/propagate renderFile(options) (IRenderOptions) plus new enums ZipLabelMode and ZipRenderLayout through public exports.
  • Extend error/log messaging, docs, samples, and test coverage for zip render + file-name validation behavior.
File Description
packages/​skyflow-js/​tests/​utils/​validators.test.js Adds tests for validateRenderOptions and isDangerousFileType.
packages/​skyflow-js/​tests/​skyflow.test.js Verifies SDK surface exports zip enums.
packages/​skyflow-js/​tests/​libs/​element-options.test.js Tests defaulting/behavior for preserveFileName on multi-file input options.
packages/​skyflow-js/​tests/​core/​internal/​reveal/​reveal-frame-zip.test.js New comprehensive tests for zip rendering, preview, styling, download, and race conditions.
packages/​skyflow-js/​tests/​core/​internal/​iframe-form/​iframe-form.test.js Adds tests for invalid file-name handling across file element types.
packages/​skyflow-js/​tests/​core/​internal/​frame-element-init.test.js Updates expectations for “no files selected” error shape.
packages/​skyflow-js/​tests/​core/​internal/​frame-element-init.additional.test.js Adds coverage for filename validation skipping when preserveFileName=false and related upload behavior.
packages/​skyflow-js/​tests/​core/​external/​reveal/​reveal-composable-internal.test.js Tests forwarding render options to iframe and new download event forwarding.
packages/​skyflow-js/​tests/​core/​external/​reveal/​reveal-composable-element.test.js Tests renderFile(options) payload and downloadCurrentFile() emission.
packages/​skyflow-js/​tests/​api-utils/​reveal.test.js Ensures unZippedFilesMetadata is included in render success formatting.
packages/​skyflow-js/​src/​utils/​validators/​index.ts Adds render options validator and dangerous file-type detection helper.
packages/​skyflow-js/​src/​skyflow.ts Exposes zip enums on the Skyflow class.
packages/​skyflow-js/​src/​internal/​reveal/​reveal-frame.ts Implements zip download/unzip/preview UI, option sanitization, and download handler.
packages/​skyflow-js/​src/​internal/​frame-element-init.ts Adjusts file upload errors and filename validation based on preserveFileName.
packages/​skyflow-js/​src/​index-node.ts Re-exports zip enums and render options type from node entry.
packages/​skyflow-js/​src/​external/​reveal/​reveal-container.ts Extends reveal element input types with zip layout style hooks.
packages/​skyflow-js/​src/​external/​reveal/​composable-reveal-internal.ts Validates/forwards render options and adds iframe download forwarding.
packages/​skyflow-js/​src/​external/​reveal/​composable-reveal-element.ts Adds renderFile(options) and downloadCurrentFile() public API.
packages/​skyflow-js/​src/​api-utils/​reveal.ts Includes unZippedFilesMetadata in formatted render responses.
packages/​skyflow-js/​samples/​using-script-tag/​zip-file-render.html New sample demonstrating zip render + downloadCurrentFile.
packages/​skyflow-js/​samples/​README.md Documents how to run the zip render sample.
packages/​skyflow-js/​README.md Adds public documentation for zip render options, styles, and response shape.
packages/​skyflow-js/​package.json Adds jszip dependency.
package-lock.json Updates lockfile for jszip and transitive dependencies.
core/​utils/​logs.ts Adds log/error messages for zip rendering and render option validation.
core/​utils/​constants.ts Adds new SKYFLOW error codes for zip render and invalid render options.
core/​types/​index.ts Adds IRenderOptions, zip enums, and unZippedFilesMetadata types.
core/​libs/​element-options.ts Fixes switch-case logic and defaults preserveFileName for file elements.
core/​internal/​iframe-form/​index.ts Fixes multi-file filename validation so earlier failures aren’t overwritten.
core/​constants.ts Adds zip viewer constants, styles, and new iframe event constant.
CHANGELOG.md Documents zip render feature additions under Unreleased.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread packages/skyflow-js/src/internal/reveal/reveal-frame.ts Outdated
Comment thread packages/skyflow-js/src/utils/validators/index.ts Outdated
@skyflow-bharti
skyflow-bharti merged commit a3eaf0c into release/26.9.22 Sep 22, 2026
6 checks passed
skyflow-bharti added a commit that referenced this pull request Sep 22, 2026
* SK-2449 ga ready render zip file in js sdk (#734)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants