anyboxhq / everything-okjson

Submit your feature requests or bug reports here.
https://docs.okjson.app
Apache License 2.0
10 stars 0 forks source link

Add some pre-defined plugin #23

Closed Kyle-Ye closed 1 year ago

Kyle-Ye commented 1 year ago

Add some pre-defined plugin such as https://github.com/protobufjs/protobuf.js to support pb parsing.

{
    name: "A",
    id: "0001",
    data: "Ms6BAggcKvYgCI6EisiEtuK+Y..." // Compressed Proto Buffer data String
}
Kyle-Ye commented 1 year ago

I tried to add one oneself. But failed due to some strange reason.

I download protobuf.min.js from "https://cdn.jsdelivr.net/npm/protobufjs@7.X.X/dist/protobuf.min.js" and put it into packages folder in OKJSON scripts folder.

And write the following code on my OKJSON scripts

...
$include('protobuf.min');

function main(object) {
  if (!(typeof object === 'string')) {
    $alert.modal('Error', 'Please only run this plugin with single string object')
    return
  }

  load("./idl/src/v1/lvideo_common.proto", function(err, root) {
    // Logic
  });
}

It just give me an error message saying "ReferenceError: Can't find variable: load". But it indeed was defined in the corresponding file.

francisfeng commented 1 year ago

I didn’t check for this myself. But I think you need to add protobuf or some other name space to load function.

Regarding predefined packages, I don’t think it’s a good idea.

Kyle-Ye commented 1 year ago

Regarding predefined packages, I don’t think it’s a good idea.

Got it. We already have https://docs.okjson.app/scripts/examples and https://github.com/anyboxhq/okjson-scripts. And I agree it's fine.

But one question left is that did you forget to set the permission of okjson-scripts repo to public? Looks like I can't access the repo or make a PR.

image

I didn’t check for this myself. But I think you need to add protobuf or some other name space to load function.

It seems that this is a common front-end problem on protobuf.js and has nothing to do with this app. I can use other packaged "xx.js" or "xx.min.js" normally.

The protobuf.js I download use some "prelude" to wrap it. So it will be empty on the OKJSON script side.

https://cdn.jsdelivr.net/npm/protobufjs@7.2.3/dist/protobuf.js