Skip to content

⬅️ Back to Table of Contents

📄 Storage.js

📊 Analysis Summary

Metric Count
🔧 Functions 17
📊 Variables & Constants 5

📚 Table of Contents

🛠️ File Location:

📂 editor/js/Storage.js

Variables & Constants

Name Type Kind Value Exported
indexedDB IDBFactory let/var window.indexedDB
name "threejs-editor" let/var 'threejs-editor'
version 1 let/var 1
database any let/var *not shown*
db any let/var event.target.result

Functions

Storage(): { init: (callback: any) => void; get: (callback: any) => void; set: (data: any) => void; clear: () => void; }

Returns: { init: (callback: any) => void; get: (callback: any) => void; set: (data: any) => void; clear: () => void; }

Calls:

  • console.warn
  • indexedDB.open
  • db.objectStoreNames.contains
  • db.createObjectStore
  • callback
  • console.error
  • database.transaction
  • transaction.objectStore
  • objectStore.get
  • performance.now
  • objectStore.put
  • console.log
  • /\d\d\:\d\d\:\d\d/.exec
  • ( performance.now() - start ).toFixed
  • objectStore.clear
Code
function Storage() {

    const indexedDB = window.indexedDB;

    if ( indexedDB === undefined ) {

        console.warn( 'Storage: IndexedDB not available.' );
        return { init: function () {}, get: function () {}, set: function () {}, clear: function () {} };

    }

    const name = 'threejs-editor';
    const version = 1;

    let database;

    return {

        init: function ( callback ) {

            const request = indexedDB.open( name, version );
            request.onupgradeneeded = function ( event ) {

                const db = event.target.result;

                if ( db.objectStoreNames.contains( 'states' ) === false ) {

                    db.createObjectStore( 'states' );

                }

            };

            request.onsuccess = function ( event ) {

                database = event.target.result;

                callback();

            };

            request.onerror = function ( event ) {

                console.error( 'IndexedDB', event );

            };


        },

        get: function ( callback ) {

            const transaction = database.transaction( [ 'states' ], 'readonly' );
            const objectStore = transaction.objectStore( 'states' );
            const request = objectStore.get( 0 );
            request.onsuccess = function ( event ) {

                callback( event.target.result );

            };

        },

        set: function ( data ) {

            const start = performance.now();

            const transaction = database.transaction( [ 'states' ], 'readwrite' );
            const objectStore = transaction.objectStore( 'states' );
            const request = objectStore.put( data, 0 );
            request.onsuccess = function () {

                console.log( '[' + /\d\d\:\d\d\:\d\d/.exec( new Date() )[ 0 ] + ']', 'Saved state to IndexedDB. ' + ( performance.now() - start ).toFixed( 2 ) + 'ms' );

            };

        },

        clear: function () {

            if ( database === undefined ) return;

            const transaction = database.transaction( [ 'states' ], 'readwrite' );
            const objectStore = transaction.objectStore( 'states' );
            const request = objectStore.clear();
            request.onsuccess = function () {

                console.log( '[' + /\d\d\:\d\d\:\d\d/.exec( new Date() )[ 0 ] + ']', 'Cleared IndexedDB.' );

            };

        }

    };

}

init(): void

Returns: void

Code
function () {}

get(): void

Returns: void

Code
function () {}

set(): void

Returns: void

Code
function () {}

clear(): void

Returns: void

Code
function () {}

init(): void

Returns: void

Code
function () {}

get(): void

Returns: void

Code
function () {}

set(): void

Returns: void

Code
function () {}

clear(): void

Returns: void

Code
function () {}

init(callback: any): void

Parameters:

  • callback any

Returns: void

Calls:

  • indexedDB.open
  • db.objectStoreNames.contains
  • db.createObjectStore
  • callback
  • console.error
Code
function ( callback ) {

            const request = indexedDB.open( name, version );
            request.onupgradeneeded = function ( event ) {

                const db = event.target.result;

                if ( db.objectStoreNames.contains( 'states' ) === false ) {

                    db.createObjectStore( 'states' );

                }

            };

            request.onsuccess = function ( event ) {

                database = event.target.result;

                callback();

            };

            request.onerror = function ( event ) {

                console.error( 'IndexedDB', event );

            };


        }

get(callback: any): void

Parameters:

  • callback any

Returns: void

