register.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. 'use strict';
  2. var fs = require('fs');
  3. var path = require('path');
  4. var index_ts = require('../compiler/svelte.js');
  5. var compileOptions = {
  6. extensions: ['.html']
  7. };
  8. function capitalise(name) {
  9. return name[0].toUpperCase() + name.slice(1);
  10. }
  11. function register(options) {
  12. if (options.extensions) {
  13. compileOptions.extensions.forEach(deregisterExtension);
  14. options.extensions.forEach(registerExtension);
  15. }
  16. compileOptions = options;
  17. }
  18. function deregisterExtension(extension) {
  19. delete require.extensions[extension];
  20. }
  21. function registerExtension(extension) {
  22. require.extensions[extension] = function(module, filename) {
  23. var name = path.basename(filename)
  24. .slice(0, -path.extname(filename).length)
  25. .replace(/^\d/, '_$&')
  26. .replace(/[^a-zA-Z0-9_$]/g, '');
  27. var options = Object.assign({}, compileOptions, {
  28. filename,
  29. name: capitalise(name),
  30. generate: 'ssr'
  31. });
  32. var ref = index_ts.compile(fs.readFileSync(filename, 'utf-8'), options);
  33. var js = ref.js;
  34. return module._compile(js.code, filename);
  35. };
  36. }
  37. registerExtension('.html');
  38. module.exports = register;
  39. //# sourceMappingURL=register.js.map