diff --git a/src/stdlib/require.coffee b/src/stdlib/require.coffee deleted file mode 100644 index 4d7f67690..000000000 --- a/src/stdlib/require.coffee +++ /dev/null @@ -1,186 +0,0 @@ -fs = require 'fs-utils' - -paths = [ - "#{window.resourcePath}/spec" - "#{window.resourcePath}/benchmark" - "#{window.resourcePath}/src/stdlib" - "#{window.resourcePath}/src/app" - "#{window.resourcePath}/src/packages" - "#{window.resourcePath}/src" - "#{window.resourcePath}/vendor/packages" - "#{window.resourcePath}/vendor" - "#{window.resourcePath}/static" - "#{window.resourcePath}/themes" - "#{window.resourcePath}" -] - -window.__filename = null - -nakedLoad = (file) -> - file = resolve file - code = __read file - window.eval(code + "\n//@ sourceURL=" + file) - -require = (path, cb) -> - return cb require path if cb? - - unless file = resolve(path) - throw new Error("Require can't find file at path '#{path}'") - - ext = file.split('.').pop() - - if __moduleExists file - if not __modules.loaded[file.toLowerCase()]? - console.warn "Circular require: #{window.__filename} required #{file}" - return __modules[file] - else if __modules.loaded[file.toLowerCase()] - console.warn "Multiple requires (different cases) for #{file}" - - [ previousFilename, window.__filename ] = [ window.__filename, file ] - __modules[file] = {} # Fix for circular references - __modules[file] = (exts[ext] or (file) -> __read file) file - window.__filename = previousFilename - __modules[file] - -define = (cb) -> - __defines.push -> - exports = __modules[window.__filename] or {} - module = exports: exports - cb.call exports, require, exports, module - __modules.loaded[window.__filename.toLowerCase()] = true - module.exports or exports - -exts = - js: (file, code) -> - code or= __read file - eval("define(function(require, exports, module) { 'use strict';#{code}})\n//@ sourceURL=#{file}") - __defines.pop()?.call() - coffee: (file) -> - cacheFilePath = getCacheFilePath(file) - if __exists(cacheFilePath) - compiled = __read(cacheFilePath) - writeToCache = false - else - CoffeeScript = require 'coffee-script' - compiled = CoffeeScript.compile(__read(file), filename: file) - writeToCache = true - - evaluated = exts.js(file, compiled) - createCacheDirectory() - fs.writeFileSync(cacheFilePath, compiled) if writeToCache - evaluated - -getPath = (path) -> - path = resolve(path) - return path unless path.split('.').pop() is 'coffee' - - cacheFilePath = getCacheFilePath(path) - unless __exists(cacheFilePath) - CoffeeScript = require 'coffee-script' - compiled = CoffeeScript.compile(__read(path), filename: path) - createCacheDirectory() - fs.writeFileSync(cacheFilePath, compiled) - cacheFilePath - -createCacheDirectory = -> - fs.mkdirSync('/tmp/atom-compiled-scripts') unless __exists('/tmp/atom-compiled-scripts') - -getCacheFilePath = (path) -> - "/tmp/atom-compiled-scripts/#{$native.md5ForPath(path)}" - -resolve = (name, {verifyExistence}={}) -> - verifyExistence ?= true - file = name - if /!/.test file - file = file.split('!').pop() - - if file[0..1] is './' - prefix = window.__filename.split('/')[0..-2].join '/' - file = file.replace './', "#{prefix}/" - - if file[0..2] is '../' - prefix = window.__filename.split('/')[0..-3].join '/' - file = file.replace '../', "#{prefix}/" - - if file[0] isnt '/' - moduleAlreadyLoaded = paths.some (path) -> - if __moduleExists "#{path}/#{file}" - file = "#{path}/#{file}" - else if __moduleExists "#{path}/#{file}.js" - file = "#{path}/#{file}.js" - else if expanded = __moduleExpand "#{path}/#{file}" - file = expanded - - if not moduleAlreadyLoaded - hasExtension = /\.(.+)$/.test(file) - paths.some (path) -> - fileExists = hasExtension and __exists "#{path}/#{file}" - jsFileExists = not hasExtension and __exists "#{path}/#{file}.js" - - if jsFileExists - file = "#{path}/#{file}.js" - else if fileExists - file = "#{path}/#{file}" - else if expanded = __expand "#{path}/#{file}" - file = expanded - else - file = __expand(file) or file - - if file[0] == '/' - file - else - console.warn("Failed to resolve '#{name}'") if verifyExistence - null - -__moduleExists = (path) -> - __modules[path]? - -__moduleExpand = (path) -> - return path if __moduleExists path - for ext, handler of exts - return "#{path}.#{ext}" if __moduleExists "#{path}.#{ext}" - return "#{path}/index.#{ext}" if __moduleExists "#{path}/index.#{ext}" - null - -__expand = (path) -> - modulePath = __moduleExpand path - return modulePath if modulePath - - return path if __isFile path - for ext, handler of exts - return "#{path}.#{ext}" if __exists "#{path}.#{ext}" - return "#{path}/index.#{ext}" if __exists "#{path}/index.#{ext}" - - return path if __exists path - null - -__exists = (path) -> - fs.existsSync path - -__isFile = (path) -> - __exists(path) && fs.statSync(path).isFile() - -__read = (path) -> - try - fs.readFileSync(path, 'utf8') - catch e - console.error "Failed to read `#{path}`" - throw e - -__modules = { loaded : {} } -__defines = [] - -this.require = require -this.nakedLoad = nakedLoad -this.define = define - -this.require.paths = paths -this.require.getPath = getPath -this.require.exts = exts - -this.require.resolve = resolve -this.require.nameToUrl = (path) -> "#{path}.js" -this.require.__modules = __modules - -# issue #17 -this.require.noWorker = true