@jscad/core 2.6.6 → 3.0.0-alpha.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.
Files changed (38) hide show
  1. package/CHANGELOG.md +9 -228
  2. package/README.md +1 -1
  3. package/dist/jscad-core.min.js +465 -477
  4. package/package.json +15 -16
  5. package/src/code-evaluation/index.js +4 -6
  6. package/src/code-evaluation/instanciateDesign.js +5 -9
  7. package/src/code-evaluation/rebuildGeometry.js +4 -6
  8. package/src/code-evaluation/rebuildGeometryCli.js +14 -11
  9. package/src/code-evaluation/rebuildGeometryWorker.js +3 -5
  10. package/src/code-evaluation/serializeSolids.js +2 -4
  11. package/src/code-loading/index.js +2 -4
  12. package/src/code-loading/isCommonJsModule.js +1 -3
  13. package/src/code-loading/loadDesign.js +8 -10
  14. package/src/code-loading/makeFakeFs.js +2 -3
  15. package/src/code-loading/modulifySource.js +6 -24
  16. package/src/code-loading/normalizeDesignModule.js +1 -3
  17. package/src/code-loading/requireDesignFromModule.js +4 -9
  18. package/src/code-loading/requireDesignUtilsFs.js +5 -9
  19. package/src/code-loading/transformSources.js +2 -4
  20. package/src/code-loading/validateDesignModule.js +1 -3
  21. package/src/code-loading/vtreeApi.js +1 -1
  22. package/src/code-loading/webRequire.js +36 -28
  23. package/src/code-loading/webRequire.test.js +8 -9
  24. package/src/index.js +14 -7
  25. package/src/io/index.js +2 -4
  26. package/src/io/registerExtensions.js +5 -9
  27. package/src/parameters/applyParameterDefinitions.js +1 -4
  28. package/src/parameters/getParameterDefinitionsAndValues.js +5 -6
  29. package/src/parameters/getParameterDefinitionsFromSource.js +10 -12
  30. package/src/parameters/getParameterDefinitionsFromSource.test.js +2 -3
  31. package/src/parameters/getParameterValuesFromParameters.js +2 -4
  32. package/src/parameters/getParameterValuesFromUIControls.js +2 -4
  33. package/src/parameters/index.js +4 -6
  34. package/src/utils/getFileExtensionFromString.js +1 -3
  35. package/src/utils/index.js +2 -4
  36. package/src/utils/version.js +1 -3
  37. package/src/web/index.js +1 -3
  38. package/src/web/walkFileTree.js +7 -9
