Socket
Socket
Sign inDemoInstall

@jscad/3mf-serializer

Package Overview
Dependencies
Maintainers
3
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@jscad/3mf-serializer - npm Package Compare versions

Comparing version 2.1.9 to 3.0.0-alpha.0

dist/jscad-3mf-serializer.es.js

43

CHANGELOG.md

@@ -6,10 +6,16 @@ # Change Log

## [2.1.9](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/3mf-serializer@2.1.8...@jscad/3mf-serializer@2.1.9) (2023-06-27)
# [3.0.0-alpha.0](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/3mf-serializer@2.1.6...@jscad/3mf-serializer@3.0.0-alpha.0) (2023-10-09)
**Note:** Version bump only for package @jscad/3mf-serializer
### Bug Fixes
* **io:** fix io after V3 refactoring ([7a12bbd](https://github.com/jscad/OpenJSCAD.org/commit/7a12bbdb7b4b3df792a4c5b3c8b30a6a985a48f0))
### Features
* **modeling:** reworked exports to expose a flattened API ([8235238](https://github.com/jscad/OpenJSCAD.org/commit/8235238ad63d063f1e501478cae1208deb130a9c))
## [2.1.9](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/3mf-serializer@2.1.8...@jscad/3mf-serializer@2.1.9) (2023-06-27)
**Note:** Version bump only for package @jscad/3mf-serializer
## [2.1.8](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/3mf-serializer@2.1.7...@jscad/3mf-serializer@2.1.8) (2023-04-30)

@@ -19,6 +25,2 @@

## [2.1.7](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/3mf-serializer@2.1.6...@jscad/3mf-serializer@2.1.7) (2022-11-26)

@@ -28,6 +30,2 @@

## [2.1.6](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/3mf-serializer@2.1.5...@jscad/3mf-serializer@2.1.6) (2022-08-21)

@@ -37,6 +35,2 @@

## [2.1.5](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/3mf-serializer@2.1.4...@jscad/3mf-serializer@2.1.5) (2022-07-17)

@@ -46,6 +40,2 @@

## [2.1.4](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/3mf-serializer@2.1.3...@jscad/3mf-serializer@2.1.4) (2022-06-12)

@@ -55,6 +45,2 @@

## [2.1.3](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/3mf-serializer@2.1.2...@jscad/3mf-serializer@2.1.3) (2022-05-15)

@@ -64,6 +50,2 @@

## [2.1.2](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/3mf-serializer@2.1.1...@jscad/3mf-serializer@2.1.2) (2022-04-24)

@@ -73,6 +55,2 @@

## [2.1.1](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/3mf-serializer@2.1.0...@jscad/3mf-serializer@2.1.1) (2022-04-03)

@@ -82,11 +60,6 @@

# 2.1.0 (2022-04-03)
### Features
* **3mf-serializer:** new serializer from JSCAD geometry to 3MF packages ([6b51aed](https://github.com/jscad/OpenJSCAD.org/commit/6b51aed63ee40674822a04ced773564552689763))
{
"name": "@jscad/3mf-serializer",
"version": "2.1.9",
"version": "3.0.0-alpha.0",
"description": "3MF serializer for JSCAD project",
"homepage": "https://openjscad.xyz/",
"repository": "https://github.com/jscad/OpenJSCAD.org",
"type": "module",
"main": "src/index.js",
"unpkg": "dist/jscad-3mf-serializer.min.js",
"module": "dist/jscad-3mf-serializer.es.js",
"scripts": {
"coverage": "nyc --reporter=html --reporter=text npm test",
"test": "ava --concurrency 3 --verbose --timeout 40000 './tests/*.test.js'"
"build": "rollup --config",
"coverage": "c8 --reporter=html --reporter=text pnpm test",
"test": "ava --concurrency 3 --verbose --timeout 40000 './tests/*.test.js'",
"version": "pnpm run build && git add dist"
},

@@ -15,3 +20,3 @@ "contributors": [

"name": "z3dev",
"url": "http://www.z3d.jp"
"url": "https://github.com/z3dev"
}

@@ -31,12 +36,18 @@ ],

"dependencies": {
"@jscad/array-utils": "2.1.4",
"@jscad/modeling": "2.12.0",
"fflate": "0.7.3",
"onml": "1.2.0"
"@jscad/array-utils": "3.0.0-alpha.0",
"@jscad/io-utils": "^3.0.0-alpha.0",
"@jscad/modeling": "3.0.0-alpha.0",
"fflate": "^0.7.3",
"onml": "^1.2.0"
},
"devDependencies": {
"ava": "3.15.0",
"nyc": "15.1.0"
"@rollup/plugin-commonjs": "^23.0.4",
"@rollup/plugin-node-resolve": "^15.0.1",
"@rollup/plugin-terser": "^0.4.3",
"ava": "^4.3.3",
"c8": "^8.0.0",
"rollup": "^2.79.1",
"rollup-plugin-banner": "^0.2.1"
},
"gitHead": "e269f212db5a00cda740d2f7ad3e5206d1eb839f"
"gitHead": "3656d36ed9cd738ab884e86aae5a2ce08d52adf7"
}

@@ -53,3 +53,5 @@ ## @jscad/3mf-serializer

Copyright (c) JSCAD Organization
[The MIT License (MIT)](./LICENSE)
(unless specified otherwise)

@@ -1,19 +0,1 @@

/*
JSCAD Object to 3MF (XML) Format Serialization
## License
Copyright (c) 2022 JSCAD Organization https://github.com/jscad
All code released under MIT license
Notes:
1) geom2 conversion to:
none
2) geom3 conversion to:
mesh
3) path2 conversion to:
none
*/
/**

@@ -33,14 +15,10 @@ * Serializer of JSCAD geometries to 3D manufacturing format (XML)

import { zipSync, strToU8 } from 'fflate'
const zipSync = require('fflate').zipSync
const strToU8 = require('fflate').strToU8
import { stringify } from '@jscad/io-utils'
const stringify = require('onml/lib/stringify')
import { geom3, rgbToHex, generalize } from '@jscad/modeling'
import { flatten, toArray } from '@jscad/array-utils'
const { colors, geometries, modifiers } = require('@jscad/modeling')
const { flatten, toArray } = require('@jscad/array-utils')
const mimeType = 'model/3mf'
const fileExtension = '3mf'

@@ -51,3 +29,3 @@ /**

* @param {Object} [options] - options for serialization
* @param {String} [options.unit='millimeter'] - unit of design; millimeter, inch, feet, meter or micrometer
* @param {String} [options.unit='millimeter'] - unit of design; micron, millimeter, inch, feet, meter or micrometer
* @param {Boolean} [options.metadata=true] - add metadata to 3MF contents, such at CreationDate

@@ -59,3 +37,3 @@ * @param {Array} [options.defaultcolor=[0,0,0,1]] - default color for objects

* @example
* const geometry = primitives.cube()
* const geometry = cube()
* const package = serializer({unit: 'meter'}, geometry) // 3MF package, ZIP format

@@ -65,5 +43,5 @@ */

const defaults = {
unit: 'millimeter', // micron, millimeter, centimeter, inch, foot, meter
unit: 'millimeter',
metadata: true,
defaultcolor: [255/255, 160/255, 0, 1], // JSCAD Orange
defaultcolor: [255 / 255, 160 / 255, 0, 1], // JSCAD orange
compress: true

@@ -76,3 +54,3 @@ }

// convert only 3D geometries
let objects3d = objects.filter((object) => geometries.geom3.isA(object))
const objects3d = objects.filter((object) => geom3.isA(object))

@@ -83,3 +61,3 @@ if (objects3d.length === 0) throw new Error('only 3D geometries can be serialized to 3MF')

// convert to triangles
objects = toArray(modifiers.generalize({ snap: true, triangulate: true }, objects3d))
objects = toArray(generalize({ snap: true, triangulate: true }, objects3d))

@@ -110,3 +88,3 @@ // construct the contents of the 3MF 'model'

},
'_rels': {
_rels: {
'.rels': strToU8(rels)

@@ -150,5 +128,5 @@ },

objects.forEach((object, i) => {
let srgb = colors.rgbToHex(options.defaultcolor).toUpperCase()
let srgb = rgbToHex(options.defaultcolor).toUpperCase()
if (object.color) {
srgb = colors.rgbToHex(object.color).toUpperCase()
srgb = rgbToHex(object.color).toUpperCase()
}

@@ -165,4 +143,4 @@ materials.push(['base', { name: `mat${i}`, displaycolor: srgb }])

objects.forEach((object, i) => {
if (geometries.geom3.isA(object)) {
const polygons = geometries.geom3.toPolygons(object)
if (geom3.isA(object)) {
const polygons = geom3.toPolygons(object)
if (polygons.length > 0) {

@@ -212,3 +190,3 @@ options.id = i

const vertices = []
const polygons = geometries.geom3.toPolygons(object)
const polygons = geom3.toPolygons(object)
polygons.forEach((polygon) => {

@@ -234,3 +212,3 @@ for (let i = 0; i < polygon.vertices.length; i++) {

let n = 0
const polygons = geometries.geom3.toPolygons(object)
const polygons = geom3.toPolygons(object)

@@ -263,6 +241,5 @@ let contents = ['triangles', {}]

module.exports = {
serialize,
export {
mimeType,
fileExtension
serialize
}

@@ -1,10 +0,10 @@

const test = require('ava')
import test from 'ava'
const { colors, geometries, primitives } = require('@jscad/modeling')
import { colorize, cube, cuboid, geom3 } from '@jscad/modeling'
const serializer = require('../src/index.js')
import { serialize } from '../src/index.js'
test('serialize (empty)', (t) => {
const emptyShape = geometries.geom3.create()
const buffer = serializer.serialize({ metadata: false, compress: false }, emptyShape)
const emptyShape = geom3.create()
const buffer = serialize({ metadata: false, compress: false }, emptyShape)
t.deepEqual(buffer, expected1)

@@ -14,4 +14,4 @@ })

test('serialize (single)', (t) => {
const cube1 = primitives.cube()
const buffer = serializer.serialize({ metadata: false, compress: false }, cube1)
const cube1 = cube()
const buffer = serialize({ metadata: false, compress: false }, cube1)
t.deepEqual(buffer, expected2)

@@ -21,5 +21,5 @@ })

test('serialize (single, color)', (t) => {
let cube1 = primitives.cube()
cube1 = colors.colorize([1.0, 0.0, 0.5, 0.8], cube1)
const buffer = serializer.serialize({ metadata: false, compress: false, unit: 'inch' }, cube1)
let cube1 = cube()
cube1 = colorize([1.0, 0.0, 0.5, 0.8], cube1)
const buffer = serialize({ metadata: false, compress: false, unit: 'inch' }, cube1)
t.deepEqual(buffer, expected3)

@@ -29,8 +29,8 @@ })

test('serialize (multiple, color)', (t) => {
let cube1 = primitives.cuboid({ size: [4, 5, 6], center: [5, 5, 5] })
cube1 = colors.colorize([0.0, 0.0, 1.0, 0.8], cube1)
cube1.name = "CUBE A"
const cube2 = primitives.cube()
cube2.name = "CUBE B"
const buffer = serializer.serialize({ metadata: false, compress: false, defaultcolor: [1, 0, 0, 1] }, cube1, cube2)
let cube1 = cuboid({ size: [4, 5, 6], center: [5, 5, 5] })
cube1 = colorize([0.0, 0.0, 1.0, 0.8], cube1)
cube1.name = 'CUBE A'
const cube2 = cube()
cube2.name = 'CUBE B'
const buffer = serialize({ metadata: false, compress: false, defaultcolor: [1, 0, 0, 1] }, cube1, cube2)
t.deepEqual(buffer, expected4)

@@ -40,8 +40,8 @@ })

test('serialize (multiple, compress)', (t) => {
const cube1 = colors.colorize([1.0, 0.0, 0.5, 0.8], primitives.cube())
cube1.name = "CUBE A"
const cube2 = primitives.cuboid({ size: [4, 5, 6], center: [5, 5, 5] })
cube2.name = "CUBE B"
const cube1 = colorize([1.0, 0.0, 0.5, 0.8], cube())
cube1.name = 'CUBE A'
const cube2 = cuboid({ size: [4, 5, 6], center: [5, 5, 5] })
cube2.name = 'CUBE B'
const results = serializer.serialize({ compress: true }, cube1, cube2)
const results = serialize({ compress: true }, cube1, cube2)
t.is(results.length, 1)

@@ -48,0 +48,0 @@ const len = results[0].byteLength

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc