Skip to content

Commit

Permalink
require to use extensions in import specifiers (#459)
Browse files Browse the repository at this point in the history
* require to use extensions in import specifiers

* Apply suggestions from code review

* remove unrelated file
  • Loading branch information
aduh95 authored Sep 9, 2022
1 parent f07ed8e commit aed3e84
Show file tree
Hide file tree
Showing 28 changed files with 134 additions and 39 deletions.
66 changes: 61 additions & 5 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@
],
"env": {
"es6": true,
"node": true,
"browser": true,
"jasmine": true
"node": false,
"jest": false,
"browser": false,
"shared-node-browser": true,
"jasmine": false
},
"parserOptions": {
"ecmaVersion": 2020,
Expand All @@ -21,6 +23,60 @@
"no-param-reassign": ["off"],
"import/no-extraneous-dependencies": ["error", {
"devDependencies": ["test/**/*.js"]
}]
}
}],
"import/extensions": ["error", "ignorePackages"]
},
"overrides": [
{
"files": ["lib/browser/**/*.js", "demos/**/*.js"],
"env": {
"browser": true
}
},
{
"files": ["lib/node/**/*.js"],
"env": {
"node": true
},
"rules": {
"no-restricted-globals": [
"error",
{
"name": "__filename",
"message": "Use import.meta.url instead"
},
{
"name": "__dirname",
"message": "Not available in ESM"
},
{
"name": "exports",
"message": "Not available in ESM"
},
{
"name": "module",
"message": "Not available in ESM"
},
{
"name": "require",
"message": "Use import instead"
}
]
}
},
{
"files": ["test/**/*.js", "demos/**/*.js"],
"env": {
"browser": true,
"node": true,
"jasmine": true
},
"parserOptions": {
"sourceType": "script"
},
"rules": {
"import/extensions": "off"
}
}
]
}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.eslintcache
.vscode/settings.json
node_modules
demos/reactnative/.expo
lib.es5
Expand Down
2 changes: 2 additions & 0 deletions demos/browser/demo.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
/* global tus */
/* eslint-disable no-console, no-alert */

'use strict'

let upload = null
let uploadIsRunning = false
const toggleBtn = document.querySelector('#toggle-btn')
Expand Down
2 changes: 2 additions & 0 deletions demos/browser/video.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
/* global tus */
/* eslint-disable no-console, no-alert */

'use strict'

let stopRecording = null
let upload = null
const recordBtn = document.querySelector('#record-btn')
Expand Down
2 changes: 2 additions & 0 deletions demos/cordova/hooks/before_prepare/copy_tus_files.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#!/usr/bin/env node

'use strict'

const fs = require('fs')
const path = require('path')

Expand Down
2 changes: 2 additions & 0 deletions demos/cordova/www/js/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
/* global tus Camera */
/* eslint-disable no-alert */

'use strict'

let upload = null
let uploadIsRunning = false
let file = null
Expand Down
2 changes: 2 additions & 0 deletions demos/nodejs/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
/* eslint-disable no-console */

'use strict'

const fs = require('fs')
const tus = require('../..')

Expand Down
8 changes: 4 additions & 4 deletions lib/browser/fileReader.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import isReactNative from './isReactNative'
import uriToBlob from './uriToBlob'
import isReactNative from './isReactNative.js'
import uriToBlob from './uriToBlob.js'

import FileSource from './sources/FileSource'
import StreamSource from './sources/StreamSource'
import FileSource from './sources/FileSource.js'
import StreamSource from './sources/StreamSource.js'

