@jscad/3mf-serializer
Advanced tools
Comparing version 2.1.9 to 3.0.0-alpha.0
@@ -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 |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
234991
9
1357
57
Yes
5
7
1
1
+ Added@jscad/array-utils@3.0.0-alpha.0(transitive)
+ Added@jscad/io-utils@3.0.0-alpha.0(transitive)
+ Added@jscad/modeling@3.0.0-alpha.0(transitive)
+ Addedfflate@0.7.4(transitive)
+ Addedonml@1.3.0(transitive)
- Removed@jscad/array-utils@2.1.4(transitive)
- Removed@jscad/modeling@2.12.0(transitive)
- Removedfflate@0.7.3(transitive)
- Removedonml@1.2.0(transitive)
Updatedfflate@^0.7.3
Updatedonml@^1.2.0