package/src/index.js CHANGED
@@ -1,8 +1,15 @@
1
- module.exports = {
2
- evaluation: require('./code-evaluation'),
3
- io: require('./io'),
4
- loading: require('./code-loading'),
5
- parameters: require('./parameters'),
6
- utils: require('./utils'),
7
- web: require('./web')
1
+ import * as evaluation from './code-evaluation/index.js'
2
+ import * as io from './io/index.js'
3
+ import * as loading from './code-loading/index.js'
4
+ import * as parameters from './parameters/index.js'
5
+ import * as utils from './utils/index.js'
6
+ import * as web from './web/index.js'
7
+
8
+ export {
9
+ evaluation,
10
+ io,
11
+ loading,
12
+ parameters,
13
+ utils,
14
+ web
8
15
  }
package/src/io/index.js CHANGED
@@ -1,4 +1,2 @@
1
- module.exports = {
2
- registerAllExtensions: require('./registerExtensions').registerAllExtensions,
3
- unRegisterAllExtensions: require('./registerExtensions').unRegisterAllExtensions
4
- }
1
+ export { registerAllExtensions } from './registerExtensions.js'
2
+ export { unRegisterAllExtensions } from './registerExtensions.js'
@@ -1,8 +1,9 @@
1
- const { deserializers } = require('@jscad/io')
1
+ import stripBom from 'strip-bom'
2
+
3
+ import { deserializers } from '@jscad/io'
2
4
 
3
5
  // FIXME: the unregistering does not work, look into it
4
6
  const registerJscadExtension = (fs, _require) => {
5
- const stripBom = require('strip-bom')
6
7
  _require.extensions['.jscad'] = (module, filename) => {
7
8
  const content = fs.readFileSync(filename, 'utf8')
8
9
  module._compile(stripBom(content), filename)
@@ -26,7 +27,7 @@ const unregisterDeserializer = (extension, fs, _require) => {
26
27
  delete _require.extensions[fileExtension]
27
28
  }
28
29
 
29
- const registerAllExtensions = (fs, _require) => {
30
+ export const registerAllExtensions = (fs, _require) => {
30
31
  registerJscadExtension(fs, _require)
31
32
 
32
33
  for (const extension of Object.keys(deserializers)) {
@@ -34,15 +35,10 @@ const registerAllExtensions = (fs, _require) => {
34
35
  }
35
36
  }
36
37
 
37
- const unRegisterAllExtensions = (fs, _require) => {
38
+ export const unRegisterAllExtensions = (fs, _require) => {
38
39
  unRegisterJscadExtension(fs, _require)
39
40
 
40
41
  for (const extension of Object.keys(deserializers)) {
41
42
  unregisterDeserializer(extension, fs, _require)
42
43
  }
43
44
  }
44
-
45
- module.exports = {
46
- registerAllExtensions,
47
- unRegisterAllExtensions
48
- }
@@ -1,4 +1,3 @@
1
-
2
1
  /**
3
2
  * casts the parameters/ get their correct values based on the
4
3
  * raw parameters (passed into the CLI tool for example) and the
@@ -7,7 +6,7 @@
7
6
  * @param {Array} parameterDefinitions
8
7
  * @returns {Object} the parameter values, as an object
9
8
  */
10
- const applyParameterDefinitions = (inputParameters, parameterDefinitions, throwOnNoDefinition = false) => {
9
+ export const applyParameterDefinitions = (inputParameters, parameterDefinitions, throwOnNoDefinition = false) => {
11
10
  const values = Object.keys(inputParameters).reduce((paramValues, paramName) => {
12
11
  let value = inputParameters[paramName]
13
12
 
@@ -71,5 +70,3 @@ const valueForChoices = (inputValue, definition) => {
71
70
  value = definition.values.length > 0 && typeof value === 'boolean' ? !!value : value
72
71
  return value
73
72
  }
74
-
75
- module.exports = applyParameterDefinitions
@@ -1,5 +1,5 @@
1
- const getParameterValuesFromParameters = require('./getParameterValuesFromParameters')
2
- const applyParameterDefinitions = require('./applyParameterDefinitions')
1
+ import { getParameterValuesFromParameters } from './getParameterValuesFromParameters.js'
2
+ import { applyParameterDefinitions } from './applyParameterDefinitions.js'
3
3
 
4
4
  const doesModuleExportParameterDefiniitions = (moduleToCheck) => moduleToCheck && 'getParameterDefinitions' in moduleToCheck
5
5
 
@@ -13,7 +13,8 @@ const getRawParameterDefinitionsAndValues = (rootModule, overrides) => {
13
13
  return { parameterDefinitions, parameterValues }
14
14
  }
15
15
 
16
- /** given the root/main module and optional parameter value overrides,
16
+ /*
17
+ * given the root/main module and optional parameter value overrides,
17
18
  * returns parameterDefinitions & 'default' parameter values
18
19
  * the overrides are passed for to enable the parameter definitions to access the PREVIOUS
19
20
  * version of the parameter values
@@ -22,12 +23,10 @@ const getRawParameterDefinitionsAndValues = (rootModule, overrides) => {
22
23
  * @param {Object} overrides an object containing parameter values, used as overrides
23
24
  * @returns {Object} { parameterValues, parameterDefinitions }
24
25
  */
25
- const getAllParameterDefintionsAndValues = (rootModule, overrides) => {
26
+ export const getParameterDefinitionsAndValues = (rootModule, overrides) => {
26
27
  let { parameterDefinitions, parameterValues } = getRawParameterDefinitionsAndValues(rootModule, overrides)
27
28
  parameterValues = Object.assign({}, parameterValues, overrides)
28
29
  parameterValues = parameterValues ? applyParameterDefinitions(parameterValues, parameterDefinitions) : parameterValues
29
30
 
30
31
  return { parameterValues, parameterDefinitions }
31
32
  }
32
-
33
- module.exports = getAllParameterDefintionsAndValues
@@ -1,4 +1,4 @@
1
- const JSON5 = require('json5')
1
+ import JSON5 from 'json5'
2
2
 
3
3
  /* Count leading spaces in a line.
4
4
  This helps provide more descriptive comments after the parameter.
@@ -8,17 +8,17 @@ When comment line is indented more than parameter(incl. parameter name)
8
8
  it is considered as description of previous parameter and not a group definition.
9
9
 
10
10
  */
11
- const countSpaces = (l) => {
11
+ const countSpaces = (line) => {
12
12
  let count = 0
13
- for (let i = 0; i < l.length; i++) {
14
- if (l[i] === ' ') count++
15
- else if (l[i] === '\t') count += 2
13
+ for (let i = 0; i < line.length; i++) {
14
+ if (line[i] === ' ') count++
15
+ else if (line[i] === '\t') count += 2
16
16
  else break
17
17
  }
18
18
  return count
19
19
  }
20
20
 
21
- const getParameterDefinitionsFromSource = (script) => {
21
+ export const getParameterDefinitionsFromSource = (script) => {
22
22
  const lines = []
23
23
  script.split('\n').forEach((l, i) => {
24
24
  const trim = l.trim()
@@ -94,7 +94,7 @@ const getParameterDefinitionsFromSource = (script) => {
94
94
  return defs
95
95
  }
96
96
 
97
- const parseOne = (comment, code, line1, line2) => {
97
+ export const parseOne = (comment, code, line1, line2) => {
98
98
  let def = parseDef(code, line2)
99
99
  const { caption, options } = parseComment(comment, line1, def.name)
100
100
  def.caption = caption || def.name
@@ -126,7 +126,7 @@ const extractTextFromComment = (c, lineNum) => {
126
126
  return c
127
127
  }
128
128
 
129
- const parseComment = (comment, lineNum, paramName) => {
129
+ export const parseComment = (comment, lineNum, paramName) => {
130
130
  comment = extractTextFromComment(comment, lineNum)
131
131
 
132
132
  const ret = {}
@@ -145,7 +145,7 @@ const parseComment = (comment, lineNum, paramName) => {
145
145
  return ret
146
146
  }
147
147
 
148
- const parseDef = (code, line) => {
148
+ export const parseDef = (code, line) => {
149
149
  if (code[code.length - 1] === ',') code = code.substring(0, code.length - 1).trim()
150
150
  let idx = code.indexOf('=')
151
151
 
@@ -179,7 +179,7 @@ const parseDef = (code, line) => {
179
179
  }
180
180
  }
181
181
 
182
- const combineParameterDefinitions = (paramDefFromSource, extraDef) => {
182
+ export const combineParameterDefinitions = (paramDefFromSource, extraDef) => {
183
183
  const def = [...paramDefFromSource]
184
184
  if (extraDef) {
185
185
  extraDef.forEach((param) => {
@@ -190,5 +190,3 @@ const combineParameterDefinitions = (paramDefFromSource, extraDef) => {
190
190
  }
191
191
  return def
192
192
  }
193
-
194
- module.exports = { getParameterDefinitionsFromSource, parseOne, parseComment, parseDef, combineParameterDefinitions }
@@ -1,7 +1,6 @@
1
- 'use strict'
2
- const test = require('ava')
1
+ import test from 'ava'
3
2
 
4
- const { getParameterDefinitionsFromSource, parseOne, parseComment, parseDef } = require('./getParameterDefinitionsFromSource.js')
3
+ import { getParameterDefinitionsFromSource, parseOne, parseComment, parseDef } from './getParameterDefinitionsFromSource.js'
5
4
 
6
5
  const sampleParams = [
7
6
  { name: 'width', caption: 'Width', type: 'int', initial: 145 },
@@ -1,8 +1,8 @@
1
- /**
1
+ /*
2
2
  * @param {} parameterDefinitions
3
3
  * @param {} inputParameters
4
4
  */
5
- const getParameterValuesFromParameters = (parameterDefinitions, inputParameters) => {
5
+ export const getParameterValuesFromParameters = (parameterDefinitions, inputParameters) => {
6
6
  const parameterValues = {}
7
7
  for (const a in parameterDefinitions) { // defaults, given by getParameterDefinitions()
8
8
  const x = parameterDefinitions[a]
@@ -19,5 +19,3 @@ const getParameterValuesFromParameters = (parameterDefinitions, inputParameters)
19
19
  }
20
20
  return parameterValues
21
21
  }
22
-
23
- module.exports = getParameterValuesFromParameters
@@ -1,10 +1,10 @@
1
- /**
1
+ /*
2
2
  * extracts the parameter
3
3
  * @param {Array} paramControls
4
4
  * @param {Boolean} onlyChanged
5
5
  * @returns {Object} the parameter values, as an object
6
6
  */
7
- const getParameterValuesFromUIControls = (paramControls, parameterDefinitions, onlyChanged) => {
7
+ export const getParameterValuesFromUIControls = (paramControls, parameterDefinitions, onlyChanged) => {
8
8
  const parameterValues = {}
9
9
  let value
10
10
  for (let i = 0; i < paramControls.length; i++) {
@@ -58,5 +58,3 @@ const getParameterValuesFromUIControls = (paramControls, parameterDefinitions, o
58
58
  }
59
59
  return parameterValues
60
60
  }
61
-
62
- module.exports = getParameterValuesFromUIControls
@@ -1,6 +1,4 @@
1
- module.exports = {
2
- applyParameterDefinitions: require('./applyParameterDefinitions'),
3
- getParameterDefinitionsAndValues: require('./getParameterDefinitionsAndValues'),
4
- getParameterValuesFromParameters: require('./getParameterValuesFromParameters'),
5
- getParameterValuesFromUIControls: require('./getParameterValuesFromUIControls')
6
- }
1
+ export { applyParameterDefinitions } from './applyParameterDefinitions.js'
2
+ export { getParameterDefinitionsAndValues } from './getParameterDefinitionsAndValues.js'
3
+ export { getParameterValuesFromParameters } from './getParameterValuesFromParameters.js'
4
+ export { getParameterValuesFromUIControls } from './getParameterValuesFromUIControls.js'
@@ -1,8 +1,6 @@
1
- const getFileExtensionFromString = (input) => {
1
+ export const getFileExtensionFromString = (input) => {
2
2
  if (input.indexOf('.') === -1) {
3
3
  return undefined
4
4
  }
5
5
  return (input.substring(input.lastIndexOf('.') + 1)).toLowerCase()
6
6
  }
7
-
8
- module.exports = getFileExtensionFromString
@@ -1,4 +1,2 @@
1
- module.exports = {
2
- getFileExtensionFromString: require('./getFileExtensionFromString'),
3
- version: require('./version')
4
- }
1
+ export { getFileExtensionFromString } from './getFileExtensionFromString.js'
2
+ export { version } from './version.js'
@@ -1,3 +1 @@
1
- const json = require('../../package.json')
2
- const version = json.version
3
- module.exports = { version }
1
+ export const version = '[VI]{version}[/VI]' // version is injected by rollup
package/src/web/index.js CHANGED
@@ -1,3 +1 @@
1
- module.exports = {
2
- walkFileTree: require('./walkFileTree')
3
- }
1
+ export { walkFileTree } from './walkFileTree.js'
@@ -1,8 +1,10 @@
1
- const { flatten } = require('@jscad/array-utils')
1
+ import path from 'path'
2
2
 
3
- const { formats } = require('@jscad/io/formats')
3
+ import { flatten } from '@jscad/array-utils'
4
4
 
5
- const getFileExtensionFromString = require('../utils/getFileExtensionFromString')
5
+ import { supportedFormats } from '@jscad/io'
6
+
7
+ import { getFileExtensionFromString } from '../utils/index.js'
6
8
 
7
9
  const binaryMimetypes = {
8
10
  bmp: 'image/bmp',
@@ -64,7 +66,7 @@ const readFileAsync = (file, fileMeta) => {
64
66
  // all known formats are supported
65
67
  const isSupportedFormat = (file) => {
66
68
  const ext = getFileExtensionFromString(file.name)
67
- const mimetype = formats[ext] ? formats[ext].mimetype : binaryMimetypes[ext]
69
+ const mimetype = supportedFormats[ext] ? supportedFormats[ext].mimetype : binaryMimetypes[ext]
68
70
  file.mimetype = file.type && file.type.length ? file.type : mimetype
69
71
  return file.mimetype && file.mimetype.length
70
72
  }
@@ -161,8 +163,6 @@ const processDirectory = (directory) => {
161
163
  * Transform the flat list of files (from HTML input) to a heiarchy of files (from drag-n-drop).
162
164
  */
163
165
  const transformFileList = (fileList) => {
164
- const path = require('path')
165
-
166
166
  if (fileList.length === 1) {
167
167
  const file = fileList[0]
168
168
  const filePath = file.webkitRelativePath ? file.webkitRelativePath : file.name
@@ -228,7 +228,7 @@ const transformFileList = (fileList) => {
228
228
  // 1) walk the tree
229
229
  // 2) read the files (readFileAsync)
230
230
  // 3) return a flattened list of promises containing all file entries
231
- const walkFileTree = (fileList) => {
231
+ export const walkFileTree = (fileList) => {
232
232
  let items = fileList
233
233
  if (fileList.length && (fileList[0] instanceof File)) {
234
234
  // transform the flat list of File entries
@@ -236,5 +236,3 @@ const walkFileTree = (fileList) => {
236
236
  }
237
237
  return processEntries(items)
238
238
  }
239
-
240
- module.exports = walkFileTree