Build Information
Successful build of SwiftSheets, reference 1.1.1 (1148d9), with Swift 6.4 for Wasm on 29 Sep 2026 07:46:38 UTC.
Swift 6 data race errors: 0
Build Command
bash -c docker run --pull=always --rm -v "checkouts-54344844-2":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:wasm-6.4-latest swift build --swift-sdk swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_wasm 2>&1Build Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/nanbu/SwiftSheets.git
Reference: 1.1.1
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
From https://github.com/nanbu/SwiftSheets
* tag 1.1.1 -> FETCH_HEAD
HEAD is now at 1148d95 fix: preserve table filters and local names in 1.1.1
Cloned https://github.com/nanbu/SwiftSheets.git
Revision (git rev-parse @):
1148d95ab09be268bff1d382be467cf14d1ac395
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/nanbu/SwiftSheets.git at 1.1.1
========================================
Build
========================================
Selected platform: wasm
Swift version: 6.4
Building package at path: $PWD
https://github.com/nanbu/SwiftSheets.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-54344844-2":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:wasm-6.4-latest swift build --swift-sdk swift-6.4.x-DEVELOPMENT-SNAPSHOT-2026-09-04-a_wasm 2>&1
wasm-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:4328fdb43c680d205c1d6761b1e3267aa38277eefdda9ddfb17b6a0f1a77857a
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:wasm-6.4-latest
Building for debugging...
[Computing dependencies]
[Pre-planning 1 / 530]
[Planning deferred tasks]
[73 / 140] SwiftSheets_SheetNumbers
[76 / 140] SheetCore
[85 / 149] SheetCore
/host/spi-builder-workspace/Sources/SheetCore/Container/ZipWriter.swift:26:29: [1;33mwarning: [1;39mresult of call to 'createFile(atPath:contents:attributes:)' is unused[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m24 |[0;0m private(set) var count = 0
[0;36m25 |[0;0m init(url: URL) throws {
[0;36m26 |[0;0m FileManager.default.createFile(atPath: url.path, contents: nil)
[0;36m|[0;0m `- [1;33mwarning: [1;39mresult of call to 'createFile(atPath:contents:attributes:)' is unused[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m27 |[0;0m guard let h = FileHandle(forWritingAtPath: url.path) else {
[0;36m28 |[0;0m throw SheetError.ioFailure(detail: "cannot open \(url.lastPathComponent) for writing")
[#NoUsage]: <https://docs.swift.org/compiler/documentation/diagnostics/no-usage>
[93 / 152] SheetODS
/host/spi-builder-workspace/Sources/SheetCore/Codec/PreservationStore.swift:132:42: [1;33mwarning: [1;39m'where' only applies to the second pattern match in this 'case'[0;0m
[0;36m130 |[0;0m case _ where path.hasPrefix("xl/theme/"): return themeRead ? nil : .theme
[0;36m131 |[0;0m case _ where path.hasPrefix("xl/slicers/") || path.hasPrefix("xl/slicerCaches/"): return .slicer
[0;36m132 |[0;0m case [4;39m"xl/connections.xml"[0;0m, [4;39m_[0;0m where [4;39mpath.hasPrefix("xl/queryTables/") || path.hasPrefix("xl/model/")[0;0m: return .dataConnection
[0;36m|[0;0m | | `- [1;33mwarning: [1;39m'where' only applies to the second pattern match in this 'case'[0;0m
[0;36m|[0;0m | `- [1;39mnote: [1;39mdisambiguate by adding a line break between them if this is desired[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39mduplicate the 'where' on both patterns to check both patterns[0;0m
[0;36m133 |[0;0m case _ where path.hasPrefix("xl/threadedComments/") || path.hasPrefix("xl/persons/"): return nil // the threads are the model's (B.80)
[0;36m134 |[0;0m case _ where path.hasPrefix("xl/comments"): return nil // the notes are the model's
/host/spi-builder-workspace/Sources/SheetCore/Utils/XMLScanner.swift:58:13: [1;33mwarning: [1;39mvariable 'keepFrom' was written to, but never read[0;0m
[0;36m56 |[0;0m var textHasSpecial = false // the run holds an entity or a carriage return
[0;36m57 |[0;0m /// Where the next piece has to start: the earliest byte still needed.
[0;36m58 |[0;0m var keepFrom = -1
[0;36m|[0;0m `- [1;33mwarning: [1;39mvariable 'keepFrom' was written to, but never read[0;0m
[0;36m59 |[0;0m func stopHere(_ at: Int) -> Int {
[0;36m60 |[0;0m keepFrom = at
[101 / 179] SheetNumbers
[101 / 179] SheetXLSX
[105 / 179] SheetODS
[110 / 179] SheetNumbers
[112 / 179] SheetNumbers
[117 / 180] SheetODS
[118 / 180] SheetODS-product
[120 / 180] SheetXLSX
[122 / 180] SheetXLSX
[127 / 180] SheetODS
/host/spi-builder-workspace/Sources/SheetODS/ODSStyles.swift:263:29: [1;33mwarning: [1;39mimmutable value 'raw' was never used; consider replacing with '_' or removing it[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m261 |[0;0m /// A named style as a *difference*: only what the style itself states, which is what a conditional format paints.
[0;36m262 |[0;0m func differentialStyle(named name: String?) -> DifferentialStyle? {
[0;36m263 |[0;0m guard let name, let raw = styles[name] else { return nil }
[0;36m|[0;0m `- [1;33mwarning: [1;39mimmutable value 'raw' was never used; consider replacing with '_' or removing it[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m264 |[0;0m var d = DifferentialStyle()
[0;36m265 |[0;0m var font = DifferentialFont()
[#NoUsage]: <https://docs.swift.org/compiler/documentation/diagnostics/no-usage>
[128 / 180] SheetODS
[129 / 180] SheetXLSX-product
[130 / 180] SheetNumbers
[131 / 180] SheetNumbers-product
[132 / 180] SheetNumbers-product
[135 / 180] SheetNumbers
/host/spi-builder-workspace/Sources/SheetXLSX/Reader/Parsers.swift:475:59: [1;33mwarning: [1;39m'where' only applies to the second pattern match in this 'case'[0;0m
[0;36m473 |[0;0m case "left", "right", "top", "bottom", "diagonal": side = ""
[0;36m474 |[0;0m case "border" where section == "borders" && depth == 2: borders.append(border)
[0;36m475 |[0;0m case "left", "right", "top", [4;39m"bottom"[0;0m, [4;39m"diagonal"[0;0m where [4;39msection == "dxfs"[0;0m: side = ""
[0;36m|[0;0m | | `- [1;33mwarning: [1;39m'where' only applies to the second pattern match in this 'case'[0;0m
[0;36m|[0;0m | `- [1;39mnote: [1;39mdisambiguate by adding a line break between them if this is desired[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39mduplicate the 'where' on both patterns to check both patterns[0;0m
[0;36m476 |[0;0m case "xf" where section == "cellXfs": if let xf { cellXfs.append(xf) }; xf = nil
[0;36m477 |[0;0m case "font" where section == "dxfs": dxf?.font = dxfFont; dxfFont = nil
/host/spi-builder-workspace/Sources/SheetXLSX/Reader/Parsers.swift:475:14: [1;33mwarning: [1;39mliteral value is already handled by previous pattern; consider removing it[0;0m
[0;36m471 |[0;0m case "patternFill": inPatternFill = false
[0;36m472 |[0;0m case "stop": gradientStop = nil
[0;36m473 |[0;0m case [4;39m"left"[0;0m, "right", "top", "bottom", "diagonal": side = ""
[0;36m|[0;0m `- [1;39mnote: [1;39mfirst occurrence of identical literal pattern is here[0;0m
[0;36m474 |[0;0m case "border" where section == "borders" && depth == 2: borders.append(border)
[0;36m475 |[0;0m case [4;39m"left"[0;0m, "right", "top", "bottom", "diagonal" where section == "dxfs": side = ""
[0;36m|[0;0m `- [1;33mwarning: [1;39mliteral value is already handled by previous pattern; consider removing it[0;0m
[0;36m476 |[0;0m case "xf" where section == "cellXfs": if let xf { cellXfs.append(xf) }; xf = nil
[0;36m477 |[0;0m case "font" where section == "dxfs": dxf?.font = dxfFont; dxfFont = nil
/host/spi-builder-workspace/Sources/SheetXLSX/Reader/Parsers.swift:475:22: [1;33mwarning: [1;39mliteral value is already handled by previous pattern; consider removing it[0;0m
[0;36m471 |[0;0m case "patternFill": inPatternFill = false
[0;36m472 |[0;0m case "stop": gradientStop = nil
[0;36m473 |[0;0m case "left", [4;39m"right"[0;0m, "top", "bottom", "diagonal": side = ""
[0;36m|[0;0m `- [1;39mnote: [1;39mfirst occurrence of identical literal pattern is here[0;0m
[0;36m474 |[0;0m case "border" where section == "borders" && depth == 2: borders.append(border)
[0;36m475 |[0;0m case "left", [4;39m"right"[0;0m, "top", "bottom", "diagonal" where section == "dxfs": side = ""
[0;36m|[0;0m `- [1;33mwarning: [1;39mliteral value is already handled by previous pattern; consider removing it[0;0m
[0;36m476 |[0;0m case "xf" where section == "cellXfs": if let xf { cellXfs.append(xf) }; xf = nil
[0;36m477 |[0;0m case "font" where section == "dxfs": dxf?.font = dxfFont; dxfFont = nil
/host/spi-builder-workspace/Sources/SheetXLSX/Reader/Parsers.swift:475:31: [1;33mwarning: [1;39mliteral value is already handled by previous pattern; consider removing it[0;0m
[0;36m471 |[0;0m case "patternFill": inPatternFill = false
[0;36m472 |[0;0m case "stop": gradientStop = nil
[0;36m473 |[0;0m case "left", "right", [4;39m"top"[0;0m, "bottom", "diagonal": side = ""
[0;36m|[0;0m `- [1;39mnote: [1;39mfirst occurrence of identical literal pattern is here[0;0m
[0;36m474 |[0;0m case "border" where section == "borders" && depth == 2: borders.append(border)
[0;36m475 |[0;0m case "left", "right", [4;39m"top"[0;0m, "bottom", "diagonal" where section == "dxfs": side = ""
[0;36m|[0;0m `- [1;33mwarning: [1;39mliteral value is already handled by previous pattern; consider removing it[0;0m
[0;36m476 |[0;0m case "xf" where section == "cellXfs": if let xf { cellXfs.append(xf) }; xf = nil
[0;36m477 |[0;0m case "font" where section == "dxfs": dxf?.font = dxfFont; dxfFont = nil
/host/spi-builder-workspace/Sources/SheetXLSX/Reader/Parsers.swift:475:38: [1;33mwarning: [1;39mliteral value is already handled by previous pattern; consider removing it[0;0m
[0;36m471 |[0;0m case "patternFill": inPatternFill = false
[0;36m472 |[0;0m case "stop": gradientStop = nil
[0;36m473 |[0;0m case "left", "right", "top", [4;39m"bottom"[0;0m, "diagonal": side = ""
[0;36m|[0;0m `- [1;39mnote: [1;39mfirst occurrence of identical literal pattern is here[0;0m
[0;36m474 |[0;0m case "border" where section == "borders" && depth == 2: borders.append(border)
[0;36m475 |[0;0m case "left", "right", "top", [4;39m"bottom"[0;0m, "diagonal" where section == "dxfs": side = ""
[0;36m|[0;0m `- [1;33mwarning: [1;39mliteral value is already handled by previous pattern; consider removing it[0;0m
[0;36m476 |[0;0m case "xf" where section == "cellXfs": if let xf { cellXfs.append(xf) }; xf = nil
[0;36m477 |[0;0m case "font" where section == "dxfs": dxf?.font = dxfFont; dxfFont = nil
[136 / 180] SheetCore
/host/spi-builder-workspace/Sources/SheetXLSX/Writer/WorkbookWriter.swift:81:13: [1;33mwarning: [1;39mvariable 'archive' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\]
[0;36m79 |[0;0m guard !wb.sheets.isEmpty else { throw SheetError.invalidWorkbook("a workbook needs at least one sheet") }
[0;36m80 |[0;0m let sink = WarningSink()
[0;36m81 |[0;0m var archive = ZipWriter()
[0;36m|[0;0m `- [1;33mwarning: [1;39mvariable 'archive' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\]
[0;36m82 |[0;0m let preserved = wb.preserved
[0;36m83 |[0;0m let sameFamily = preserved.sourceFormat == .xlsx || preserved.sourceFormat == .xlsm
[#VariableNeverMutated]: <https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated>
[140 / 182]
[143 / 186] SheetCore
[146 / 187] SheetCSV
[155 / 192] SwiftSheets
[156 / 192] SwiftSheets
/host/spi-builder-workspace/Sources/SheetNumbers/NumbersDocument.swift:324:13: [1;33mwarning: [1;39mvariable 'zip' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\]
[0;36m322 |[0;0m
[0;36m323 |[0;0m func encoded() -> Data {
[0;36m324 |[0;0m var zip = ZipWriter()
[0;36m|[0;0m `- [1;33mwarning: [1;39mvariable 'zip' was never mutated; consider changing to 'let' constant[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated\VariableNeverMutated]8;;\]
[0;36m325 |[0;0m for name in order {
[0;36m326 |[0;0m switch files[name] {
[#VariableNeverMutated]: <https://docs.swift.org/compiler/documentation/diagnostics/variable-never-mutated>
[162 / 192] SwiftSheets
[164 / 199] SheetXLSX
/host/spi-builder-workspace/Sources/SheetCSV/CSVStreaming.swift:259:29: [1;33mwarning: [1;39mresult of call to 'createFile(atPath:contents:attributes:)' is unused[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m257 |[0;0m
[0;36m258 |[0;0m package init(url: URL, options: CSVWriteOptions = CSVWriteOptions()) throws {
[0;36m259 |[0;0m FileManager.default.createFile(atPath: url.path, contents: nil)
[0;36m|[0;0m `- [1;33mwarning: [1;39mresult of call to 'createFile(atPath:contents:attributes:)' is unused[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/no-usage\NoUsage]8;;\]
[0;36m260 |[0;0m guard let h = FileHandle(forWritingAtPath: url.path) else { throw SheetError.ioFailure(detail: "cannot open \(url.lastPathComponent) for writing") }
[0;36m261 |[0;0m handle = h
[#NoUsage]: <https://docs.swift.org/compiler/documentation/diagnostics/no-usage>
[167 / 200] SheetODS
[170 / 200] SwiftSheets
[177 / 200] SheetDecrypt
/host/spi-builder-workspace/Sources/SheetNumbers/NumbersChart.swift:219:38: [1;33mwarning: [1;39mleft side of nil coalescing operator '??' has non-optional type 'String', so the right side is never used[0;0m
[0;36m217 |[0;0m let categoryTexts = categoryCells.map { ref -> String in
[0;36m218 |[0;0m guard let v = categories?.table.cells[ref]?.value else { return "" }
[0;36m219 |[0;0m return [4;39mv.stringValue[0;0m ?? String(describing: v)
[0;36m|[0;0m `- [1;33mwarning: [1;39mleft side of nil coalescing operator '??' has non-optional type 'String', so the right side is never used[0;0m
[0;36m220 |[0;0m }
[0;36m221 |[0;0m
[179 / 201] SheetEncrypt
[182 / 207] SheetEncrypt
[184 / 208] SheetEncrypt
[185 / 208] SheetDecrypt
[188 / 208] SheetEncrypt
[195 / 208] SheetXLSX-product
[197 / 208] SheetCSV-product
[197 / 208] SheetEncrypt
[199 / 210] SheetDecrypt
[201 / 210] SheetNumbers
[211 / 211] SwiftSheets-product
Build complete! (27.59 secs)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "SwiftSheets",
"name" : "SwiftSheets",
"path" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "14.0"
},
{
"name" : "ios",
"version" : "17.0"
}
],
"products" : [
{
"name" : "SheetCore",
"targets" : [
"SheetCore"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "SheetXLSX",
"targets" : [
"SheetXLSX"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "SheetCSV",
"targets" : [
"SheetCSV"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "SheetODS",
"targets" : [
"SheetODS"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "SheetNumbers",
"targets" : [
"SheetNumbers"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "SwiftSheets",
"targets" : [
"SwiftSheets"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "SheetDecrypt",
"targets" : [
"SheetDecrypt"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "SheetEncrypt",
"targets" : [
"SheetEncrypt"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "SwiftSheetsTests",
"module_type" : "SwiftTarget",
"name" : "SwiftSheetsTests",
"path" : "Tests/SwiftSheetsTests",
"resources" : [
{
"path" : "/host/spi-builder-workspace/Tests/SwiftSheetsTests/Fixtures",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"APIContractTests.swift",
"AutofitTests.swift",
"CSVCodecTests.swift",
"CellLimitTests.swift",
"ChartSheetTests.swift",
"ChartTests.swift",
"CivilDateSerialTests.swift",
"CodecSetTests.swift",
"CommentTests.swift",
"CompressionTests.swift",
"ConditionalExtensionTests.swift",
"ConditionalFormattingTests.swift",
"CoordinateStringTests.swift",
"CrossFormatConversionTests.swift",
"CryptoTests.swift",
"DataValidationChoicesTests.swift",
"DetectionTests.swift",
"DrawingReadTests.swift",
"EncryptedInputTests.swift",
"ErrorClassificationTests.swift",
"ExcelGroundTruthTests.swift",
"ExternalLinkTests.swift",
"FacadeTests.swift",
"FormatSupportTests.swift",
"FormulaCellReadingTests.swift",
"FormulaTests.swift",
"FuriganaTests.swift",
"FuzzTests.swift",
"HotPathEquivalenceTests.swift",
"ImageTests.swift",
"InspectionTests.swift",
"KitchenSinkRepairTests.swift",
"MalformedInputTests.swift",
"ModelTests.swift",
"NamedStyleTests.swift",
"NumberFormatVocabularyTests.swift",
"NumbersArrayFormulaTests.swift",
"NumbersCanvasTests.swift",
"NumbersCategoryFilterTests.swift",
"NumbersChartTests.swift",
"NumbersConditionalTests.swift",
"NumbersControlTests.swift",
"NumbersCrossingTests.swift",
"NumbersFormTests.swift",
"NumbersIWATests.swift",
"NumbersLayoutTests.swift",
"NumbersPivotShapeTests.swift",
"NumbersPopUpMenuTests.swift",
"NumbersPrintTests.swift",
"NumbersProbeTests.swift",
"NumbersReaderTests.swift",
"NumbersRichTextTests.swift",
"NumbersSilentLossTests.swift",
"NumbersStockTests.swift",
"NumbersValuelessCellTests.swift",
"NumbersWriterTests.swift",
"ODFOnlyFeatureTests.swift",
"ODSCodecTests.swift",
"ODSDrawingTests.swift",
"ODSImageTests.swift",
"OpenpyxlInteropTests.swift",
"ParallelReadTests.swift",
"Parity/CellParityTests.swift",
"Parity/OpenpyxlLetters.swift",
"Parity/ReaderParityTests.swift",
"Parity/StylesParityTests.swift",
"Parity/UtilsParityTests.swift",
"Parity/WorkbookParityTests.swift",
"Parity/WorksheetParityTests.swift",
"Parity/WorksheetPartsParityTests.swift",
"Parity/WriterParityTests.swift",
"PivotSpikeTests.swift",
"PivotTableTests.swift",
"PreservationAPITests.swift",
"PreservationInventoryTests.swift",
"PreservationTests.swift",
"PropertyTests.swift",
"ProtectionTests.swift",
"ReaderTests.swift",
"ReservedEnumTests.swift",
"RunHyperlinkTests.swift",
"SchemaClosedValuesTests.swift",
"ShapeTests.swift",
"SharedSpecGapsTests.swift",
"SheetViewTests.swift",
"SnappyFuzzTests.swift",
"SparklineTests.swift",
"StreamingAPITests.swift",
"StreamingFileFormatTests.swift",
"StreamingFormatsTests.swift",
"StreamingSaveTests.swift",
"StreamingTests.swift",
"StreamingWriteFormatsTests.swift",
"StructuredTableTests.swift",
"SurfaceReviewTests.swift",
"TextSpillTests.swift",
"ThemeTests.swift",
"ThreadedCommentTests.swift",
"VerificationSamplesTests.swift",
"WorksheetPartsTests.swift",
"WriterTests.swift",
"XMLScannerTests.swift",
"ZeroCoordinateReadTests.swift",
"ZipTests.swift"
],
"target_dependencies" : [
"SwiftSheets"
],
"type" : "test"
},
{
"c99name" : "SwiftSheets",
"module_type" : "SwiftTarget",
"name" : "SwiftSheets",
"path" : "Sources/SwiftSheets",
"product_memberships" : [
"SwiftSheets",
"SheetDecrypt",
"SheetEncrypt"
],
"sources" : [
"Facade.swift",
"Streaming.swift",
"StreamingWriter.swift"
],
"target_dependencies" : [
"SheetCore",
"SheetXLSX",
"SheetCSV",
"SheetODS",
"SheetNumbers"
],
"type" : "library"
},
{
"c99name" : "SheetXLSX",
"module_type" : "SwiftTarget",
"name" : "SheetXLSX",
"path" : "Sources/SheetXLSX",
"product_memberships" : [
"SheetXLSX",
"SwiftSheets",
"SheetDecrypt",
"SheetEncrypt"
],
"sources" : [
"ChartParts.swift",
"Codec+XLSX.swift",
"CommentParts.swift",
"DrawingParts.swift",
"ExtensionList.swift",
"PivotParts.swift",
"Reader/DrawingReader.swift",
"Reader/Parsers.swift",
"Reader/WorkbookReader.swift",
"Reader/XLSXInspector.swift",
"SparklineParts.swift",
"Streaming.swift",
"ThreadedCommentParts.swift",
"Writer/StylesWriter.swift",
"Writer/Theme.swift",
"Writer/WorkbookWriter.swift",
"X14ConditionalParts.swift",
"XLSXCodec.swift"
],
"target_dependencies" : [
"SheetCore"
],
"type" : "library"
},
{
"c99name" : "SheetODS",
"module_type" : "SwiftTarget",
"name" : "SheetODS",
"path" : "Sources/SheetODS",
"product_memberships" : [
"SheetODS",
"SwiftSheets",
"SheetDecrypt",
"SheetEncrypt"
],
"sources" : [
"Codec+ODS.swift",
"ODSCellText.swift",
"ODSCodec.swift",
"ODSConditionalFormat.swift",
"ODSDataStyle.swift",
"ODSDrawing.swift",
"ODSFeatures.swift",
"ODSInspector.swift",
"ODSLength.swift",
"ODSPageStyles.swift",
"ODSPicture.swift",
"ODSPivot.swift",
"ODSReader.swift",
"ODSStreaming.swift",
"ODSStreamingWriter.swift",
"ODSStyles.swift",
"ODSValidation.swift",
"ODSWriter.swift"
],
"target_dependencies" : [
"SheetCore"
],
"type" : "library"
},
{
"c99name" : "SheetNumbers",
"module_type" : "SwiftTarget",
"name" : "SheetNumbers",
"path" : "Sources/SheetNumbers",
"product_memberships" : [
"SheetNumbers",
"SwiftSheets",
"SheetDecrypt",
"SheetEncrypt"
],
"resources" : [
{
"path" : "/host/spi-builder-workspace/Sources/SheetNumbers/Resources/constants.json",
"rule" : {
"process" : {
}
}
},
{
"path" : "/host/spi-builder-workspace/Sources/SheetNumbers/Resources/empty.numbers",
"rule" : {
"process" : {
}
}
},
{
"path" : "/host/spi-builder-workspace/Sources/SheetNumbers/Resources/fonts.json",
"rule" : {
"process" : {
}
}
},
{
"path" : "/host/spi-builder-workspace/Sources/SheetNumbers/Resources/functions.json",
"rule" : {
"process" : {
}
}
},
{
"path" : "/host/spi-builder-workspace/Sources/SheetNumbers/Resources/registry.json",
"rule" : {
"process" : {
}
}
},
{
"path" : "/host/spi-builder-workspace/Sources/SheetNumbers/Resources/schema.json",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"CellStorage.swift",
"Codec+Numbers.swift",
"IWA.swift",
"NumbersCanvas.swift",
"NumbersCells.swift",
"NumbersChart.swift",
"NumbersCodec.swift",
"NumbersConditional.swift",
"NumbersDocument.swift",
"NumbersFormula.swift",
"NumbersInspector.swift",
"NumbersObjectStore.swift",
"NumbersPivot.swift",
"NumbersPrint.swift",
"NumbersReader.swift",
"NumbersResources.swift",
"NumbersRichText.swift",
"NumbersStreaming.swift",
"NumbersStreamingWriter.swift",
"NumbersStyles.swift",
"NumbersUUID.swift",
"NumbersWriter.swift",
"Protobuf.swift",
"Snappy.swift"
],
"target_dependencies" : [
"SheetCore"
],
"type" : "library"
},
{
"c99name" : "SheetEncryptTests",
"module_type" : "SwiftTarget",
"name" : "SheetEncryptTests",
"path" : "Tests/SheetEncryptTests",
"sources" : [
"AESTests.swift",
"EncryptionTests.swift"
],
"target_dependencies" : [
"SheetEncrypt"
],
"type" : "test"
},
{
"c99name" : "SheetEncrypt",
"module_type" : "SwiftTarget",
"name" : "SheetEncrypt",
"path" : "Sources/SheetEncrypt",
"product_memberships" : [
"SheetEncrypt"
],
"sources" : [
"AES+Encrypt.swift",
"CompoundFile+Write.swift",
"Encrypt.swift",
"ODSEncryption+Encrypt.swift",
"OOXMLEncryption+Encrypt.swift"
],
"target_dependencies" : [
"SheetDecrypt"
],
"type" : "library"
},
{
"c99name" : "SheetDecryptTests",
"module_type" : "SwiftTarget",
"name" : "SheetDecryptTests",
"path" : "Tests/SheetDecryptTests",
"sources" : [
"DecryptTests.swift"
],
"target_dependencies" : [
"SheetDecrypt"
],
"type" : "test"
},
{
"c99name" : "SheetDecrypt",
"module_type" : "SwiftTarget",
"name" : "SheetDecrypt",
"path" : "Sources/SheetDecrypt",
"product_memberships" : [
"SheetDecrypt",
"SheetEncrypt"
],
"sources" : [
"AES.swift",
"CompoundFile.swift",
"Decrypt.swift",
"ODSEncryption.swift",
"OOXMLEncryption.swift"
],
"target_dependencies" : [
"SwiftSheets"
],
"type" : "library"
},
{
"c99name" : "SheetCore",
"module_type" : "SwiftTarget",
"name" : "SheetCore",
"path" : "Sources/SheetCore",
"product_memberships" : [
"SheetCore",
"SheetXLSX",
"SheetCSV",
"SheetODS",
"SheetNumbers",
"SwiftSheets",
"SheetDecrypt",
"SheetEncrypt"
],
"sources" : [
"Codec/CSVOptions.swift",
"Codec/CellBudget.swift",
"Codec/Codec.swift",
"Codec/CodecSet.swift",
"Codec/EncryptedInput.swift",
"Codec/Inspection.swift",
"Codec/PreservationStore.swift",
"Codec/PreservationSummary.swift",
"Codec/SheetError.swift",
"Codec/SheetFormat.swift",
"Codec/StreamingReader.swift",
"Codec/StreamingRows.swift",
"Codec/StreamingWriter.swift",
"Container/ByteSource.swift",
"Container/CRC32.swift",
"Container/Deflate.swift",
"Container/Zip.swift",
"Container/ZipInspection.swift",
"Container/ZipWriter.swift",
"Crypto/Primitives.swift",
"Formula/FormulaExpr.swift",
"Formula/FormulaFunctionNames.swift",
"Formula/FormulaParser.swift",
"Model/Autofit.swift",
"Model/Cell.swift",
"Model/CellRef.swift",
"Model/CellValue.swift",
"Model/Chart.swift",
"Model/ConditionalFormatting.swift",
"Model/CustomProperties.swift",
"Model/DataValidation.swift",
"Model/ExternalLink.swift",
"Model/ODFFeatures.swift",
"Model/PivotTable.swift",
"Model/Protection.swift",
"Model/RangeView.swift",
"Model/Shape.swift",
"Model/Sheet.swift",
"Model/SheetContentState.swift",
"Model/SheetImage.swift",
"Model/Sparkline.swift",
"Model/StructuredTable.swift",
"Model/Table.swift",
"Model/Workbook.swift",
"Styles/DifferentialStyle.swift",
"Styles/Fill.swift",
"Styles/Styles.swift",
"Styles/Theme.swift",
"SwiftSheetsInfo.swift",
"Utils/AtomicFileTarget.swift",
"Utils/CivilDate.swift",
"Utils/SHA512.swift",
"Utils/TextSpill.swift",
"Utils/Units.swift",
"Utils/XML.swift",
"Utils/XMLScanner.swift"
],
"target_dependencies" : [
"CZlib"
],
"type" : "library"
},
{
"c99name" : "SheetCSV",
"module_type" : "SwiftTarget",
"name" : "SheetCSV",
"path" : "Sources/SheetCSV",
"product_memberships" : [
"SheetCSV",
"SwiftSheets",
"SheetDecrypt",
"SheetEncrypt"
],
"sources" : [
"CSVCodec.swift",
"CSVStreaming.swift",
"Codec+CSV.swift"
],
"target_dependencies" : [
"SheetCore"
],
"type" : "library"
},
{
"c99name" : "PartialLinkTests",
"module_type" : "SwiftTarget",
"name" : "PartialLinkTests",
"path" : "Tests/PartialLinkTests",
"sources" : [
"PartialLinkTests.swift"
],
"target_dependencies" : [
"SheetCore",
"SheetXLSX",
"SheetODS",
"SheetNumbers"
],
"type" : "test"
},
{
"c99name" : "CZlib",
"module_type" : "SystemLibraryTarget",
"name" : "CZlib",
"path" : "Sources/CZlib",
"product_memberships" : [
"SheetCore",
"SheetXLSX",
"SheetCSV",
"SheetODS",
"SheetNumbers",
"SwiftSheets",
"SheetDecrypt",
"SheetEncrypt"
],
"sources" : [
],
"type" : "system-target"
}
],
"tools_version" : "6.2"
}
wasm-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:4328fdb43c680d205c1d6761b1e3267aa38277eefdda9ddfb17b6a0f1a77857a
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:wasm-6.4-latest
Done.