Please, update the following packages to make it compatible with meteor3

Please, can you update the following packages to make it compatible with meteor3 (to some of them, I put new PR):

wildhart:meteor-partitioner @wildhart

ostrio:meteor-logger-mongo

percolate:synced-cron

Thanks a lot :handshake:

synced-cron is already working in Meteor 3 in quave:synced-cron

2 Likes

Thank you @vooteles @filipenevola :heart:

I had just created PRs for ostrio:meteor-logger-mongo & ostrio:logger

Itā€™s now up to @dr.dimitru

1 Like

any working alternative package of

meteorhacks/meteor-ssr

I tried the minimal SSR code, but it did not work with dynamic data, so asking you to not reinvent the wheel

harry97:ssr

@harry97 THANKS A LOT! @dr.dimitru are you there :smiley:?

Can somebody please check and fix my PR?
I donā€™t know why the Meteor.wrapAsync() still returns Promise: update by klaucode Ā· Pull Request #3 Ā· wildhart/meteor-partitioner Ā· GitHub instead of value (method getUserGroup() update by klaucode Ā· Pull Request #3 Ā· wildhart/meteor-partitioner Ā· GitHub)

Meteor.wrapAsync() used fibers which no longer works in Meteor 3.

1 Like

We wonā€™t have a difficult migration for Meteor 2 to Meteor 3 if there was a sync magic alternative to fibers

ā€¦thanks a lot for explanation @rjdavid

Hello @rjdavid @wildhart does exists any other ā€˜partitionerā€™ package compatible with Meteor3 or can you help me please with refactoring? Thanks a lot.

Iā€™m still fighting with refactor of partitioner to Meteor3. Do you have any idea, how to solve those 2 methods, whoch I need to run synchronously or solve it somehow elsewhere?

methods.forEach(method => {
  const _orig = proto[method];
  proto[method] = function(...args) {
    if (directEnv.get()) return _orig.apply(this, args);
    // give the hooks a private context so that they can modify this.args without putting this.args onto the prototype
    const context = {args};
    const userId = getUserId();
    global.hookLogging && typeof args[0]!='string' && console.log('hook', '\n\n');

    // if the method is update or remove, automatically apply the find hooks to limit the update/remove to the user's group
    if ((method=='update' || method=='updateAsync' || method=='remove') && this._groupingBefore_find) {
      global.hookLogging && typeof args[0]!='string' && console.log('hook', 'b4i', this._name+"."+method, JSON.stringify(args[0]), JSON.stringify(args[1]));
      // don't send args[1] for update or remove.
      // need to send empty object instead to prevent args[1] being modified

// ========= THIS I NEED TO RUN SYNCHRONOUSLY OR SOLVE SOMEHOW
      this._groupingBefore_find.call(context, userId, args[0], {});


      global.hookLogging && typeof args[0]!='string' && console.log('hook', 'afi', this._name+"."+method, JSON.stringify(args[0]), JSON.stringify(args[1]));
    }

    // run the hook
    if (this['_groupingBefore_'+method]) {
      global.hookLogging && typeof args[0]!='string' && console.log('hook', 'b4', this._name+"."+method, JSON.stringify(args[0]), JSON.stringify(args[1]));

// ========= THIS I NEED TO RUN SYNCHRONOUSLY OR SOLVE SOMEHOW
      this['_groupingBefore_'+method].call(context, userId, args[0], args[1], args[2]);

      global.hookLogging && typeof args[0]!='string' && console.log('hook', 'af', this._name+"."+method, JSON.stringify(args[0]), JSON.stringify(args[1]));
    }

    // run the original method
    return _orig.apply(this, args);
  }
});

update: solved and PR waiting to review and merge