export default class FileReader {
openFile (input, chunkSize) {
Expand Down
2 changes: 1 addition & 1 deletion lib/browser/fileSignature.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import isReactNative from './isReactNative'
import isReactNative from './isReactNative.js'

// TODO: Differenciate between input types

Expand Down
16 changes: 8 additions & 8 deletions lib/browser/index.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import BaseUpload from '../upload'
import NoopUrlStorage from '../noopUrlStorage'
import { enableDebugLog } from '../logger'
import DetailedError from '../error'
import BaseUpload from '../upload.js'
import NoopUrlStorage from '../noopUrlStorage.js'
import { enableDebugLog } from '../logger.js'
import DetailedError from '../error.js'

import { canStoreURLs, WebStorageUrlStorage } from './urlStorage'
import DefaultHttpStack from './httpStack'
import FileReader from './fileReader'
import fingerprint from './fileSignature'
import { canStoreURLs, WebStorageUrlStorage } from './urlStorage.js'
import DefaultHttpStack from './httpStack.js'
import FileReader from './fileReader.js'
import fingerprint from './fileSignature.js'

const defaultOptions = {
...BaseUpload.defaultOptions,
Expand Down
4 changes: 2 additions & 2 deletions lib/browser/sources/FileSource.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import isCordova from './isCordova'
import readAsByteArray from './readAsByteArray'
import isCordova from './isCordova.js'
import readAsByteArray from './readAsByteArray.js'

export default class FileSource {
// Make this.size a method
Expand Down
6 changes: 3 additions & 3 deletions lib/node/fileReader.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { ReadStream } from 'fs'
import isStream from 'is-stream'

import BufferSource from './sources/BufferSource'
import getFileSource from './sources/FileSource'
import StreamSource from './sources/StreamSource'
import BufferSource from './sources/BufferSource.js'
import getFileSource from './sources/FileSource.js'
import StreamSource from './sources/StreamSource.js'

export default class FileReader {
openFile (input, chunkSize) {
Expand Down
18 changes: 9 additions & 9 deletions lib/node/index.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import BaseUpload from '../upload'
import NoopUrlStorage from '../noopUrlStorage'
import { enableDebugLog } from '../logger'
import DetailedError from '../error'
import BaseUpload from '../upload.js'
import NoopUrlStorage from '../noopUrlStorage.js'
import { enableDebugLog } from '../logger.js'
import DetailedError from '../error.js'

import { FileUrlStorage, canStoreURLs } from './urlStorage'
import DefaultHttpStack from './httpStack'
import FileReader from './fileReader'
import fingerprint from './fileSignature'
import StreamSource from './sources/StreamSource'
import { FileUrlStorage, canStoreURLs } from './urlStorage.js'
import DefaultHttpStack from './httpStack.js'
import FileReader from './fileReader.js'
import fingerprint from './fileSignature.js'
import StreamSource from './sources/StreamSource.js'

const defaultOptions = {
...BaseUpload.defaultOptions,
Expand Down
10 changes: 5 additions & 5 deletions lib/upload.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Base64 } from 'js-base64'
import URL from 'url-parse'
import DetailedError from './error'
import { log } from './logger'
import uuid from './uuid'
import DetailedError from './error.js'
import { log } from './logger.js'
import uuid from './uuid.js'

const defaultOptions = {
endpoint: null,
Expand Down Expand Up @@ -924,8 +924,8 @@ function sendRequest (req, body, options) {
function isOnline () {
let online = true
if (typeof window !== 'undefined'
&& 'navigator' in window
&& window.navigator.onLine === false) {
&& 'navigator' in window // eslint-disable-line no-undef
&& window.navigator.onLine === false) { // eslint-disable-line no-undef
online = false
}

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,6 @@
"test-browserstack": "karma start test/karma/browserstack.conf.js",
"test-node": "jasmine test/spec/node-index.js",
"test-types": "tsd",
"lint": "eslint ."
"lint": "eslint . --cache"
}
}
2 changes: 2 additions & 0 deletions test/karma/base.conf.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
// Karma base configuration

'use strict'

module.exports = (config) => {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
Expand Down
2 changes: 2 additions & 0 deletions test/karma/browserstack.conf.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

// Karma configuration for testing using BrowserStack
const baseConfig = require('./base.conf')

Expand Down
2 changes: 2 additions & 0 deletions test/karma/puppeteer.conf.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

// Karma configuration for testing using Puppeteer
const baseConfig = require('./base.conf')

Expand Down
4 changes: 3 additions & 1 deletion test/spec/browser-index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
'use strict'

// The regenerator runtime is needed since the test use functions
// with the async/await keywords. See
// https://babeljs.io/docs/en/babel-plugin-transform-regenerator
import 'regenerator-runtime/runtime'
require('regenerator-runtime/runtime')

beforeEach(() => {
// Clear localStorage before every test to prevent stored URLs to
Expand Down
2 changes: 2 additions & 0 deletions test/spec/helpers/assertUrlStorage.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

module.exports = async function assertUrlStorage (urlStorage) {
// In the beginning of the test, the storage should be empty.
let result = await urlStorage.findAllUploads()
Expand Down
3 changes: 3 additions & 0 deletions test/spec/helpers/utils.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
/* eslint-disable max-classes-per-file */

'use strict'

const isBrowser = typeof window !== 'undefined'
const isNode = !isBrowser

Expand Down
2 changes: 2 additions & 0 deletions test/spec/node-index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

require('./test-common')
require('./test-node-specific')
require('./test-parallel-uploads')
Expand Down
2 changes: 2 additions & 0 deletions test/spec/test-browser-specific.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

const assertUrlStorage = require('./helpers/assertUrlStorage')
const { TestHttpStack, waitableFunction, wait } = require('./helpers/utils')
const tus = require('../..')
Expand Down
2 changes: 2 additions & 0 deletions test/spec/test-common.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

const { TestHttpStack, waitableFunction, wait, getBlob } = require('./helpers/utils')
const tus = require('../..')

Expand Down
2 changes: 2 additions & 0 deletions test/spec/test-end-to-end.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

const axios = require('axios')
const { getBlob } = require('./helpers/utils')
const tus = require('../..')
Expand Down
2 changes: 2 additions & 0 deletions test/spec/test-node-specific.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

const stream = require('stream')
const temp = require('temp')
const fs = require('fs')
Expand Down
2 changes: 2 additions & 0 deletions test/spec/test-parallel-uploads.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

const { TestHttpStack, waitableFunction, wait, getBlob } = require('./helpers/utils')
const tus = require('../..')

Expand Down
2 changes: 2 additions & 0 deletions test/spec/test-terminate.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use strict'

const { TestHttpStack, getBlob } = require('./helpers/utils')
const tus = require('../..')

Expand Down

0 comments on commit aed3e84

Please sign in to comment.