TurboWarp / scratch-vm

Scratch VM with a JIT compiler and more features
https://turbowarp.org/
Mozilla Public License 2.0
74 stars 71 forks source link

[low severity] `toJSON` API incompatible warning #225

Open FurryR opened 5 days ago

FurryR commented 5 days ago

https://github.com/TurboWarp/scratch-vm/blob/179030ad49683a6330f8735e81615d71bfee0150/src/virtual-machine.js#L663

Conflicts with:

https://github.com/TurboWarp/scratch-vm/commit/92c53a5a36394629e050a30bb5a87832c0663c2d

Which may cause some programs break.

Possible solution:

    /**
     * Export project or sprite as a Scratch 3.0 JSON representation.
     * @param {*} optSerializationOptions Optional id of a sprite to serialize, or the serialization option
     * @param {*} optCompatibleOptions Compatible serialization option
     * @return {string} Serialized state of the runtime.
     */
    toJSON (optSerializationOptions, optCompatibleOptions) {
        const sb3 = require('./serialization/sb3');
        let serializationOptions = optSerializationOptions;
        let targetId;
        if (typeof optSerializationOptions === 'string') {
           serializationOptions = optCompatibleOptions;
           targetId = optSerializationOptions;
        } else {
           serializationOptions = optSerializationOptions;
           if (typeof serializationOptions === 'object' && serializationOptions) targetId = serializationOptions.targetId;
        }
        return StringUtil.stringify(sb3.serialize(this.runtime, targetId, serializationOptions);
    }
GarboMuffin commented 5 days ago

do you have any examples of code that is actually broken right now that should work

FurryR commented 1 day ago

do you have any examples of code that is actually broken right now that should work

The issue mirrors from Gandi IDE's collaboration system (didn't confirm anything else broken). As it's marked as low severity, you could close this issue safely if you want.