2.3.0 • Public • Published

    The Speckle Object Loader

    Twitter Follow Community forum users website docs npm version


    Comprehensive developer and user documentation can be found in our:

    📚 Speckle Docs website

    Getting started

    This is a small utility class that helps you stream an object and all its sub-components from the Speckle Server API. It is intended to be used in contexts where you want to "download" the whole object, or iteratively traverse its whole tree.

    Here's a sample way on how to use it, pfilfered from the 3d viewer package:

    async load( { serverUrl, token, streamId, objectId } ) {
      const loader = new ObjectLoader( { serverUrl, token, streamId, objectId } )
      let total = null
      let count = 0
      for await ( let obj of loader.getObjectIterator() ) {
        if( !total ) total = obj.totalChildrenCount
        console.log( obj, `Progress: ${count++}/${total}` )

    If you do not want to process the objects one by one as they are streamed to you, you can use the getAndConstructObject() method. Here's an example:

    let loader = new ObjectLoader( {
      serverUrl: "https://latest.speckle.dev", 
      streamId: "3ed8357f29", 
      objectId: "0408ab9caaa2ebefb2dd7f1f671e7555",
      options: {
        fullyTraverseArrays: false, // Default: false. By default, if an array starts with a primitive type, it will not be traversed. Set it to true if you want to capture scenarios in which lists can have intersped objects and primitives, e.g. [ 1, 2, "a", { important object } ]
        excludeProps: [ 'displayValue', 'displayMesh', '__closure' ] // Default: []. Any prop names that you pass in here will be ignored from object construction traversal. 
    } )
    let obj = await loader.getAndConstructObject( ( e ) => console.log( 'Progress', e ) )


    If in trouble, the Speckle Community hangs out on the forum. Do join and introduce yourself! We're happy to help.


    Unless otherwise described, the code in this repository is licensed under the Apache-2.0 License. If you have any questions, don't hesitate to get in touch with us via email.


    npm i @speckle/objectloader

    DownloadsWeekly Downloads






    Unpacked Size

    21.9 kB

    Total Files


    Last publish


    • dimitrie