feat(sdk): Consolidate low-level components into SDK

Changes:

- Split out scanner into own file
- Move `lib/shared/sdk` -> `lib/sdk`
- Move `lib/image-stream` -> `lib/sdk/image-stream`
- Move `lib/writer` -> `lib/sdk/writer`
- Rename `sdk/standard` -> `sdk/blockdevice`
- Move adapters into `sdk/adapters` subdirectory

Change-Type: minor
Changelog-Entry: Consolidate low-level components into Etcher SDK
This commit is contained in:
Jonas Hermsmeier 2018-02-15 17:39:56 +01:00
parent 4fa0f990e5
commit 7c9f15d8a9
No known key found for this signature in database
GPG Key ID: 1B870F801A0CEE9F
45 changed files with 151 additions and 96 deletions

View File

@ -22,10 +22,10 @@ const fs = Bluebird.promisifyAll(require('fs'))
const mountutils = Bluebird.promisifyAll(require('mountutils')) const mountutils = Bluebird.promisifyAll(require('mountutils'))
const drivelist = Bluebird.promisifyAll(require('drivelist')) const drivelist = Bluebird.promisifyAll(require('drivelist'))
const os = require('os') const os = require('os')
const imageStream = require('../image-stream') const imageStream = require('../sdk/image-stream')
const errors = require('../shared/errors') const errors = require('../shared/errors')
const constraints = require('../shared/drive-constraints') const constraints = require('../shared/drive-constraints')
const ImageWriter = require('../writer') const ImageWriter = require('../sdk/writer')
const diskpart = require('./diskpart') const diskpart = require('./diskpart')
/** /**

View File

@ -21,7 +21,7 @@ const Bluebird = require('bluebird')
const fs = Bluebird.promisifyAll(require('fs')) const fs = Bluebird.promisifyAll(require('fs'))
const path = require('path') const path = require('path')
const settings = require('../models/settings') const settings = require('../models/settings')
const SDK = require('../../../shared/sdk') const SDK = require('../../../sdk')
/** /**
* @summary The Etcher "blobs" directory path * @summary The Etcher "blobs" directory path
@ -31,7 +31,7 @@ const SDK = require('../../../shared/sdk')
const BLOBS_DIRECTORY = path.join(__dirname, '..', '..', 'blobs') const BLOBS_DIRECTORY = path.join(__dirname, '..', '..', 'blobs')
const scanner = SDK.createScanner({ const scanner = SDK.createScanner({
standard: { blockdevice: {
get includeSystemDrives () { get includeSystemDrives () {
return settings.get('unsafeMode') return settings.get('unsafeMode')
} }

View File

@ -21,7 +21,7 @@ const Bluebird = require('bluebird')
const path = require('path') const path = require('path')
const messages = require('../../../../../shared/messages') const messages = require('../../../../../shared/messages')
const errors = require('../../../../../shared/errors') const errors = require('../../../../../shared/errors')
const imageStream = require('../../../../../image-stream') const imageStream = require('../../../../../sdk/image-stream')
const supportedFormats = require('../../../../../shared/supported-formats') const supportedFormats = require('../../../../../shared/supported-formats')
const analytics = require('../../../modules/analytics') const analytics = require('../../../modules/analytics')
const selectionState = require('../../../../../shared/models/selection-state') const selectionState = require('../../../../../shared/models/selection-state')

View File

@ -22,15 +22,15 @@ const EventEmitter = require('events')
const drivelist = Bluebird.promisifyAll(require('drivelist')) const drivelist = Bluebird.promisifyAll(require('drivelist'))
/** /**
* @summary StandardAdapter * @summary BlockDeviceAdapter
* @class * @class
*/ */
class StandardAdapter extends EventEmitter { class BlockDeviceAdapter extends EventEmitter {
/** /**
* @summary StandardAdapter constructor * @summary BlockDeviceAdapter constructor
* @class * @class
* @example * @example
* const adapter = new StandardAdapter() * const adapter = new BlockDeviceAdapter()
*/ */
constructor () { constructor () {
super() super()
@ -51,7 +51,7 @@ class StandardAdapter extends EventEmitter {
* @param {Object} [options] - options * @param {Object} [options] - options
* @param {Object} [options.includeSystemDrives=false] - include system drives * @param {Object} [options.includeSystemDrives=false] - include system drives
* @param {Function} [callback] - optional callback * @param {Function} [callback] - optional callback
* @returns {StandardAdapter} * @returns {BlockDeviceAdapter}
* *
* @example * @example
* adapter.scan({ * adapter.scan({
@ -101,7 +101,7 @@ class StandardAdapter extends EventEmitter {
* @type {String} * @type {String}
* @constant * @constant
*/ */
StandardAdapter.id = 'standard' BlockDeviceAdapter.id = 'blockdevice'
// Exports // Exports
module.exports = StandardAdapter module.exports = BlockDeviceAdapter

46
lib/sdk/adapters/index.js Normal file
View File

@ -0,0 +1,46 @@
/*
* Copyright 2017 resin.io
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict'
const _ = require('lodash')
const os = require('os')
/**
* @summary The list of loaded adapters
* @type {Object[]}
* @constant
*/
const ADAPTERS = [
require('./blockdevice')
]
// We don't support usbboot on GNU/Linux yet, given
// that some distributions require root permissions
// to open USB devices.
if (os.platform() !== 'linux') {
ADAPTERS.push(require('./usbboot'))
}
/**
* @summary Initialised adapters
* @type {Object<String,Adapter>}
* @constant
*/
module.exports = _.reduce(ADAPTERS, (adapters, Adapter) => {
adapters[Adapter.id] = new Adapter()
return adapters
}, {})

View File

@ -27,7 +27,7 @@ const Bluebird = require('bluebird')
const debug = require('debug')('sdk:usbboot') const debug = require('debug')('sdk:usbboot')
const usb = require('./usb') const usb = require('./usb')
const protocol = require('./protocol') const protocol = require('./protocol')
const utils = require('../../utils') const utils = require('../../../shared/utils')
debug.enabled = true debug.enabled = true

View File

@ -20,7 +20,7 @@ const Bluebird = require('bluebird')
const _ = require('lodash') const _ = require('lodash')
const StreamZip = require('node-stream-zip') const StreamZip = require('node-stream-zip')
const yauzl = Bluebird.promisifyAll(require('yauzl')) const yauzl = Bluebird.promisifyAll(require('yauzl'))
const errors = require('../../shared/errors') const errors = require('../../../shared/errors')
/** /**
* @summary Get all archive entries * @summary Get all archive entries

View File

@ -21,8 +21,8 @@ const _ = require('lodash')
const PassThroughStream = require('stream').PassThrough const PassThroughStream = require('stream').PassThrough
const supportedFileTypes = require('./supported') const supportedFileTypes = require('./supported')
const utils = require('./utils') const utils = require('./utils')
const errors = require('../shared/errors') const errors = require('../../shared/errors')
const fileExtensions = require('../shared/file-extensions') const fileExtensions = require('../../shared/file-extensions')
/** /**
* @summary Archive metadata base path * @summary Archive metadata base path

View File

@ -29,9 +29,9 @@ const udif = Bluebird.promisifyAll(require('udif'))
const archive = require('./archive') const archive = require('./archive')
const utils = require('./utils') const utils = require('./utils')
const zipArchiveHooks = require('./archive-hooks/zip') const zipArchiveHooks = require('./archive-hooks/zip')
const fileExtensions = require('../shared/file-extensions') const fileExtensions = require('../../shared/file-extensions')
const path = require('path') const path = require('path')
const errors = require('../shared/errors') const errors = require('../../shared/errors')
/** /**
* @summary Default image extension to be assumed * @summary Default image extension to be assumed

View File

@ -23,7 +23,7 @@ const stream = require('stream')
const mime = require('./mime') const mime = require('./mime')
const handlers = require('./handlers') const handlers = require('./handlers')
const supportedFileTypes = require('./supported') const supportedFileTypes = require('./supported')
const errors = require('../shared/errors') const errors = require('../../shared/errors')
const parsePartitions = require('./parse-partitions') const parsePartitions = require('./parse-partitions')
/** /**
@ -54,7 +54,7 @@ const parsePartitions = require('./parse-partitions')
* @returns {Promise} * @returns {Promise}
* *
* @example * @example
* const imageStream = require('./lib/image-stream'); * const imageStream = require('./lib/sdk/image-stream');
* *
* imageStream.getFromFilePath('path/to/rpi.img.xz').then((image) => { * imageStream.getFromFilePath('path/to/rpi.img.xz').then((image) => {
* console.log(`The image display name is: ${image.name}`); * console.log(`The image display name is: ${image.name}`);
@ -106,7 +106,7 @@ exports.getFromFilePath = (file) => {
* @returns {Promise} * @returns {Promise}
* *
* @example * @example
* const imageStream = require('./lib/image-stream'); * const imageStream = require('./lib/sdk/image-stream');
* *
* imageStream.getImageMetadata('path/to/rpi.img.xz').then((metadata) => { * imageStream.getImageMetadata('path/to/rpi.img.xz').then((metadata) => {
* console.log(`The image display name is: ${metadata.name}`); * console.log(`The image display name is: ${metadata.name}`);
@ -131,7 +131,7 @@ exports.getImageMetadata = (file) => {
* @public * @public
* *
* @example * @example
* const imageStream = require('./lib/image-stream'); * const imageStream = require('./lib/sdk/image-stream');
* *
* imageStream.supportedFileTypes.forEach((fileType) => { * imageStream.supportedFileTypes.forEach((fileType) => {
* console.log('Supported file type: ' + fileType.extension); * console.log('Supported file type: ' + fileType.extension);

View File

@ -18,7 +18,7 @@
const Bluebird = require('bluebird') const Bluebird = require('bluebird')
const fs = Bluebird.promisifyAll(require('fs')) const fs = Bluebird.promisifyAll(require('fs'))
const errors = require('../shared/errors') const errors = require('../../shared/errors')
/** /**
* @summary Read a buffer from an image file descriptor * @summary Read a buffer from an image file descriptor

47
lib/sdk/index.js Normal file
View File

@ -0,0 +1,47 @@
/*
* Copyright 2017 resin.io
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict'
const SDK = module.exports
/**
* @summary Initialised adapters
* @type {Object<String,Adapter>}
* @constant
*/
SDK.adapters = require('./adapters')
/**
* Adapter Scanner
* @see scanner.js
* @ignore
*/
SDK.Scanner = require('./scanner')
/**
* @summary Create a new Scanner
* @param {Object} [options] - options
* @returns {SDK.Scanner}
* @example
* SDK.createScanner({
* blockdevice: { ... },
* usbboot: { ... }
* })
*/
SDK.createScanner = (options) => {
return new SDK.Scanner(options)
}

View File

@ -16,54 +16,28 @@
'use strict' 'use strict'
const EventEmitter = require('events')
const _ = require('lodash') const _ = require('lodash')
const SDK = module.exports const EventEmitter = require('events')
const debug = require('debug')('sdk') const debug = require('debug')('sdk:scanner')
const os = require('os') const SDK = require('./')
debug.enabled = true debug.enabled = true
/**
* @summary The list of loaded adapters
* @type {Object[]}
* @constant
*/
const ADAPTERS = [
require('./standard')
]
// We don't support usbboot on GNU/Linux yet, given
// that some distributions require root permissions
// to open USB devices.
if (os.platform() !== 'linux') {
ADAPTERS.push(require('./usbboot'))
}
/**
* @summary Initialised adapters
* @type {Object<String,Adapter>}
* @constant
*/
SDK.adapters = _.reduce(ADAPTERS, (adapters, Adapter) => {
adapters[Adapter.id] = new Adapter()
return adapters
}, {})
/* eslint-disable lodash/prefer-lodash-method */ /* eslint-disable lodash/prefer-lodash-method */
/** /**
* Adapter Scanner * Adapter Scanner
* @class Scanner * @class Scanner
* @memberOf SDK
*/ */
SDK.Scanner = class Scanner extends EventEmitter { class Scanner extends EventEmitter {
/** /**
* @summary Adapter Scanner constructor * @summary Adapter Scanner constructor
* @param {Object<String,Object>} [options] - device adapter options * @param {Object<String,Object>} [options] - device adapter options
* @param {Object} [options.adapters] - map of external device adapters * @param {Object} [options.adapters] - map of external device adapters
* @example * @example
* new SDK.Scanner({ * new Scanner({
* standard: { ... }, * blockdevice: { ... },
* usbboot: { ... } * usbboot: { ... }
* }) * })
*/ */
@ -133,7 +107,7 @@ SDK.Scanner = class Scanner extends EventEmitter {
/** /**
* @summary Start scanning for devices * @summary Start scanning for devices
* @public * @public
* @returns {SDK.Scanner} * @returns {Scanner}
* @example * @example
* scanner.start() * scanner.start()
*/ */
@ -156,7 +130,7 @@ SDK.Scanner = class Scanner extends EventEmitter {
const runScan = () => { const runScan = () => {
adapter.scan(options, () => { adapter.scan(options, () => {
if (this.isScanning) { if (this.isScanning) {
setTimeout(runScan, SDK.Scanner.MIN_SCAN_DELAY) setTimeout(runScan, Scanner.MIN_SCAN_DELAY)
} }
}) })
} }
@ -177,7 +151,7 @@ SDK.Scanner = class Scanner extends EventEmitter {
/** /**
* @summary Stop scanning for devices * @summary Stop scanning for devices
* @public * @public
* @returns {SDK.Scanner} * @returns {Scanner}
* @example * @example
* scanner.stop() * scanner.stop()
*/ */
@ -202,7 +176,7 @@ SDK.Scanner = class Scanner extends EventEmitter {
* @summary Subscribe to an adapter * @summary Subscribe to an adapter
* @public * @public
* @param {Adapter} adapter - device adapter * @param {Adapter} adapter - device adapter
* @returns {SDK.Scanner} * @returns {Scanner}
* @example * @example
* scanner.subscribe(adapter) * scanner.subscribe(adapter)
*/ */
@ -223,7 +197,7 @@ SDK.Scanner = class Scanner extends EventEmitter {
* @summary Unsubscribe from an adapter * @summary Unsubscribe from an adapter
* @public * @public
* @param {Adapter} adapter - device adapter * @param {Adapter} adapter - device adapter
* @returns {SDK.Scanner} * @returns {Scanner}
* @example * @example
* scanner.unsubscribe(adapter) * scanner.unsubscribe(adapter)
* // OR * // OR
@ -253,18 +227,6 @@ SDK.Scanner = class Scanner extends EventEmitter {
* @const * @const
* @type {Number} * @type {Number}
*/ */
SDK.Scanner.MIN_SCAN_DELAY = 500 Scanner.MIN_SCAN_DELAY = 500
/** module.exports = Scanner
* @summary Create a new Scanner
* @param {Object} [options] - options
* @returns {SDK.Scanner}
* @example
* SDK.createScanner({
* standard: { ... },
* usbboot: { ... }
* })
*/
SDK.createScanner = (options) => {
return new SDK.Scanner(options)
}

View File

@ -18,7 +18,7 @@
const _ = require('lodash') const _ = require('lodash')
const path = require('path') const path = require('path')
const imageStream = require('../image-stream') const imageStream = require('../sdk/image-stream')
const fileExtensions = require('./file-extensions') const fileExtensions = require('./file-extensions')
/** /**

View File

@ -164,7 +164,7 @@ describe('Browser: driveScanner', function () {
path: '/mnt/foo' path: '/mnt/foo'
} }
], ],
adapter: 'standard', adapter: 'blockdevice',
isSystem: false, isSystem: false,
isRemovable: false isRemovable: false
}, },
@ -178,7 +178,7 @@ describe('Browser: driveScanner', function () {
path: '/mnt/bar' path: '/mnt/bar'
} }
], ],
adapter: 'standard', adapter: 'blockdevice',
isSystem: false, isSystem: false,
isRemovable: false isRemovable: false
} }
@ -268,7 +268,7 @@ describe('Browser: driveScanner', function () {
description: 'Foo', description: 'Foo',
size: '14G', size: '14G',
mountpoints: [], mountpoints: [],
adapter: 'standard', adapter: 'blockdevice',
isSystem: false, isSystem: false,
isRemovable: false isRemovable: false
}, },
@ -282,7 +282,7 @@ describe('Browser: driveScanner', function () {
path: 'F:' path: 'F:'
} }
], ],
adapter: 'standard', adapter: 'blockdevice',
isSystem: false, isSystem: false,
isRemovable: false isRemovable: false
} }

View File

@ -18,8 +18,8 @@
const m = require('mochainon') const m = require('mochainon')
const path = require('path') const path = require('path')
const zipHooks = require('../../../lib/image-stream/archive-hooks/zip') const zipHooks = require('../../../lib/sdk/image-stream/archive-hooks/zip')
const utils = require('../../../lib/image-stream/utils') const utils = require('../../../lib/sdk/image-stream/utils')
const tester = require('../tester') const tester = require('../tester')
const ZIP_PATH = path.join(__dirname, '..', 'data', 'zip') const ZIP_PATH = path.join(__dirname, '..', 'data', 'zip')

View File

@ -22,7 +22,7 @@ const path = require('path')
const DATA_PATH = path.join(__dirname, 'data') const DATA_PATH = path.join(__dirname, 'data')
const IMAGES_PATH = path.join(DATA_PATH, 'images') const IMAGES_PATH = path.join(DATA_PATH, 'images')
const BZ2_PATH = path.join(DATA_PATH, 'bz2') const BZ2_PATH = path.join(DATA_PATH, 'bz2')
const imageStream = require('../../lib/image-stream/index') const imageStream = require('../../lib/sdk/image-stream/index')
const tester = require('./tester') const tester = require('./tester')
describe('ImageStream: BZ2', function () { describe('ImageStream: BZ2', function () {

View File

@ -21,7 +21,7 @@ const path = require('path')
const DATA_PATH = path.join(__dirname, 'data') const DATA_PATH = path.join(__dirname, 'data')
const IMAGES_PATH = path.join(DATA_PATH, 'images') const IMAGES_PATH = path.join(DATA_PATH, 'images')
const errors = require('../../lib/shared/errors') const errors = require('../../lib/shared/errors')
const imageStream = require('../../lib/image-stream/index') const imageStream = require('../../lib/sdk/image-stream/index')
describe('ImageStream: Directory', function () { describe('ImageStream: Directory', function () {
describe('.getFromFilePath()', function () { describe('.getFromFilePath()', function () {

View File

@ -22,7 +22,7 @@ const path = require('path')
const DATA_PATH = path.join(__dirname, 'data') const DATA_PATH = path.join(__dirname, 'data')
const IMAGES_PATH = path.join(DATA_PATH, 'images') const IMAGES_PATH = path.join(DATA_PATH, 'images')
const DMG_PATH = path.join(DATA_PATH, 'dmg') const DMG_PATH = path.join(DATA_PATH, 'dmg')
const imageStream = require('../../lib/image-stream/index') const imageStream = require('../../lib/sdk/image-stream/index')
const tester = require('./tester') const tester = require('./tester')
describe('ImageStream: DMG', function () { describe('ImageStream: DMG', function () {

View File

@ -22,7 +22,7 @@ const path = require('path')
const DATA_PATH = path.join(__dirname, 'data') const DATA_PATH = path.join(__dirname, 'data')
const IMAGES_PATH = path.join(DATA_PATH, 'images') const IMAGES_PATH = path.join(DATA_PATH, 'images')
const GZ_PATH = path.join(DATA_PATH, 'gz') const GZ_PATH = path.join(DATA_PATH, 'gz')
const imageStream = require('../../lib/image-stream/index') const imageStream = require('../../lib/sdk/image-stream/index')
const tester = require('./tester') const tester = require('./tester')
describe('ImageStream: GZ', function () { describe('ImageStream: GZ', function () {

View File

@ -21,7 +21,7 @@ const fs = require('fs')
const path = require('path') const path = require('path')
const DATA_PATH = path.join(__dirname, 'data') const DATA_PATH = path.join(__dirname, 'data')
const IMAGES_PATH = path.join(DATA_PATH, 'images') const IMAGES_PATH = path.join(DATA_PATH, 'images')
const imageStream = require('../../lib/image-stream/index') const imageStream = require('../../lib/sdk/image-stream/index')
const tester = require('./tester') const tester = require('./tester')
describe('ImageStream: IMG', function () { describe('ImageStream: IMG', function () {

View File

@ -18,7 +18,7 @@
const m = require('mochainon') const m = require('mochainon')
const _ = require('lodash') const _ = require('lodash')
const imageStream = require('../../lib/image-stream/index') const imageStream = require('../../lib/sdk/image-stream/index')
describe('ImageStream', function () { describe('ImageStream', function () {
describe('.supportedFileTypes', function () { describe('.supportedFileTypes', function () {

View File

@ -21,7 +21,7 @@ const fs = require('fs')
const path = require('path') const path = require('path')
const DATA_PATH = path.join(__dirname, 'data') const DATA_PATH = path.join(__dirname, 'data')
const IMAGES_PATH = path.join(DATA_PATH, 'images') const IMAGES_PATH = path.join(DATA_PATH, 'images')
const imageStream = require('../../lib/image-stream/index') const imageStream = require('../../lib/sdk/image-stream/index')
const tester = require('./tester') const tester = require('./tester')
describe('ImageStream: ISO', function () { describe('ImageStream: ISO', function () {

View File

@ -22,7 +22,7 @@ const DATA_PATH = path.join(__dirname, '..', 'data')
const IMAGES_PATH = path.join(DATA_PATH, 'images') const IMAGES_PATH = path.join(DATA_PATH, 'images')
const ZIP_PATH = path.join(DATA_PATH, 'metadata', 'zip') const ZIP_PATH = path.join(DATA_PATH, 'metadata', 'zip')
const tester = require('../tester') const tester = require('../tester')
const imageStream = require('../../../lib/image-stream/index') const imageStream = require('../../../lib/sdk/image-stream/index')
const testMetadataProperty = (archivePath, propertyName, expectedValue) => { const testMetadataProperty = (archivePath, propertyName, expectedValue) => {
return imageStream.getFromFilePath(archivePath).then((image) => { return imageStream.getFromFilePath(archivePath).then((image) => {

View File

@ -19,7 +19,7 @@
const m = require('mochainon') const m = require('mochainon')
const path = require('path') const path = require('path')
const DATA_PATH = path.join(__dirname, 'data') const DATA_PATH = path.join(__dirname, 'data')
const mime = require('../../lib/image-stream/mime') const mime = require('../../lib/sdk/image-stream/mime')
describe('ImageStream: MIME', function () { describe('ImageStream: MIME', function () {
describe('.getMimeTypeFromFileName()', function () { describe('.getMimeTypeFromFileName()', function () {

View File

@ -22,7 +22,7 @@ const Bluebird = require('bluebird')
const fs = Bluebird.promisifyAll(require('fs')) const fs = Bluebird.promisifyAll(require('fs'))
const os = require('os') const os = require('os')
const path = require('path') const path = require('path')
const imageStream = require('../../lib/image-stream/index') const imageStream = require('../../lib/sdk/image-stream/index')
const doFilesContainTheSameData = (file1, file2) => { const doFilesContainTheSameData = (file1, file2) => {
return Bluebird.props({ return Bluebird.props({

View File

@ -18,7 +18,7 @@
const m = require('mochainon') const m = require('mochainon')
const StreamReadable = require('stream').Readable const StreamReadable = require('stream').Readable
const utils = require('../../lib/image-stream/utils') const utils = require('../../lib/sdk/image-stream/utils')
describe('ImageStream: Utils', function () { describe('ImageStream: Utils', function () {
describe('.extractStream()', function () { describe('.extractStream()', function () {

View File

@ -22,7 +22,7 @@ const path = require('path')
const DATA_PATH = path.join(__dirname, 'data') const DATA_PATH = path.join(__dirname, 'data')
const IMAGES_PATH = path.join(DATA_PATH, 'images') const IMAGES_PATH = path.join(DATA_PATH, 'images')
const XZ_PATH = path.join(DATA_PATH, 'xz') const XZ_PATH = path.join(DATA_PATH, 'xz')
const imageStream = require('../../lib/image-stream/index') const imageStream = require('../../lib/sdk/image-stream/index')
const tester = require('./tester') const tester = require('./tester')
describe('ImageStream: XZ', function () { describe('ImageStream: XZ', function () {

View File

@ -22,7 +22,7 @@ const path = require('path')
const DATA_PATH = path.join(__dirname, 'data') const DATA_PATH = path.join(__dirname, 'data')
const IMAGES_PATH = path.join(DATA_PATH, 'images') const IMAGES_PATH = path.join(DATA_PATH, 'images')
const ZIP_PATH = path.join(DATA_PATH, 'zip') const ZIP_PATH = path.join(DATA_PATH, 'zip')
const imageStream = require('../../lib/image-stream/index') const imageStream = require('../../lib/sdk/image-stream/index')
const tester = require('./tester') const tester = require('./tester')
describe('ImageStream: ZIP', function () { describe('ImageStream: ZIP', function () {

View File

@ -39,7 +39,7 @@ module.exports = {
// on the tree (for testing purposes) or inside a generated // on the tree (for testing purposes) or inside a generated
// bundle (for production purposes), by translating // bundle (for production purposes), by translating
// relative require paths within the bundle. // relative require paths within the bundle.
if (/\.\/(shared|image-stream)/i.test(request)) { if (/\/(sdk|shared)/i.test(request)) {
return callback(null, `commonjs ../../../lib/${_.replace(request, /(\.\.\/)*/, '')}`) return callback(null, `commonjs ../../../lib/${_.replace(request, /(\.\.\/)*/, '')}`)
} }