Calls:

  • database.transaction
  • transaction.objectStore
  • objectStore.get
  • callback
Code
function ( callback ) {

            const transaction = database.transaction( [ 'states' ], 'readonly' );
            const objectStore = transaction.objectStore( 'states' );
            const request = objectStore.get( 0 );
            request.onsuccess = function ( event ) {

                callback( event.target.result );

            };

        }

set(data: any): void

Parameters:

  • data any

Returns: void

Calls:

  • performance.now
  • database.transaction
  • transaction.objectStore
  • objectStore.put
  • console.log
  • /\d\d\:\d\d\:\d\d/.exec
  • ( performance.now() - start ).toFixed
Code
function ( data ) {

            const start = performance.now();

            const transaction = database.transaction( [ 'states' ], 'readwrite' );
            const objectStore = transaction.objectStore( 'states' );
            const request = objectStore.put( data, 0 );
            request.onsuccess = function () {

                console.log( '[' + /\d\d\:\d\d\:\d\d/.exec( new Date() )[ 0 ] + ']', 'Saved state to IndexedDB. ' + ( performance.now() - start ).toFixed( 2 ) + 'ms' );

            };

        }

clear(): void

Returns: void

Calls:

  • database.transaction
  • transaction.objectStore
  • objectStore.clear
  • console.log
  • /\d\d\:\d\d\:\d\d/.exec
Code
function () {

            if ( database === undefined ) return;

            const transaction = database.transaction( [ 'states' ], 'readwrite' );
            const objectStore = transaction.objectStore( 'states' );
            const request = objectStore.clear();
            request.onsuccess = function () {

                console.log( '[' + /\d\d\:\d\d\:\d\d/.exec( new Date() )[ 0 ] + ']', 'Cleared IndexedDB.' );

            };

        }

init(callback: any): void

Parameters:

  • callback any

Returns: void

Calls:

  • indexedDB.open
  • db.objectStoreNames.contains
  • db.createObjectStore
  • callback
  • console.error
Code
function ( callback ) {

            const request = indexedDB.open( name, version );
            request.onupgradeneeded = function ( event ) {

                const db = event.target.result;

                if ( db.objectStoreNames.contains( 'states' ) === false ) {

                    db.createObjectStore( 'states' );

                }

            };

            request.onsuccess = function ( event ) {

                database = event.target.result;

                callback();

            };

            request.onerror = function ( event ) {

                console.error( 'IndexedDB', event );

            };


        }

get(callback: any): void

Parameters:

  • callback any

Returns: void

Calls:

  • database.transaction
  • transaction.objectStore
  • objectStore.get
  • callback
Code
function ( callback ) {

            const transaction = database.transaction( [ 'states' ], 'readonly' );
            const objectStore = transaction.objectStore( 'states' );
            const request = objectStore.get( 0 );
            request.onsuccess = function ( event ) {

                callback( event.target.result );

            };

        }

set(data: any): void

Parameters:

  • data any

Returns: void

Calls:

  • performance.now
  • database.transaction
  • transaction.objectStore
  • objectStore.put
  • console.log
  • /\d\d\:\d\d\:\d\d/.exec
  • ( performance.now() - start ).toFixed
Code
function ( data ) {

            const start = performance.now();

            const transaction = database.transaction( [ 'states' ], 'readwrite' );
            const objectStore = transaction.objectStore( 'states' );
            const request = objectStore.put( data, 0 );
            request.onsuccess = function () {

                console.log( '[' + /\d\d\:\d\d\:\d\d/.exec( new Date() )[ 0 ] + ']', 'Saved state to IndexedDB. ' + ( performance.now() - start ).toFixed( 2 ) + 'ms' );

            };

        }

clear(): void

Returns: void

Calls:

  • database.transaction
  • transaction.objectStore
  • objectStore.clear
  • console.log
  • /\d\d\:\d\d\:\d\d/.exec
Code
function () {

            if ( database === undefined ) return;

            const transaction = database.transaction( [ 'states' ], 'readwrite' );
            const objectStore = transaction.objectStore( 'states' );
            const request = objectStore.clear();
            request.onsuccess = function () {

                console.log( '[' + /\d\d\:\d\d\:\d\d/.exec( new Date() )[ 0 ] + ']', 'Cleared IndexedDB.' );

            };

        }