profile
viewpoint

mobxjs/mobx 22273

Simple, scalable state management.

immerjs/immer 17422

Create the next immutable state by mutating the current one

mobxjs/mobx-state-tree 5567

Opinionated, transactional, MobX powered state container combining the best features of the immutable and mutable world for an optimal DX

mobxjs/mobx-react 4519

React bindings for MobX

mobxjs/mobx.dart 1570

MobX for the Dart language. Hassle-free, reactive state-management for your Dart and Flutter apps.

immerjs/use-immer 1440

Use immer to drive state with a React hooks

mobxjs/mobx-react-devtools 1223

[DEPRECATED] Tools to perform runtime analyses of React applications powered by MobX and React

mobxjs/mobx-react-boilerplate 874

Small project to quickly start with React, MobX, JSX, ES6, Babel

mobxjs/mobx-react-todomvc 484

TodoMVC reference implementation on top of react-mobx-boilerplate

mobxjs/mobx-react-typescript-boilerplate 395

Minimal boilerplate for a single-page app using React, TypeScript, TSX, Webpack

issue commentmobxjs/mobx

strict-mode error when initializing an observable map

The fix is correct. The idea of "always" strict mode is that all state updates and creations should be done from an action, since in the mobx philosophy state updates and creation should always be done in response to some event, and hence wrapped in action.

That observable array and object (and maps) creation doesn't error is mostly to be not be too pedantic, but those should in principle happen inside actions as well.

Op vr 7 aug. 2020 04:56 schreef Chen Gang notifications@github.com:

@mweststrate https://github.com/mweststrate I made a fix. I feel free to close that PR if it's now correct. I has a question: why can the observable.array and observable.object be created?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/issues/2424#issuecomment-670307776, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBAKKWQYLKQSMKY2J4DR7N3QHANCNFSM4PXBMNQA .

mbest

comment created time in a day

issue commentmobxjs/mobx

strict-mode error when initializing an observable map

That is correct, observables should only be created in actions in always mode. Try 'observed' instead or wrap in (runIn)Action

On Thu, 6 Aug 2020, 23:43 Michael Best, notifications@github.com wrote:

Intended outcome:

Just like initializing an observable object or array, a map can be initialized outside an action.

Actual outcome:

A strict-mode error is thrown.

How to reproduce the issue:

https://codesandbox.io/s/gifted-meninsky-pf8ql?file=/index.js

import { configure, observable } from 'mobx' configure({ enforceActions: "always",}); export const testMap = observable.map([ ["item", "text"]]);

Versions

MobX 4.15.4

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/issues/2424, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBCN3HMFD2J4GSUEAE3R7MWYBANCNFSM4PXBMNQA .

mbest

comment created time in 2 days

issue commentmobxjs/mobx

Breaking change in 5.15.5?

https://github.com/mobxjs/mobx-state-tree/blob/4407fce1d572ad54ac121d6887ea652ef8a18b98/packages/mobx-state-tree/src/types/complex-types/array.ts#L129

On Thu, 6 Aug 2020, 23:06 urugator, notifications@github.com wrote:

How do I create array with enhancer/dehancer?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/issues/2423#issuecomment-670214902, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBCS3SPUZQVJQIGLUSTR7MSNPANCNFSM4PWB6ZAA .

austinbutler

comment created time in 2 days

issue commentmobxjs/mobx

Breaking change in 5.15.5?

Eh yeah I guess 🙂. Anyway it seems that map receives a still boxed value in that example somehow.

Op do 6 aug. 2020 22:28 schreef urugator notifications@github.com:

@mweststrate https://github.com/mweststrate filter returns new non-observable array, so the map isn't called on observable array ... or?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/issues/2423#issuecomment-670201036, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBFJVY2YD4FQQBFFT3TR7MN7BANCNFSM4PWB6ZAA .

austinbutler

comment created time in 2 days

issue commentfacebook/flipper

Discussion: Persist the Network data to local storage in Network Plugin

Makes me wonder whether we shouldn't keep the app around after disconnecting, just like is done with entire devices if they disconnect🧐

bizzguy

comment created time in 2 days

issue commentfacebook/flipper

Flipper Layout plugin freezes apps in some cases when using Modals

@priteshrnandgaonkar do you have any ideas on this one? Seems to be iOS/ComponentKit specific if I understand the issue correctly, and IIRC there were some changes related to registering root views with Flipper a while back?

djMax

comment created time in 2 days

issue commentmobxjs/mobx

Breaking change in 5.15.5?

So this probably affects mobx-state-tree users only, as that is afaik the only thing using dehancers.

austinbutler

comment created time in 2 days

issue commentmobxjs/mobx

Breaking change in 5.15.5?

@urugator would you mind taking a look at this one? From the console logs in https://codesandbox.io/s/hidden-snowflake-2clmz?file=/src/Models.ts, at first sight it looks like the dehancer is not applied with for the .map of observable array, (it seems to be applied to the filter), so I guess the result from filter is not dehanced in #2348?

austinbutler

comment created time in 2 days

pull request commentmobxjs/mobx

docs: modify little nits

I think it is fine for now since v6 is underway anyway and can be closed

On Thu, Aug 6, 2020 at 3:48 PM Chen Gang notifications@github.com wrote:

I just noticed this pr is against master. Since the docs are being completely refactored now in the v6 branch, would you mind checking if the changes are still applicable there?

I checked document of v6. There is no case in v6. @mweststrate https://github.com/mweststrate Do you think the fix for v5 is necessary? If it's not necessary, I will close the PR.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/pull/2411#issuecomment-669974595, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBED3YVGBFCK3G7HV3LR7K7CHANCNFSM4PH4XRHA .

MoonBall

comment created time in 2 days

startedtwop/ts-union

started time in 2 days

issue commentmobxjs/mobx-react-lite

The `useAsObservableSource` is causing React warning

Yeah, the biggest problem is here indeed that unlike with classes, we don't have a this that can own an observable props object that is / can be updated outside render. Random thought: maybe it might be interesting to see if we can make an api where this asObservabelSource is basically pulled outside the render. E.g.

export const Comp = observer(props => /* constract an observable object here */, observableProps => {
  // normal render
})

or make the props directly observable directly anyway in the HoC. There was a problem with that, but I don't remember anymore what exactly :) I'm going on holiday tomorrow, but I see if I can recall it after that.

SidKwok

comment created time in 2 days

issue commentmobxjs/mobx-react-lite

The `useAsObservableSource` is causing React warning

Yeah, it is clear to me how the warning is caused :) It just makes me wonder, is asAsObservableSource the right solution, or do we need a different abstraction (e.g. a hoc, wrapper, dunno). That is why I'm interested in more real life use cases like the router one, rather than minimal repo's (which in turn are better to verify the solution). The risk with any useEffect based solution is that it might easily cause double renders. That in turn is probably fixable, just want to zoom out a bit first and make sure, before we start piling fixes / workarounds, that we're working in the right direction.

On Thu, Aug 6, 2020 at 10:04 AM Björn Zeutzheim notifications@github.com wrote:

@mweststrate https://github.com/mweststrate as for a mobx-react-lite related example you can check my comment at the top https://github.com/mobxjs/mobx-react-lite/issues/274#issuecomment-652958242 and this comment https://github.com/mobxjs/mobx-react-lite/issues/274#issuecomment-653524231 for a general demonstration of where this problem originates from.

To sum it up, react now says that calling setState of a different component from within the rendering of one component is regarded as an error. It still works right now, but I guess they did this because it will fail in the future with react concurrent mode.

Right now this error will always occurr when the observable from useAsObservableSource is used in any other component than the current. This is because inside the hook it will update the observable object and if any other component depends on one of those values, it will be forceUpdated via setState while still rendering the current component.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx-react-lite/issues/274#issuecomment-669807151, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBFFZT5F4HO7T2XARMDR7JWYPANCNFSM4MD5D7QQ .

SidKwok

comment created time in 2 days

issue commentmobxjs/mobx

Breaking change in 5.15.5?

@austinbutler, please do provide a reproduction. Without this issue is inactionable.

austinbutler

comment created time in 2 days

issue closedmobxjs/mobx

observe's side effect triggered only once if the mutation is inside another observe's side effect

var obj = mobx.observable({ arr: [{}, {}, {}] });

mobx.observe(mobx.computed(() => obj.arr.map(x => x.foo)), ({ newValue }) => {
    console.log(newValue);
});

var trigger = mobx.observable({ flag: false });

mobx.observe(mobx.computed(() => trigger.flag), _ => {
    obj.arr.forEach((x, i) => { x.foo = 'bar'; });
});

trigger.flag = true;

Please consider the codes above. Expected console.log(newValue); will be triggered 3 times since items in obj.arr have been mutated 3 times. However, it has been triggered once only.

In contrasted with the codes below

var obj = mobx.observable({ arr: [{}, {}, {}] });

mobx.observe(mobx.computed(() => obj.arr.map(x => x.foo)), ({ newValue }) => {
    console.log(newValue);
});

var trigger = mobx.observable({ flag: false });

obj.arr.forEach((x, i) => { x.foo = 'bar'; });

console.log(newValue); has been triggered 3 times as expected.

May I know if this is by design?

Version: https://unpkg.com/mobx@5.15.4/lib/mobx.umd.js

closed time in 2 days

mannok

issue commentmobxjs/mobx

observe's side effect triggered only once if the mutation is inside another observe's side effect

Closing for now as this is an anti-pattern, and the real-life use case is unclear.

mannok

comment created time in 2 days

issue commentmobxjs/mobx-react-lite

The `useAsObservableSource` is causing React warning

Out of curiosity, what is the real scenario in which the warning occurs. I always thought as the hook solving issues with locally derived values (like having a @computed field on a class component), not so much with shared once. Not saying the problem doesn't need fixing, but want to understand the bigger pic better first.

Op do 6 aug. 2020 00:53 schreef Björn Zeutzheim notifications@github.com:

I thought of this as well but I thought it would not work, because the component which has to receive the forceUpdate might be a different one than the one that was rendered.

However from what I can see you circumvented this by introducing that global forceUpdate queue which then gets executed inside the currently rendering component's useEffect.

This looks really promising and would not require hijacking the reactionScheduler. I could try writing up a PR with this solution or you could try it as well if you want to.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx-react-lite/issues/274#issuecomment-669603587, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBFJW4XYTBWERHGGQSDR7HWH5ANCNFSM4MD5D7QQ .

SidKwok

comment created time in 3 days

issue commentmobxjs/mobx

Is there a way to defer sideEffect to "next tick/cycle"?

Closing since answered

mannok

comment created time in 3 days

issue closedmobxjs/mobx

Is there a way to defer sideEffect to "next tick/cycle"?

var obj = mobx.observable({
    scalar: 0
});

mobx.observe(obj, 'scalar', ({ newValue }) => {
    console.log(`watch mutation: ${newValue}`);
});

mobx.observe(obj, 'scalar', ({ newValue }) => {
    //mobx.nextTick(() => {
    //    console.log(`ensure some operation which will be done after above observe()`);
    //});
});

obj.scalar = 1;

Please consider the codes above. In some ocassion, I would like to perform an operation after side effects of current cycle. I know I can achieve it with setTimeout(() => {...}, 0), but obviously this is not a good approach.

May I know if there a way to achieve it with built-in function in order to make sure the operation can be run immediately after side effects of this cycle?

closed time in 3 days

mannok

issue commentmobxjs/mobx

ES 2020 build

If someone wants to organize it on the mobx6 branch, contributions welcome.

KishanBagaria

comment created time in 3 days

issue closedmobxjs/mobx

ES 2020 build

We target the latest browsers that support all modern JavaScript features. We're currently using the ES6 build (node_modules/mobx/lib/mobx.es6.js) of mobx.

Can you also publish a build targeted at the latest JavaScript version? It'll result in better compression and faster performance. Instagram ships modern bundles to modern browsers.

closed time in 3 days

KishanBagaria

issue closedmobxjs/mobx

Typescript 3.9 breaks getters in extendObservable

Typescript 3.9 introduced a sneaky breaking change regarding the way getter are emitted by setting enumerable: false instead of enumerable: true (associated PR here).

This causes extendObservable to ignore properties defined as getters in its second parameter, like that :

const obs = extendObservable({a: 2, b: 3}, { get c() { return a + b; });
obs.c // undefined (!!)

I'm a bit surprised that no one has yet reported this, it literally broke my entire app once I upgraded.

I'm not sure how this can be mitigated : how can extendObservable enumerate the properties to add if they aren't actually enumerable?

closed time in 3 days

JabX

issue commentmobxjs/mobx

Typescript 3.9 breaks getters in extendObservable

Fixed and released as (4/5).14.5

JabX

comment created time in 3 days

push eventmobxjs/mobx

Michel Weststrate

commit sha 9bc32ddf0ea989fc93098be6a7305568f6b93b4e

Deploy website Deploy website version based on 6c94f9409b489a455fdf4b20310fea8be8e8cdbf

view details

push time in 3 days

push eventmobxjs/mobx

Michel Weststrate

commit sha e13ecac9bbae1b048b060cf4eb955d712c3bb9da

Prepared 5.15.4

view details

Michel Weststrate

commit sha 6c94f9409b489a455fdf4b20310fea8be8e8cdbf

Published version X.15.5

view details

push time in 3 days

push eventmobxjs/mobx

Michel Weststrate

commit sha f6b65b0f87bdc3dd40bab6908c1bc83155292438

`reaction` effect now receives the previous value as second argument

view details

push time in 3 days

issue closedmobxjs/mobx

MobX converts Array empties to nulls

I have a:

  1. [X] Issue:
  • [X] Provide a minimal sample reproduction. Create a reproduction based on this sandbox
  • [X] Did you check this issue wasn't filed before?
  • [X] Elaborate on your issue. What behavior did you expect?
  • [X] State the versions of MobX and relevant libraries. Which browser / node / ... version?

This is a fairly obscure issue and might be endemic to what MobX does, but I thought I'd bring it up anyway.

The following is what happens with a regular array:

var arr = new Array(4)
var nonEmptyCount = Object.entries(arr).length
console.log(nonEmptyCount)
// <- 0

And this is what happens with a MobX (observable) array:

@observable arr = new Array(4)
...
var nonEmptyCount = Object.entries(this.arr).length
console.log(nonEmptyCount)
// <- 4

This seems to happen because the observable array becomes [ null, null, null, null ] instead of [empty x 4]. It can be worked around, but I didn't see it mentioned in the docs and in some obscure edge cases like mine it can cause problems.

Live example: https://codesandbox.io/s/n31prxmj9j

Interesting note: the sandbox started out on MobX version 4 and the issue didn't happen there.

Google Chrome 69 MobX version 5.1.2

closed time in 3 days

bsmith-cycorp

issue commentmobxjs/mobx

MobX converts Array empties to nulls

Seems to be accidentally fixed in v6: https://codesandbox.io/s/minimal-mobx-react-project-jnuev?file=/index.js

bsmith-cycorp

comment created time in 3 days

issue closedmobxjs/mobx

Document better differences between observe/reaction/autorun

I think this is a piece of very valuable information here and should be incorporate in docs in some way.

Originally posted by @urugator in https://github.com/mobxjs/mobx/issues/2222#issuecomment-561233503

Naming is a bit misleading, in short: observe has nothing to do with autorun/reaction/action etc. onBecomeObserved only relates to autorun/reaction. The mobx is designed around autorun/reaction. The observe is just something extra, it uses completely different (very trivial) logic and isn't actually very useful (arguably). For illustration, this is a setter for simple observable value (observable.box()): https://github.com/mobxjs/mobx/blob/c4131f1f008330ecd1fc3d9c5f1603b52760a82e/src/types/observablevalue.ts#L107-L119 this.reportChanged() relates to propagating a change through dependency graph, created by reaction/autorun. notifyListeners simply invoke callbacks registered via observe.

onBecomeObserved is invoked when a node is attached as a child of another node inside a dependency graph. It doesn't care about listeneres attached with observe (internally registerListener).

onBecomeObserved/autorun/reaction/action works with IObservable observe, despite it's name, works with IListenable

Ok so, how you're supposed to use reaction/autorun: Do not think about detecting changes/diffs. Think about what you want to do with your model. Whatever you want to do, it must be wrapped inside "subscription" function - either autorun or reaction (it's first arg) The difference is that reaction produces some value and calls another function (second arg) with value provided as argument.

Let's say you want to print model to console using reaction. Why following doesn't work:

reaction(() => items, () => {
  console.log(items);
});

Because printing model means to "stringify it" first and then send it to stdout. The stringification process determines which parts of the model are actually needed. Therefore it must be part of the "subscription" function. What you want to "subscribe for" very much depends on "what you want to print". Eg if you would change the implementation of console.log to only print the first item of items, then we are not interested in changes of other items. So it should be like this:

reaction(() => stringify(items), string => console.log(string));

The implementation of stringify function is non-trivial, so in practice you could workaround it like:

reaction(() => toJS(items), copy => console.log(copy));

However, it presumes that you need a whole items object for console.log operation, which is not neccessarily true as noted previously.

Note the difference between autorun/reaction

// prints anytime items are modified
autorun(() => console.log(items));
// prints only if the string actually changed
reaction(() => stringify(items), string => console.log(string));

At this point you may have noticed, that Mobx works with discrete observable units called Atoms. Eg. an observable array of 10 items is basically a collection of 10 atoms + 1 atom representing size. Similary objects have one atom per property. You cannot subscribe for (observe) an array/object/map as a whole, you can only subscribe for (observe) these individuals atoms. Therefore onBecomeObserved expects such single atom (or computed). However you can expose the array via another "atom/computed" and use it instead:

const store = observable({
  array: [],  
})
onBecomeObserved(store, "array", () => console.log("array is being consumed by someone"));
// (the object's property is the atom representing the array)

Obviously you have to make sure, that you can't get access to the array without accessing(subscribing) the store property (store.array) along the way.

closed time in 3 days

FredyC

issue commentmobxjs/mobx

Document better differences between observe/reaction/autorun

Closing the issue since nobody cared about it enough to pick it up, and docs are now largely refactor in v6

FredyC

comment created time in 3 days

push eventmobxjs/mobx

phiresky

commit sha e0e4dcb553a25637cb9a0d2203556f788e3dbeb9

Strongly type spy()

view details

phiresky

commit sha c62c75877c02f334f9923a637347055fad2cfce2

unify spy() and observe API

view details

phiresky

commit sha 22da984195a20e8a3d09236e6f102f254ff70aa3

update snapshots

view details

phiresky

commit sha 0454f20567d68b031622c461bf5530ca980cfa6b

rename debugObjectName in observe events, update tests

view details

phiresky

commit sha 8de95d9e7854d20a7527dae18c181c48f85c6858

remove dupe in spy docs

view details

Michel Weststrate

commit sha 68ad0debd82f6e5e78841d7c43e36d035d96584b

Merge branch 'add-spy-typings' of https://github.com/phiresky/mobx into phiresky-add-spy-typings

view details

Michel Weststrate

commit sha 6985f793244780acecf6a4d755437f14b41f5575

Merge branch 'phiresky-add-spy-typings' into mobx6

view details

push time in 3 days

PR merged mobxjs/mobx

Strongly type spy and unify observe/spy interfaces

I've updated the spy docs, and fixed the tests.

I've also changed the semantics from the previous PR, such that the obserableKind property is only emitted for spy() events not for observe() or intercept() ones. I'd have preferred to have it in observe/intercept too, but I think there's some inconsistency(?) in that events such as IArrayWillChange are reported to observe() but not to spy, so I didn't feel comfortable adding or changing those too much.

<a href="https://gitpod.io/#https://github.com/mobxjs/mobx/pull/2398"><img src="https://gitpod.io/api/apps/github/pbs/github.com/phiresky/mobx.git/8de95d9e7854d20a7527dae18c181c48f85c6858.svg" /></a>

+664 -310

3 comments

31 changed files

phiresky

pr closed time in 3 days

Pull request review commentmobxjs/mobx

docs: modify little nits

 message.likes.push("Jennifer") ```  This will react with the above sample data, array indexers count as property access. But **only** if the provided `index < length`.-MobX will not track not-yet-existing indices or object properties (except when using maps).

yeah, this is old and only applies to non proxy environments, so the change is correct.

MoonBall

comment created time in 3 days

Pull request review commentmobxjs/mobx

docs: modify little nits

 autorun(() => { message.likes[2] = "Jennifer" ``` -This will react as expected. All array index assignments are detected, but only if `index <= length`.+This will react as expected. All array index assignments are detected, but only if `index < length`.

This was correct, see https://github.com/mobxjs/mobx/blob/e9986766844c1da5cb337b8e88934ac0d4b81aa9/src/v5/types/observablearray.ts#L458, an assignment like ar[ar.length] = x will be interpreted as a push

MoonBall

comment created time in 3 days

push eventmobxjs/mobx

Chen Gang

commit sha 7b77af2a7bac595e031a3f870fee6b6732cf519a

cache getKeys() of ObservableObjectAdministration (#2410) * cache getKeys() of ObservableObjectAdministration * Avoid user modification

view details

push time in 3 days

PR merged mobxjs/mobx

cache getKeys() of ObservableObjectAdministration

<!-- Thanks for taking the effort to create a PR! 🙌

🚨🚨🚨 IMPORTANT NOTICE 🚨🚨🚨

Next major of MobX V6 is under development. Try to direct all changes toward `mobx6` branch instead of `master`.

🚨🚨🚨 IMPORTANT NOTICE 🚨🚨🚨

👋 Are you making a change to documentation only? Delete the rest of the template and go ahead.

👋 If you are creating an extensive PR, you might want to open an issue with your idea first in case there is a chance for rejecting it.

👋 If you intend to work on PR over several days, please, create [draft pull requests](https://github.blog/2019-02-14-introducing-draft-pull-requests/) instead.

👇 Please look at the following checklist to ensure that your PR can be accepted quickly:

-->

Code change checklist

  • [ ] Added/updated unit tests
  • [ ] Updated changelog
  • [ ] Updated /docs. For new functionality, at least API.md should be updated
  • [x] Verified that there is no significant performance drop (npm run perf)

<!-- Feel free to ask help with any of these boxes! --> I made the PR to cache getKeys() of ObservableObjectAdministration. When I run yarn test, the program hit the cache 91 times.

<a href="https://gitpod.io/#https://github.com/mobxjs/mobx/pull/2410"><img src="https://gitpod.io/api/apps/github/pbs/github.com/MoonBall/mobx.git/3b93bd0fdd70ebd8b21ea8cae02c1da39f0e7101.svg" /></a>

+18 -5

1 comment

1 changed file

MoonBall

pr closed time in 3 days

push eventmobxjs/mobx

Chen Gang

commit sha e9986766844c1da5cb337b8e88934ac0d4b81aa9

extendObservable can be used late and support non-enumerable getters. (#2412) * extendObservable can be used late and support non-enumerable getters. * The default value of enableNonEnumerablePropertiesInExtendObservable is true * supprot non-enumerable properties for v4 * no `for of` in v4

view details

push time in 3 days

PR merged mobxjs/mobx

extendObservable can be used late and support non-enumerable getters.

<!-- Thanks for taking the effort to create a PR! 🙌

🚨🚨🚨 IMPORTANT NOTICE 🚨🚨🚨

Next major of MobX V6 is under development. Try to direct all changes toward `mobx6` branch instead of `master`.

🚨🚨🚨 IMPORTANT NOTICE 🚨🚨🚨

👋 Are you making a change to documentation only? Delete the rest of the template and go ahead.

👋 If you are creating an extensive PR, you might want to open an issue with your idea first in case there is a chance for rejecting it.

👋 If you intend to work on PR over several days, please, create [draft pull requests](https://github.blog/2019-02-14-introducing-draft-pull-requests/) instead.

👇 Please look at the following checklist to ensure that your PR can be accepted quickly:

-->

Code change checklist

  • [x] Added/updated unit tests
  • [ ] Updated changelog
  • [ ] Updated /docs. For new functionality, at least API.md should be updated
  • [x] Verified that there is no significant performance drop (npm run perf)

<!-- Feel free to ask help with any of these boxes! --> Fix https://github.com/mobxjs/mobx/issues/2386 on v5.

<a href="https://gitpod.io/#https://github.com/mobxjs/mobx/pull/2412"><img src="https://gitpod.io/api/apps/github/pbs/github.com/MoonBall/mobx.git/2ad012c3280f334d3cb0d9c906722eb8194d1f2a.svg" /></a>

+57 -3

5 comments

5 changed files

MoonBall

pr closed time in 3 days

issue commentmobxjs/serializr

Async custom deserialization: is the function type definition correct?

@NaridaL, agreed. I had in my memory the vague idea that you could return a promise there, and if you did, that it would make the entire process async. If that isn't the case it should stay async indeed. If it is es-lint complaining, not TS, I wouldn't further bother about it. It can be suppressed by a simple ignore line, and there is really no way in general to make eslint happy for everybody everywhere with all the pedantic rules it can have.

Dar0n

comment created time in 3 days

issue commentfacebook/flipper

Flipper plugins doesn't show on Windows 10

@b3coded nope, sorry, missed that this is a win 10 specific issue. I don't have a windows machine at my disposal in the current circumstances. Maybe @nikoant has ideas?

b3coded

comment created time in 3 days

pull request commentmobxjs/mobx

[WIP] MobX 6

Yes. The only benefit with decorators is that you don't need to supply that second argument.

On Wed, Aug 5, 2020 at 3:17 PM Daniel Ferreira Monteiro Alves < notifications@github.com> wrote:

Looks you are missing makeObservable(this) in the constructor … <#m_5420567158091973673_> On Wed, Aug 5, 2020 at 2:47 PM Daniel Ferreira Monteiro Alves < @.***> wrote: @mweststrate https://github.com/mweststrate <@mweststrate https://github.com/mweststrate> I found the problem, so it's not an issue with Mobx, but, on the other hand, it looks like we have a problem. stackblitz.com/edit/react-ts-bfwmuf The decorator for action.bound stopped working. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#2327 (comment) https://github.com/mobxjs/mobx/pull/2327#issuecomment-669203726>, or unsubscribe < github.com/notifications/unsubscribe-auth/AAN4NBFGVGI3X2SPMJN6PQTR7FPILANCNFSM4MGNIDZA> .

Should I use the makeObservable even if I'm just applying the decorators? If that is the case, that is a simple change.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/pull/2327#issuecomment-669220158, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBCR4VAQTP4J2H6SBFDR7FSZJANCNFSM4MGNIDZA .

mweststrate

comment created time in 3 days

issue commentfacebook/flipper

Flipper plugins doesn't show on Windows 10

@b3coded I just cloned the repo and it works ootb for me. I suspect that your emulator is somehow set up differently? Honestly I'm not too familiar with the Android eco system, maybe @jknoxville or @passy have ideas here?

Screen Shot 2020-08-05 at 15 17 54

b3coded

comment created time in 3 days

issue commentmobxjs/serializr

Async custom deserialization: is the function type definition correct?

I'm not to familiar with that code anymore, but I probably the acceptable return types should be updated as suggested above, making it possible to use async functions.

On Wed, Aug 5, 2020 at 2:32 PM Ilya notifications@github.com wrote:

@NaridaL https://github.com/NaridaL @mweststrate https://github.com/mweststrate Thank you for a fast reply! I think I actually managed to rewrite the deserialize function according to Adrian's suggestion and it seems to work(fingers crossed).

However, in general we try to use async/await syntax in our codebase. @mweststrate https://github.com/mweststrate I used await inside deserialize function, hence I had to declare the whole function as async. Hence the error message. Do you reckon, I could also leave it async and add some typescript casting?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/serializr/issues/136#issuecomment-669195284, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBEJCFS5NFPLJVIOB7DR7FNNBANCNFSM4PVNEIIA .

Dar0n

comment created time in 3 days

pull request commentmobxjs/mobx

[WIP] MobX 6

Looks you are missing makeObservable(this) in the constructor

On Wed, Aug 5, 2020 at 2:47 PM Daniel Ferreira Monteiro Alves < notifications@github.com> wrote:

@mweststrate https://github.com/mweststrate I found the problem, so it's not an issue with Mobx, but, on the other hand, it looks like we have a problem.

https://stackblitz.com/edit/react-ts-bfwmuf

The decorator for action.bound stopped working.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/pull/2327#issuecomment-669203726, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBFGVGI3X2SPMJN6PQTR7FPILANCNFSM4MGNIDZA .

mweststrate

comment created time in 3 days

issue commentmobxjs/serializr

Async custom deserialization: is the function type definition correct?

It might be that the returned promise is chained upon, which would break with the above? Probably any casting the returned promise is safer is it doesn't change the runtime semantics

On Wed, Aug 5, 2020 at 1:55 PM Adrian Leonhard notifications@github.com wrote:

Maybe changing the signature to => void | Promise<void> would be sensible yeah...

In any case you can use the current version by not making deserialize async and doing something like:

(value, context, oldValue, callback) =>{ myPromise.then(result => callback(undefined, result)) }

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/mobxjs/serializr/issues/136#issuecomment-669176558, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBFF3BGMWVPLQHZI6LDR7FJFVANCNFSM4PVNEIIA .

Dar0n

comment created time in 3 days

issue commentfacebook/flipper

Flipper plugins doesn't show on Windows 10

@b3coded could you check the steps from the troubleshooting guide https://fbflipper.com/docs/troubleshooting#q-i-see-my-device--emulator-but-i-cant-see-the-app? If it is still an issue after that, see if there are Flipper related logs, and share your gradle build files and ReactNativeFlipper.java file and path, and MainApplication.java as well?

Please do verify that the Class.forName in the latter actually results in a class.

b3coded

comment created time in 3 days

issue commentmobxjs/mobx-react-lite

The `useAsObservableSource` is causing React warning

@olee if you want us to take a look at it, please open PR based on your fork, otherwise we're missing all the review tooling.

SidKwok

comment created time in 3 days

issue commentmobxjs/mobx

Typescript type of `values` from a mobx-state-tree map seems wrong.

Confirmed, it looks like the type signature of values in mobx should also have overloads for plain ReadonlySet,ReadonlyMap and ReadonlyArray to correct this.

rluiten

comment created time in 3 days

push eventmobxjs/mobx

Michel Weststrate

commit sha 1d158694e484b0a62c8aa2379785d135cdab6c17

Cleaned up main menu, merged some pages

view details

push time in 4 days

pull request commentmobxjs/mobx

[WIP] MobX 6

Classes dont use proxies in MobX. Might be the updated define fields semantics in Babel / TS. If you can set up simple sandbox I could take a look at it.

On Tue, 4 Aug 2020, 21:52 Daniel Ferreira Monteiro Alves, < notifications@github.com> wrote:

It looks like the proxies (probably) have broken the integration with the serializr library. So, it should be better to put some notes about that on the documentation too. What do you think?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/pull/2327#issuecomment-668819289, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBAF2XYQHQWVL4PLW4LR7BYJ5ANCNFSM4MGNIDZA .

mweststrate

comment created time in 4 days

Pull request review commentmobxjs/mobx

extendObservable can be used late and support non-enumerable getters.

 export function extendObservable<A extends Object, B extends Object>(     asObservableObject(target, options.name, defaultDecorator.enhancer) // make sure object is observable, even without initial props     startBatch()     try {-        for (let key in properties) {

@MoonBall good one, no for extendObservable that should be match. However, If I remember correctly the downlevel compilation of for of loops is problematic with MobX 4, which might run in environments without iterators. Would you mind changing it to a .forEach or class for(;;) loop?

MoonBall

comment created time in 4 days

issue commentfacebook/flipper

Flipper plugins doesn't show on Windows 10

Ok, could you check if there are any Flipper errors / warnings in the device logs (in Flipper under your device) ?

On Tue, Aug 4, 2020 at 7:45 PM João Alves notifications@github.com wrote:

@mweststrate https://github.com/mweststrate yes, it is synchronized

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/facebook/flipper/issues/1440#issuecomment-668762867, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBA45F2HAPUEVM56PTLR7BJNZANCNFSM4PUV6COQ .

b3coded

comment created time in 4 days

pull request commentmobxjs/mobx-state-tree

Add experimental union & compose type helpers

LGTM at first sight. Do you know any downsides of this approach? If you don't know about any, and not tests fail, I'd just make it the standard rather than creating an alternative API :)

I expect btw with the upcoming variadic tuples, quite some overloads of other api's can be cleaned up as well: https://devblogs.microsoft.com/typescript/announcing-typescript-4-0-beta/#variadic-tuple-types

Bnaya

comment created time in 4 days

issue commentfacebook/flipper

Flipper plugins doesn't show on Windows 10

Quick check, is your device time in sync with your computer time? Otherwise the certificate handshake will fail.

On Tue, Aug 4, 2020 at 7:40 PM João Alves notifications@github.com wrote:

🐛 Bug Report

I'm running Flipper on Windows 10 but I can't see the native plugins (Layout Inspector, Databases, Network...)

I tried the troubleshooting guides but the problem was not resolved

[image: WhatsApp Image 2020-08-04 at 15 20 13] https://user-images.githubusercontent.com/38642628/89330592-e11cf100-d666-11ea-9dc6-47d9b55c1a2b.jpeg FlipperDiagnosticActivity screenshot To Reproduce

  1. Initialize a new React Native Project
  2. Run Flipper
  3. Try to debug app with Flipper

Environment

Flipper: tested from 0.47 to 0.52

System:

OS: Windows 10 10.0.18363

CPU: (4) x64 Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz

Memory: 3.75 GB / 11.88 GB

Binaries:

Node: 12.18.3 - C:\Program Files\nodejs\node.EXE

Yarn: 1.22.4 - C:\Program Files\nodejs\yarn.CMD

npm: 6.14.6 - C:\Program Files\nodejs\npm.CMD

Watchman: 20200726.234435.0 - C:\Users\jneto\env\watchman-v2020.07.27.00-windows\bin\watchman.EXE

Utilities:

Git: 2.24.1.

SDKs:

Android SDK:

  API Levels: 23, 27, 28, 29

  Build Tools: 25.0.0, 25.0.1, 27.0.3, 28.0.3, 29.0.2, 29.0.3

  System Images: android-R | Google Play Intel x86 Atom

Windows SDK:

  AllowDevelopmentWithoutDevLicense: Enabled

  AllowAllTrustedApps: Enabled

  Versions: 10.0.18362.0

IDEs:

Android Studio: Version  4.0.0.0 AI-193.6911.18.40.6514223

VSCode: 1.47.3 - C:\Users\jneto\AppData\Local\Programs\Microsoft VS Code\bin\code.CMD

Visual Studio: 16.6.30204.135 (Visual Studio Community 2019)

Languages:

Bash: 4.4.20 - C:\Windows\system32\bash.EXE

Go: 1.14.6 - C:\Go\bin\go.EXE

Elixir: 1.10.3 - C:\Program Files (x86)\Elixir\bin\elixir.BAT

Erlang: 21.3 - C:\Program Files\erl10.3\bin\erl.EXE

Python: 2.7.15

Databases:

SQLite: 3.28.0 - C:\Sdks\android\platform-tools\sqlite3.EXE

Browsers:

Chrome: 84.0.4147.105

Edge: Spartan (44.18362.449.0)

Internet Explorer: 11.0.18362.1

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/facebook/flipper/issues/1440, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBBPBVPPSBYPO5T3B7LR7BI2BANCNFSM4PUV6COQ .

b3coded

comment created time in 4 days

issue commentmobxjs/mobx

🚀 Proposal: MobX 6: 🧨drop decorators,😱unify ES5 and proxy implementations, 💪smaller bundle

Yeah, that is exactly one of my few remaining todo's to investigate for 6 :) I think the biggest annoyance will be that the inferred return type in TypeScript will be incorrect (X instead of Promise<X>)

On Mon, Aug 3, 2020 at 10:29 PM Ash Connell notifications@github.com wrote:

Is MobX 6 an opportunity to make async actions part of the core api? Eg makeObservable and makeAutoObservable can convert generators to async actions (ala flow())?

It's always felt weird to define async actions differently to everything else:

class Auth {

  • login() { this.user = yield api.post('/login', { /.../ }) }

constructor() { makeObservable(this, { login: flow, }) // ... or ... makeAutoObservable(this) }}

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/issues/2325#issuecomment-668250980, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBHMGD67DZZ2SWMB5STR64T2XANCNFSM4LZQ2B5Q .

mweststrate

comment created time in 5 days

push eventmobxjs/mobx

Michel Weststrate

commit sha b57851cb0e897e1cb5c9fa583108632f2ef966af

Finished mobx-react integration

view details

push time in 5 days

issue commentmobxjs/mobx

Is there a way to defer sideEffect to "next tick/cycle"?

There is no mechanism for that. If the effect must run later than the others, it sounds like it is not a stand alone side effect. It'd be good to check your reaction against those principles: https://deploy-preview-2327--mobx-docs.netlify.app/refguide/autorun.html#use-reactions-sparingly

On Mon, Aug 3, 2020 at 5:03 PM Xanthus Wong notifications@github.com wrote:

@mweststrate https://github.com/mweststrate thanks. Then what should I do to ensure a reaction to run at last among all other reactions which have the same data function?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/issues/2419#issuecomment-668105006, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBDCWPDH6NMS4IRMTNDR63NVTANCNFSM4PTNQWAA .

mannok

comment created time in 5 days

issue commentmobxjs/mobx

Is there a way to defer sideEffect to "next tick/cycle"?

I think reaction (or autorun) is what you are looking for here. They automatically postpone till the end of the current outermost action (rather than firing immediately), and support throttling or custom schedulers. (observe is a really low level api and should typically not be needed)

On Mon, Aug 3, 2020 at 3:59 PM Xanthus Wong notifications@github.com wrote:

var obj = mobx.observable({ scalar: 0 });

mobx.observe(obj, 'scalar', ({ newValue }) => { console.log(watch mutation: ${newValue}); });

mobx.observe(obj, 'scalar', ({ newValue }) => { //mobx.nextTick(() => { // console.log(ensure some operation which will be done after above observe()); //}); });

obj.scalar = 1;

Please consider the codes above. In some ocassion, I would like to perform an operation after side effects of current cycle. I know I can achieve it with setTimeout(() => {...}, 0), but obviously this is not a good approach.

May I know if there a way to achieve it with built-in function in order to make sure the operation can be run immediately after side effects of this cycle?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/issues/2419, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBH7PEPKKG4T6OLYRIDR63GGLANCNFSM4PTNQWAA .

mannok

comment created time in 5 days

issue commentfacebook/flipper

Discussion: add "Delete row" option for Database plugin

@jhalak27 looks it is going to be picked up by @McZenith? So best figure amongst yourselves whether it is still available :)

But getting started should be quite straightforward:

  1. clone this repo
  2. run yarn in the desktop/ folder
  3. run yarn start (or yarn start --fast-refresh) to run flipper locally and test any of your changes :). Plugin code can be found in desktop/plugins/
vkotovv

comment created time in 5 days

issue commentfacebook/flipper

flipper: Desktop failed to provide certificates

Comments on closed issues are rarely seen by anybody, and typically don't result in any help. Please open a new issue if you want to report an issue. Only comment on closed issues with comments that are somehow helpful to people that find them through search, such as an alternative solution.

maxim-pandra

comment created time in 5 days

issue commentmobxjs/mobx

🚀 Proposal: MobX 6: 🧨drop decorators,😱unify ES5 and proxy implementations, 💪smaller bundle

@episage the original idea for MobX 6 was to have them separate indeed, in MobX 5 the decorator implementation size was signficant (3 times; TS, Babel, and decorate). But with makeObservable the decorator implementations have become so simple that the overhead code from separating it out and the additional complexity isn't worth it, since the implementation is now basically just https://github.com/mobxjs/mobx/blob/mobx6/src/api/decorators.ts, once minified the amount of code added by it can be measured in few hundred bytes.

mweststrate

comment created time in 5 days

issue commentmobxjs/mobx

🚀 Proposal: MobX 6: 🧨drop decorators,😱unify ES5 and proxy implementations, 💪smaller bundle

See https://deploy-preview-2327--mobx-docs.netlify.app/best/decorators.html

On Mon, Aug 3, 2020 at 10:56 AM Michel Weststrate mweststrate@gmail.com wrote:

In MobX you will need to call makeObservable(this) (without further arguments) in the constructor to apply the decorators. Beyond that, they should behave the same (except for some property enumerability issues, which were incorrect before)

On Mon, Aug 3, 2020 at 10:40 AM charliematters notifications@github.com wrote:

I appreciate that the decorators are still up in the air for version 6, but if we are keeping them, are we expecting them to look and act like the ones from version 4/5?

I tried using the 6.0.0-rc1 branch and found that the @action.bound decorator doesn't bind functions any more.

I have some tests here https://codesandbox.io/s/distracted-frost-oi1eg which work for 4/5 but fail for 6 (although I can't get codesandbox and Mobx to agree about Symbols). I'm happy to refactor these bits out of our codebase when we move to 6, but I'm just trying to work out how much work that will be!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/issues/2325#issuecomment-667921306, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBDS4GUUMLX4OYCUWYTR62AZTANCNFSM4LZQ2B5Q .

mweststrate

comment created time in 5 days

issue commentmobxjs/mobx

🚀 Proposal: MobX 6: 🧨drop decorators,😱unify ES5 and proxy implementations, 💪smaller bundle

In MobX you will need to call makeObservable(this) (without further arguments) in the constructor to apply the decorators. Beyond that, they should behave the same (except for some property enumerability issues, which were incorrect before)

On Mon, Aug 3, 2020 at 10:40 AM charliematters notifications@github.com wrote:

I appreciate that the decorators are still up in the air for version 6, but if we are keeping them, are we expecting them to look and act like the ones from version 4/5?

I tried using the 6.0.0-rc1 branch and found that the @action.bound decorator doesn't bind functions any more.

I have some tests here https://codesandbox.io/s/distracted-frost-oi1eg which work for 4/5 but fail for 6 (although I can't get codesandbox and Mobx to agree about Symbols). I'm happy to refactor these bits out of our codebase when we move to 6, but I'm just trying to work out how much work that will be!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/issues/2325#issuecomment-667921306, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBDS4GUUMLX4OYCUWYTR62AZTANCNFSM4LZQ2B5Q .

mweststrate

comment created time in 5 days

push eventmobxjs/mobx

Michel Weststrate

commit sha b5a07be406d5bad74f53baced0b9b86d9f97edb1

WIP on react cleanup

view details

push time in 6 days

issue closedmobxjs/mobx

mobx 6 not throwing an error (only warning) if using enforceActions, is this by design?

It seems mobx 6 will only do a console.warn when using enforceActions. What is the reasoning for this? I loved the fact that it forced me to do things the "correct way" in previous mobx versions :)

If this is intended could an option be added to force it to throw also?

Thank you for all your great work!

closed time in 6 days

johot

issue closedimmerjs/use-immer

Update by reference (like MST/Mobx)

I want to update an element in a table by passing a reference to it via props.

In MST this works without a problem, you pass the reference, there are actions on the reference, which update the data in the right place.

How to do something similar (update via reference) with use-immer?

My current solution using indexes and referencing the root directly is the oldschool dirty solution which is exactly what I wish to avoid as it will not scale when those objects get arrays/maps of nested objects with their own nested arrays etc... with each level having its own component.

<div>
{store.conditions.all.map((c, i) => {
          const setName = name =>
            setStore(s => {
              // how to replace this with
              // c.name = name
              // using only c ref inside the <Condition /> ?
              s.conditions.all[i].name = name
            })

          const remove = () =>
            setStore(s => {
              s.conditions.all.splice(i, 1)
            })

          return (
            <Condition
              index={i}
              key={i}
              condition={c}
              remove={remove}
              setName={setName}
            />
          )
        })}
</div>

https://codesandbox.io/s/use-immer-example-ekhj9?file=/src/App.js

closed time in 8 days

andraz-at

issue commentimmerjs/use-immer

Update by reference (like MST/Mobx)

Sound mostly like something that would be confusing to me. But... try it?

andraz-at

comment created time in 8 days

issue commentimmerjs/use-immer

Update by reference (like MST/Mobx)

In the immutable data tree paradigm there is no safe concept of reference you can safely hold on to to perform updates on, you will have to remember for example an external key and find it back from the original root. That kind of behavior can be standardized by using lenses / cursors (look up an item back from the root later in the future), but that is further not in the scope of immer and can be done by libraries like rambda.

On Fri, Jul 31, 2020 at 11:58 AM Andraž Kos notifications@github.com wrote:

I want to update an element in a table by passing a reference to it via props.

In MST this works without a problem, you pass the reference, there are actions on the reference, which update the data in the right place.

How to do something similar (update via reference) with use-immer?

My current solution using indexes and referencing the root directly is the oldschool dirty solution which is exactly what I wish to avoid as it will not scale when those objects get arrays/maps of nested objects with their own nested arrays etc... with each level having its own component.

<div>{store.conditions.all.map((c, i) => { const setName = name => setStore(s => { // how to replace this with // c.name = name // using only c ref inside the <Condition /> ? s.conditions.all[i].name = name })

      const remove = () =>
        setStore(s => {
          s.conditions.all.splice(i, 1)
        })

      return (
        <Condition
          index={i}
          key={i}
          condition={c}
          remove={remove}
          setName={setName}
        />
      )
    })}</div>

https://codesandbox.io/s/use-immer-example-ekhj9?file=/src/App.js

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/immerjs/use-immer/issues/62, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBCY3IYRF5WTZM5ZS3TR6KPVBANCNFSM4PQAZF6A .

andraz-at

comment created time in 8 days

issue commentfacebook/flipper

Having a database column named order will fail to execute UPDATE statements

Good catch! Yeah that sounds like an escaping issue. @lmj0011 in testing if adding quotes here around ${key}: https://github.com/facebook/flipper/blob/master/desktop/plugins/databases/UpdateQueryUtil.tsx#L60-L64

solves the issue and submit a PR if that is the case? Cloning this repo and yarn && yarn start in the desktop folder should be enough to get started

lmj0011

comment created time in 8 days

pull request commentmobxjs/mobx

extendObservable can be used late and support non-enumerable getters.

Awesome, thanks for doing this! Would you mind making the same change in the v4 folder? (from 6 onward that wouldn't be needed anymore luckily)

MoonBall

comment created time in 9 days

issue commentmobxjs/mobx

mobx 6 not throwing an error (only warning) if using enforceActions, is this by design?

Yeah this is intended, it is not hindering anything from a technical perspective, and yet another config option seems like overkill. Most other warnings don't throw either, so this is a bit more consistent and less obtrusive, especially since this has become the default, so there is no longer an opt-in.

On Thu, Jul 30, 2020 at 8:22 PM Johan Otterud notifications@github.com wrote:

It seems mobx 6 will only do a console.warn when using enforceActions. What is the reasoning for this? I loved the fact that it forced me to do things the "correct way" :)

If this is intended could an option be added to force it to throw also?

Thank you for all your great work!

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx/issues/2417, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBFQQJM4VNGIVHKZDULR6HB7DANCNFSM4POO5EDA .

johot

comment created time in 9 days

issue commentfacebook/flipper

Question: Unable to link Flipper-Folly

Does building from CLI work? (yarn ios). Make sure to open the workspace, not the project in XCode. In XCode make sure that the compile target is the same version as used in your podfile. Did you check the troubleshooting guide?

On Thu, Jul 30, 2020 at 4:51 PM Jean-Philippe Monette < notifications@github.com> wrote:

I am trying to build a React-Native app (0.63.2) with Folly-Folly, but it seems like XCode cannot successfully build the dependency and returns an error.

This seems to be common error on Google, but couldn't find a workaround to fix it. Any clue?

Thanks Podfile

require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

platform :ios, '12.2' use_frameworks!

project 'myapp.xcodeproj' target 'myapp' do pre_install do |installer| Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {} end

config = use_native_modules!

use_react_native!(:path => config["reactNativePath"])

pod 'SalesforceSDKCommon', :path => '../node_modules/SalesforceMobileSDK-iOS' pod 'SalesforceAnalytics', :path => '../node_modules/SalesforceMobileSDK-iOS' pod 'SalesforceSDKCore', :path => '../node_modules/SalesforceMobileSDK-iOS' pod 'SmartStore', :path => '../node_modules/SalesforceMobileSDK-iOS' pod 'MobileSync', :path => '../node_modules/SalesforceMobileSDK-iOS' pod 'SalesforceReact', :path => '../node_modules/react-native-force'

pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons' pod 'RNSVG', :path => '../node_modules/react-native-svg' Enables Flipper. Note that if you have use_frameworks! enabled, Flipper will not work and you should disable these next few lines.

use_flipper! post_install do |installer| flipper_post_install(installer) end end Error log

Undefined symbols for architecture x86_64: "boost::re_detail_106300::perl_matcher<char const*, std::__1::allocator<boost::sub_match<char const*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find()", referenced from: bool boost::regex_search<char const*, std::__1::allocator<boost::sub_match<char const*> >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(char const*, char const*, boost::match_results<char const*, std::__1::allocator<boost::sub_match<char const*> > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, char const*) in Uri.o "boost::re_detail_106300::perl_matcher<char const*, std::__1::allocator<boost::sub_match<char const*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::match()", referenced from: bool boost::regex_match<char const*, std::__1::allocator<boost::sub_match<char const*> >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(char const*, char const*, boost::match_results<char const*, std::__1::allocator<boost::sub_match<char const*> > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags) in Uri.o "_d2i_SSL_SESSION", referenced from: folly::ssl::detail::SSLSessionImpl::SSLSessionImpl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in SSLSessionImpl.o "_X509_VERIFY_PARAM_set_flags", referenced from: folly::ssl::SSLCommonOptions::setClientOptions(folly::SSLContext&) in SSLOptions.o "_SSL_CTX_set_session_id_context", referenced from: folly::SSLContext::setSessionCacheContext(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in SSLContext.o "_SSL_CTX_set_alpn_protos", referenced from: folly::SSLContext::setRandomizedAdvertisedNextProtocols(std::__1::list<folly::SSLContext::NextProtocolsItem, std::__1::allocatorfolly::SSLContext::NextProtocolsItem > const&) in SSLContext.o folly::SSLContext::unsetNextProtocols() in SSLContext.o "_SSL_CTX_set_default_passwd_cb", referenced from: folly::SSLContext::passwordCollector(std::__1::shared_ptrfolly::PasswordCollector) in SSLContext.o "_i2d_SSL_SESSION", referenced from: folly::ssl::detail::SSLSessionImpl::serialize() const in SSLSessionImpl.o "_SSL_CTX_check_private_key", referenced from: folly::SSLContext::isCertKeyPairValid() const in SSLContext.o "_SSL_CTX_use_PrivateKey_file", referenced from: folly::SSLContext::loadPrivateKey(char const*, char const*) in SSLContext.o "_SSL_CTX_use_certificate", referenced from: folly::SSLContext::loadCertificateFromBufferPEM(folly::Range<char const*>) in SSLContext.o "_SSL_CTX_set_verify", referenced from: folly::SSLContext::authenticate(bool, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in SSLContext.o "_SSL_CTX_set_cipher_list", referenced from: folly::SSLContext::setCiphersOrThrow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in SSLContext.o "_SSL_CTX_set1_param", referenced from: folly::SSLContext::setX509VerifyParam(std::__1::unique_ptr<X509_VERIFY_PARAM_st, folly::static_function_deleter<X509_VERIFY_PARAM_st, &(X509_VERIFY_PARAM_free)> > const&) in SSLContext.o "_EC_KEY_free", referenced from: folly::SSLContext::setServerECCurve(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in SSLContext.o "_SSL_CTX_callback_ctrl", referenced from: folly::SSLContext::SSLContext(folly::SSLContext::SSLVersion) in SSLContext.o "_X509_NAME_get_text_by_NID", referenced from: folly::ssl::OpenSSLUtils::getCommonName(x509_st*) in OpenSSLUtils.o "_BIO_s_socket", referenced from: folly::ssl::OpenSSLUtils::newSocketBioMethod() in OpenSSLUtils.o "_SSL_CTX_new", referenced from: folly::ssl::getOpenSSLCipherNames() in OpenSSLUtils.o folly::SSLContext::SSLContext(folly::SSLContext::SSLVersion) in SSLContext.o "_SSL_new", referenced from: folly::ssl::getOpenSSLCipherNames() in OpenSSLUtils.o folly::SSLContext::createSSL() const in SSLContext.o "_SSL_CIPHER_get_id", referenced from: folly::ssl::getOpenSSLCipherNames() in OpenSSLUtils.o "_CRYPTO_THREADID_set_numeric", referenced from: folly::ssl::detail::callbackThreadID(crypto_threadid_st*) in OpenSSLThreading.o "_CRYPTO_num_locks", referenced from: folly::ssl::detail::installThreadingLocks() in OpenSSLThreading.o "_CRYPTO_set_locking_callback", referenced from: folly::ssl::detail::installThreadingLocks() in OpenSSLThreading.o folly::ssl::detail::cleanupThreadingLocks() in OpenSSLThreading.o "_CRYPTO_set_dynlock_destroy_callback", referenced from: folly::ssl::detail::installThreadingLocks() in OpenSSLThreading.o folly::ssl::detail::cleanupThreadingLocks() in OpenSSLThreading.o "_ASN1_TIME_free", referenced from: folly::static_function_deleter<asn1_string_st, &(ASN1_TIME_free)>::operator()(asn1_string_st*) const in OpenSSLCertUtils.o "_SSL_select_next_proto", referenced from: folly::SSLContext::alpnSelectCallback(ssl_st*, unsigned char const**, unsigned char*, unsigned char const*, unsigned int, void*) in SSLContext.o "_X509_STORE_new", referenced from: folly::ssl::OpenSSLCertUtils::readStoreFromBuffer(folly::Range<unsigned char const*>) in OpenSSLCertUtils.o "_X509_digest", referenced from: folly::ssl::OpenSSLCertUtils::getDigestSha1(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::getDigestSha256(x509_st&) in OpenSSLCertUtils.o "_ERR_error_string_n", referenced from: folly::ssl::(anonymous namespace)::getOpenSSLErrorString(unsigned long) in OpenSSLCertUtils.o (anonymous namespace)::decodeOpenSSLError(int, unsigned long, int) in SSLErrors.o "_X509_get_issuer_name", referenced from: folly::ssl::OpenSSLCertUtils::getIssuer(x509_st&) in OpenSSLCertUtils.o "_SSL_CTX_set_cert_store", referenced from: folly::SSLContext::loadTrustedCertificates(x509_store_st*) in SSLContext.o "_BIO_s_mem", referenced from: folly::ssl::OpenSSLCertUtils::getSubject(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::getIssuer(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::toString(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::getDateTimeStr(asn1_string_st const*) in OpenSSLCertUtils.o folly::SSLContext::loadCertificateFromBufferPEM(folly::Range<char const*>) in SSLContext.o folly::SSLContext::loadPrivateKeyFromBufferPEM(folly::Range<char const*>) in SSLContext.o "_X509_NAME_print_ex", referenced from: folly::ssl::OpenSSLCertUtils::getSubject(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::getIssuer(x509_st&) in OpenSSLCertUtils.o "_GENERAL_NAME_free", referenced from: folly::ssl::OpenSSLCertUtils::getSubjectAltNames(x509_st&)::$_0::operator()() const in OpenSSLCertUtils.o folly::ssl::OpenSSLUtils::validatePeerCertNames(x509_st*, sockaddr const*, unsigned int)::$_0::operator()() const in OpenSSLUtils.o "_BIO_ctrl", referenced from: folly::ssl::OpenSSLCertUtils::getSubject(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::getIssuer(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::toString(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::getDateTimeStr(asn1_string_st const*) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::readCertsFromBuffer(folly::Range<unsigned char const*>) in OpenSSLCertUtils.o folly::ssl::OpenSSLUtils::getBioFd(bio_st*) in OpenSSLUtils.o "_X509_get_ext_d2i", referenced from: folly::ssl::OpenSSLCertUtils::getSubjectAltNames(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLUtils::validatePeerCertNames(x509_st*, sockaddr const*, unsigned int) in OpenSSLUtils.o "_BIO_new_mem_buf", referenced from: folly::ssl::OpenSSLCertUtils::readCertsFromBuffer(folly::Range<unsigned char const*>) in OpenSSLCertUtils.o "_sk_value", referenced from: folly::ssl::OpenSSLCertUtils::getSubjectAltNames(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLUtils::validatePeerCertNames(x509_st*, sockaddr const*, unsigned int) in OpenSSLUtils.o folly::ssl::getOpenSSLCipherNames() in OpenSSLUtils.o "_SSL_get_ciphers", referenced from: folly::ssl::getOpenSSLCipherNames() in OpenSSLUtils.o "_X509_NAME_get_index_by_NID", referenced from: folly::ssl::OpenSSLCertUtils::getCommonName(x509_st&) in OpenSSLCertUtils.o "_ASN1_STRING_length", referenced from: folly::ssl::OpenSSLCertUtils::getCommonName(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::getSubjectAltNames(x509_st&) in OpenSSLCertUtils.o "_SSL_SESSION_get_id", referenced from: folly::ssl::detail::SSLSessionImpl::getSessionID() const in SSLSessionImpl.o "_X509_check_purpose", referenced from: folly::portability::ssl::X509_get_extension_flags(x509_st*) in OpenSSL.o "_EVP_cleanup", referenced from: folly::portability::ssl::OPENSSL_cleanup() in OpenSSL.o "_SSL_library_init", referenced from: folly::portability::ssl::OPENSSL_init_ssl(unsigned long long, void const*) in OpenSSL.o folly::ssl::getOpenSSLCipherNames() in OpenSSLUtils.o "_SSL_CTX_load_verify_locations", referenced from: folly::SSLContext::loadTrustedCertificates(char const*) in SSLContext.o "_OBJ_sn2nid", referenced from: folly::SSLContext::setServerECCurve(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in SSLContext.o "_BIO_get_ex_data", referenced from: folly::ssl::OpenSSLUtils::getBioAppData(bio_st*) in OpenSSLUtils.o "_OpenSSL_add_all_ciphers", referenced from: folly::portability::ssl::OPENSSL_init_ssl(unsigned long long, void const*) in OpenSSL.o "_OPENSSL_add_all_algorithms_noconf", referenced from: folly::portability::ssl::OPENSSL_init_ssl(unsigned long long, void const*) in OpenSSL.o "_SSL_CTX_set_client_CA_list", referenced from: folly::SSLContext::loadClientCAList(char const*) in SSLContext.o "_SSL_load_error_strings", referenced from: folly::portability::ssl::OPENSSL_init_ssl(unsigned long long, void const*) in OpenSSL.o "_EVP_MD_CTX_cleanup", referenced from: folly::portability::ssl::EVP_MD_CTX_free(env_md_ctx_st*) in OpenSSL.o "_BN_clear_free", referenced from: folly::portability::ssl::ECDSA_SIG_set0(ECDSA_SIG_st*, bignum_st*, bignum_st*) in OpenSSL.o "_X509_VERIFY_PARAM_free", referenced from: folly::static_function_deleter<X509_VERIFY_PARAM_st, &(X509_VERIFY_PARAM_free)>::operator()(X509_VERIFY_PARAM_st*) const in SSLOptions.o "_X509_STORE_CTX_get_chain", referenced from: folly::portability::ssl::X509_STORE_CTX_get0_chain(x509_store_ctx_st*) in OpenSSL.o "_BIO_sock_should_retry", referenced from: folly::ssl::OpenSSLUtils::getBioShouldRetryWrite(int) in OpenSSLUtils.o "_SSL_get_rbio", referenced from: folly::AsyncSSLSocket::getRawBytesReceived() const in AsyncSSLSocket.o folly::AsyncSSLSocket::willBlock(int, int*, unsigned long*) in AsyncSSLSocket.o "_BN_free", referenced from: folly::portability::ssl::DH_set0_pqg(dh_st*, bignum_st*, bignum_st*, bignum_st*) in OpenSSL.o folly::portability::ssl::RSA_set0_key(rsa_st*, bignum_st*, bignum_st*, bignum_st*) in OpenSSL.o "_EVP_sha1", referenced from: folly::ssl::OpenSSLCertUtils::getDigestSha1(x509_st&) in OpenSSLCertUtils.o "_ASN1_TIME_print", referenced from: folly::ssl::OpenSSLCertUtils::getDateTimeStr(asn1_string_st const*) in OpenSSLCertUtils.o "_ASN1_STRING_data", referenced from: folly::portability::ssl::ASN1_STRING_get0_data(asn1_string_st const*) in OpenSSL.o "_TLSv1_2_server_method", referenced from: folly::portability::ssl::TLS_server_method() in OpenSSL.o "_CRYPTO_free", referenced from: folly::portability::ssl::BIO_meth_free(bio_method_st*) in OpenSSL.o folly::portability::ssl::EVP_MD_CTX_free(env_md_ctx_st*) in OpenSSL.o folly::portability::ssl::HMAC_CTX_free(hmac_ctx_st*) in OpenSSL.o "_SSL_load_client_CA_file", referenced from: folly::SSLContext::loadClientCAList(char const*) in SSLContext.o "_SSL_CTX_use_certificate_chain_file", referenced from: folly::SSLContext::loadCertificate(char const*, char const*) in SSLContext.o "_d2i_X509", referenced from: folly::ssl::OpenSSLCertUtils::derDecode(folly::Range<unsigned char const*>) in OpenSSLCertUtils.o "_CRYPTO_add_lock", referenced from: folly::portability::ssl::SSL_CTX_up_ref(ssl_ctx_st*) in OpenSSL.o folly::portability::ssl::SSL_SESSION_up_ref(ssl_session_st*) in OpenSSL.o folly::portability::ssl::X509_up_ref(x509_st*) in OpenSSL.o folly::portability::ssl::X509_STORE_up_ref(x509_store_st*) in OpenSSL.o folly::portability::ssl::EVP_PKEY_up_ref(evp_pkey_st*) in OpenSSL.o "_event_base_new", referenced from: (anonymous namespace)::EventBaseBackend::EventBaseBackend() in EventBase.o "_PEM_read_bio_PrivateKey", referenced from: folly::SSLContext::loadPrivateKeyFromBufferPEM(folly::Range<char const*>) in SSLContext.o "_event_base_free", referenced from: (anonymous namespace)::EventBaseBackend::~EventBaseBackend() in EventBase.o "_HMAC_CTX_init", referenced from: folly::portability::ssl::HMAC_CTX_new() in OpenSSL.o "_X509_NAME_get_entry", referenced from: folly::ssl::OpenSSLCertUtils::getCommonName(x509_st&) in OpenSSLCertUtils.o "_event_del", referenced from: (anonymous namespace)::EventBaseBackend::eb_event_del(folly::EventBaseEvent&) in EventBase.o (maybe you meant: folly::EventBaseEvent::eb_event_del()) "_SSL_CTX_use_PrivateKey", referenced from: folly::SSLContext::loadPrivateKeyFromBufferPEM(folly::Range<char const*>) in SSLContext.o "_X509_get_subject_name", referenced from: folly::ssl::OpenSSLCertUtils::getCommonName(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::getSubject(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLUtils::getCommonName(x509_st*) in OpenSSLUtils.o "_event_add", referenced from: (anonymous namespace)::EventBaseBackend::eb_event_add(folly::EventBaseEvent&, timeval const*) in EventBase.o (maybe you meant: folly::EventBaseEvent::eb_event_add(timeval const*)) "_RAND_poll", referenced from: folly::ssl::(anonymous namespace)::initializeOpenSSLLocked() in Init.o "_event_base_loopbreak", referenced from: (anonymous namespace)::EventBaseBackend::eb_event_base_loopbreak() in EventBase.o "_event_base_loop", referenced from: (anonymous namespace)::EventBaseBackend::eb_event_base_loop(int) in EventBase.o "_event_get_version", referenced from: folly::EventBase::getLibeventVersion() in EventBase.o "_ERR_clear_error", referenced from: folly::AsyncSSLSocket::closeNow() in AsyncSSLSocket.o folly::portability::ssl::OPENSSL_cleanup() in OpenSSL.o folly::ssl::OpenSSLCertUtils::readCertsFromBuffer(folly::Range<unsigned char const*>) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::readStoreFromBuffer(folly::Range<unsigned char const*>) in OpenSSLCertUtils.o folly::SSLContext::loadCertificateFromBufferPEM(folly::Range<char const*>) in SSLContext.o folly::SSLContext::loadTrustedCertificates(char const*) in SSLContext.o folly::SSLContext::unsetNextProtocols() in SSLContext.o ... "folly::detail::crc32_combine_hw(unsigned int, unsigned int, unsigned long)", referenced from: folly::crc32_combine(unsigned int, unsigned int, unsigned long) in Checksum.o "_SSL_write", referenced from: folly::AsyncSSLSocket::sslWriteImpl(ssl_st*, void const*, int) in AsyncSSLSocket.o "folly::detail::crc32c_hw(unsigned char const*, unsigned long, unsigned int)", referenced from: folly::crc32c(unsigned char const*, unsigned long, unsigned int) in Checksum.o "boost::re_detail_106300::get_default_error_string(boost::regex_constants::error_type)", referenced from: boost::re_detail_106300::cpp_regex_traits_implementation<char>::error_string(boost::regex_constants::error_type) const in Benchmark.o "_event_base_set", referenced from: folly::EventBaseEvent::eb_event_base_set(folly::EventBase*) in EventBaseBackendBase.o (maybe you meant: folly::EventBaseEvent::eb_event_base_set(folly::EventBase*)) "_SSL_get_fd", referenced from: folly::ssl::OpenSSLUtils::getPeerAddressFromX509StoreCtx(x509_store_ctx_st*, sockaddr_storage*, unsigned int*) in OpenSSLUtils.o "_SSL_get0_param", referenced from: folly::AsyncSSLSocket::applyVerificationOptions(std::__1::unique_ptr<ssl_st, folly::static_function_deleter<ssl_st, &(SSL_free)> > const&) in AsyncSSLSocket.o "boost::re_detail_106300::cpp_regex_traits_implementation<char>::transform_primary(char const*, char const*) const", referenced from: boost::cpp_regex_traits<char>::transform_primary(char const*, char const*) const in Benchmark.o "_CRYPTO_set_dynlock_lock_callback", referenced from: folly::ssl::detail::installThreadingLocks() in OpenSSLThreading.o folly::ssl::detail::cleanupThreadingLocks() in OpenSSLThreading.o "boost::re_detail_106300::cpp_regex_traits_implementation<char>::transform(char const*, char const*) const", referenced from: boost::cpp_regex_traits<char>::transform(char const*, char const*) const in Benchmark.o "_X509_NAME_ENTRY_get_data", referenced from: folly::ssl::OpenSSLCertUtils::getCommonName(x509_st&) in OpenSSLCertUtils.o "_SSL_CIPHER_get_name", referenced from: folly::AsyncSSLSocket::getNegotiatedCipherName() const in AsyncSSLSocket.o folly::ssl::getOpenSSLCipherNames() in OpenSSLUtils.o "boost::re_detail_106300::raise_runtime_error(std::runtime_error const&)", referenced from: void boost::re_detail_106300::raise_error<boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > >(boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::error_type) in Benchmark.o "_SSL_get_error", referenced from: folly::AsyncSSLSocket::willBlock(int, int*, unsigned long*) in AsyncSSLSocket.o folly::AsyncSSLSocket::performRead(void**, unsigned long*, unsigned long*) in AsyncSSLSocket.o folly::AsyncSSLSocket::performWrite(iovec const*, unsigned int, folly::WriteFlags, unsigned int*, unsigned int*) in AsyncSSLSocket.o "boost::re_detail_106300::verify_options(unsigned int, boost::regex_constants::_match_flags)", referenced from: boost::re_detail_106300::perl_matcher<std::__1::__wrap_iter<char const*>, std::__1::allocator<boost::sub_match<std::__1::__wrap_iter<char const*> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find_imp() in Benchmark.o "_SSL_CTX_ctrl", referenced from: (anonymous namespace)::setup_SSL_CTX(ssl_ctx_st*) in AsyncSSLSocket.o folly::SSLContext::SSLContext(folly::SSLContext::SSLVersion) in SSLContext.o folly::SSLContext::setClientECCurvesList(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) in SSLContext.o folly::SSLContext::setServerECCurve(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in SSLContext.o folly::SSLContext::loadCertificateFromBufferPEM(folly::Range<char const*>) in SSLContext.o folly::SSLContext::setOptions(long) in SSLContext.o void folly::SSLContext::setSignatureAlgorithms<char const* const*>(char const* const*, char const* const*) in SSLOptions.o ... "_X509_free", referenced from: folly::static_function_deleter<x509_st, &(X509_free)>::operator()(x509_st*) const in AsyncSSLSocket.o folly::portability::ssl::X509_STORE_CTX_set0_verified_chain(x509_store_ctx_st*, stack_st_X509*) in OpenSSL.o "_EC_KEY_new_by_curve_name", referenced from: folly::SSLContext::setServerECCurve(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in SSLContext.o "boost::re_detail_106300::get_mem_block()", referenced from: boost::re_detail_106300::perl_matcher<std::__1::__wrap_iter<char const*>, std::__1::allocator<boost::sub_match<std::__1::__wrap_iter<char const*> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::extend_stack() in Benchmark.o boost::re_detail_106300::save_state_init::save_state_init(boost::re_detail_106300::saved_state**, boost::re_detail_106300::saved_state**) in Benchmark.o "_SSL_get_cipher_list", referenced from: folly::AsyncSSLSocket::getSSLServerCiphers(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) const in AsyncSSLSocket.o "_BIO_set_flags", referenced from: folly::AsyncSSLSocket::bioWrite(bio_st*, char const*, int) in AsyncSSLSocket.o folly::AsyncSSLSocket::bioRead(bio_st*, char*, int) in AsyncSSLSocket.o "_ERR_get_error", referenced from: folly::AsyncSSLSocket::willBlock(int, int*, unsigned long*) in AsyncSSLSocket.o folly::AsyncSSLSocket::performRead(void**, unsigned long*, unsigned long*) in AsyncSSLSocket.o folly::AsyncSSLSocket::interpretSSLError(int, int) in AsyncSSLSocket.o folly::ssl::OpenSSLCertUtils::readCertsFromBuffer(folly::Range<unsigned char const*>) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::readStoreFromBuffer(folly::Range<unsigned char const*>) in OpenSSLCertUtils.o folly::SSLContext::getErrors(int) in SSLContext.o "_EVP_PKEY_free", referenced from: folly::AsyncSSLSocket::getSSLCertSize() const in AsyncSSLSocket.o folly::static_function_deleter<evp_pkey_st, &(EVP_PKEY_free)>::operator()(evp_pkey_st*) const in SSLContext.o "_BIO_next", referenced from: folly::AsyncSSLSocket::getRawBytesWritten() const in AsyncSSLSocket.o "_ERR_reason_error_string", referenced from: folly::AsyncSSLSocket::willBlock(int, int*, unsigned long*) in AsyncSSLSocket.o folly::AsyncSSLSocket::performRead(void**, unsigned long*, unsigned long*) in AsyncSSLSocket.o folly::AsyncSSLSocket::interpretSSLError(int, int) in AsyncSSLSocket.o folly::SSLContext::getErrors(int) in SSLContext.o "_SSL_free", referenced from: folly::static_function_deleter<ssl_st, &(SSL_free)>::operator()(ssl_st*) const in AsyncSSLSocket.o folly::ssl::getOpenSSLCipherNames()::$_2::operator()() const in OpenSSLUtils.o "boost::re_detail_106300::put_mem_block(void*)", referenced from: boost::re_detail_106300::perl_matcher<std::__1::__wrap_iter<char const*>, std::__1::allocator<boost::sub_match<std::__1::__wrap_iter<char const*> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::unwind_extra_block(bool) in Benchmark.o boost::re_detail_106300::save_state_init::~save_state_init() in Benchmark.o "_X509_get_pubkey", referenced from: folly::AsyncSSLSocket::getSSLCertSize() const in AsyncSSLSocket.o "_X509_VERIFY_PARAM_set1_host", referenced from: folly::AsyncSSLSocket::applyVerificationOptions(std::__1::unique_ptr<ssl_st, folly::static_function_deleter<ssl_st, &(SSL_free)> > const&) in AsyncSSLSocket.o "_OBJ_nid2ln", referenced from: folly::AsyncSSLSocket::getSSLCertSigAlgName() const in AsyncSSLSocket.o "_SSL_get_peer_certificate", referenced from: folly::AsyncSSLSocket::getPeerCertificate() const in AsyncSSLSocket.o "_event_init", referenced from: (anonymous namespace)::EventBaseBackend::EventBaseBackend() in EventBase.o "_SSL_version", referenced from: folly::AsyncSSLSocket::getSSLVersion() const in AsyncSSLSocket.o "_SSL_get_certificate", referenced from: folly::AsyncSSLSocket::getSSLCertSigAlgName() const in AsyncSSLSocket.o folly::AsyncSSLSocket::getSSLCertSize() const in AsyncSSLSocket.o folly::AsyncSSLSocket::getSelfCertificate() const in AsyncSSLSocket.o "_SSL_get_servername", referenced from: folly::AsyncSSLSocket::getSSLServerNameFromSSL(ssl_st*) in AsyncSSLSocket.o "_sk_pop_free", referenced from: folly::portability::ssl::X509_STORE_CTX_set0_verified_chain(x509_store_ctx_st*, stack_st_X509*) in OpenSSL.o folly::ssl::OpenSSLCertUtils::getSubjectAltNames(x509_st&)::$_0::operator()() const in OpenSSLCertUtils.o folly::ssl::OpenSSLUtils::validatePeerCertNames(x509_st*, sockaddr const*, unsigned int)::$_0::operator()() const in OpenSSLUtils.o "_sk_num", referenced from: folly::ssl::OpenSSLCertUtils::getSubjectAltNames(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLUtils::validatePeerCertNames(x509_st*, sockaddr const*, unsigned int) in OpenSSLUtils.o folly::ssl::getOpenSSLCipherNames() in OpenSSLUtils.o "_SSL_get_current_cipher", referenced from: folly::AsyncSSLSocket::getNegotiatedCipherName() const in AsyncSSLSocket.o "_X509_get_signature_nid", referenced from: folly::AsyncSSLSocket::getSSLCertSigAlgName() const in AsyncSSLSocket.o "_SSL_set_bio", referenced from: folly::AsyncSSLSocket::setupSSLBio() in AsyncSSLSocket.o "_SSL_CTX_set_default_passwd_cb_userdata", referenced from: folly::SSLContext::passwordCollector(std::__1::shared_ptrfolly::PasswordCollector) in SSLContext.o "_ASN1_TIME_diff", referenced from: folly::ssl::OpenSSLCertUtils::asnTimeToTimepoint(asn1_string_st const*) in OpenSSLCertUtils.o "_SSL_set_msg_callback", referenced from: folly::AsyncSSLSocket::handleAccept() in AsyncSSLSocket.o folly::AsyncSSLSocket::resetClientHelloParsing(ssl_st*) in AsyncSSLSocket.o "boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)", referenced from: boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int) in Benchmark.o "_BIO_int_ctrl", referenced from: folly::ssl::OpenSSLUtils::setBioFd(bio_st*, folly::NetworkSocket, int) in OpenSSLUtils.o "_SSL_shutdown", referenced from: folly::AsyncSSLSocket::closeNow() in AsyncSSLSocket.o "_SSL_get0_alpn_selected", referenced from: folly::AsyncSSLSocket::getSelectedNextProtocolNoThrow(unsigned char const**, unsigned int*) const in AsyncSSLSocket.o "_EVP_MD_CTX_init", referenced from: folly::portability::ssl::EVP_MD_CTX_new() in OpenSSL.o "_SSL_get1_session", referenced from: folly::AsyncSSLSocket::getSSLSession() in AsyncSSLSocket.o "_EVP_sha256", referenced from: folly::ssl::OpenSSLCertUtils::getDigestSha256(x509_st&) in OpenSSLCertUtils.o "_SSL_ctrl", referenced from: folly::AsyncSSLSocket::sslConn(folly::AsyncSSLSocket::HandshakeCB*, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l> >, folly::SSLContext::SSLVerifyPeerEnum const&) in AsyncSSLSocket.o folly::AsyncSSLSocket::getSSLSessionReused() const in AsyncSSLSocket.o folly::AsyncSSLSocket::handleAccept() in AsyncSSLSocket.o folly::AsyncSSLSocket::resetClientHelloParsing(ssl_st*) in AsyncSSLSocket.o "_SSL_set_ex_data", referenced from: folly::AsyncSSLSocket::sslConn(folly::AsyncSSLSocket::HandshakeCB*, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l> >, folly::SSLContext::SSLVerifyPeerEnum const&) in AsyncSSLSocket.o folly::AsyncSSLSocket::handleAccept() in AsyncSSLSocket.o "_SSL_CTX_set_alpn_select_cb", referenced from: folly::SSLContext::setRandomizedAdvertisedNextProtocols(std::__1::list<folly::SSLContext::NextProtocolsItem, std::__1::allocatorfolly::SSLContext::NextProtocolsItem > const&) in SSLContext.o folly::SSLContext::unsetNextProtocols() in SSLContext.o "_ERR_func_error_string", referenced from: folly::AsyncSSLSocket::willBlock(int, int*, unsigned long*) in AsyncSSLSocket.o folly::AsyncSSLSocket::performRead(void**, unsigned long*, unsigned long*) in AsyncSSLSocket.o folly::AsyncSSLSocket::interpretSSLError(int, int) in AsyncSSLSocket.o "_X509_print_ex", referenced from: folly::ssl::OpenSSLCertUtils::toString(x509_st&) in OpenSSLCertUtils.o "_BIO_new", referenced from: folly::AsyncSSLSocket::setupSSLBio() in AsyncSSLSocket.o folly::ssl::OpenSSLCertUtils::getSubject(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::getIssuer(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::toString(x509_st&) in OpenSSLCertUtils.o folly::ssl::OpenSSLCertUtils::getDateTimeStr(asn1_string_st const*) in OpenSSLCertUtils.o folly::SSLContext::loadCertificateFromBufferPEM(folly::Range<char const*>) in SSLContext.o folly::SSLContext::loadPrivateKeyFromBufferPEM(folly::Range<char const*>) in SSLContext.o ... "_X509_STORE_free", referenced from: folly::static_function_deleter<x509_store_st, &(X509_STORE_free)>::operator()(x509_store_st*) const in OpenSSLCertUtils.o "_ERR_free_strings", referenced from: folly::portability::ssl::OPENSSL_cleanup() in OpenSSL.o "_SSL_get_ex_data_X509_STORE_CTX_idx", referenced from: folly::AsyncSSLSocket::sslVerifyCallback(int, x509_store_ctx_st*) in AsyncSSLSocket.o folly::ssl::OpenSSLUtils::getPeerAddressFromX509StoreCtx(x509_store_ctx_st*, sockaddr_storage*, unsigned int*) in OpenSSLUtils.o "_X509_VERIFY_PARAM_new", referenced from: folly::ssl::SSLCommonOptions::setClientOptions(folly::SSLContext&) in SSLOptions.o "_HMAC_CTX_cleanup", referenced from: folly::portability::ssl::HMAC_CTX_free(hmac_ctx_st*) in OpenSSL.o "_EVP_PKEY_bits", referenced from: folly::AsyncSSLSocket::getSSLCertSize() const in AsyncSSLSocket.o "_SSL_get_ex_new_index", referenced from: folly::AsyncSSLSocket::getSSLExDataIndex() in AsyncSSLSocket.o "_SSL_set_verify", referenced from: folly::AsyncSSLSocket::applyVerificationOptions(std::__1::unique_ptr<ssl_st, folly::static_function_deleter<ssl_st, &(SSL_free)> > const&) in AsyncSSLSocket.o "_X509_STORE_CTX_get_ex_data", referenced from: folly::AsyncSSLSocket::sslVerifyCallback(int, x509_store_ctx_st*) in AsyncSSLSocket.o folly::ssl::OpenSSLUtils::getPeerAddressFromX509StoreCtx(x509_store_ctx_st*, sockaddr_storage*, unsigned int*) in OpenSSLUtils.o "_SSL_get_ex_data", referenced from: folly::AsyncSSLSocket::getFromSSL(ssl_st const*) in AsyncSSLSocket.o "_CRYPTO_malloc", referenced from: folly::portability::ssl::BIO_meth_new(int, char const*) in OpenSSL.o folly::portability::ssl::EVP_MD_CTX_new() in OpenSSL.o folly::portability::ssl::HMAC_CTX_new() in OpenSSL.o folly::ssl::OpenSSLUtils::newSocketBioMethod() in OpenSSLUtils.o "_SSLv23_method", referenced from: folly::SSLContext::SSLContext(folly::SSLContext::SSLVersion) in SSLContext.o "_SSL_CTX_free", referenced from: folly::AsyncSSLSocket::detachSSLContext() in AsyncSSLSocket.o folly::ssl::getOpenSSLCipherNames()::$_1::operator()() const in OpenSSLUtils.o folly::SSLContext::~SSLContext() in SSLContext.o "_SSL_get_session", referenced from: folly::AsyncSSLSocket::isServerNameMatch() const in AsyncSSLSocket.o "_SSL_pending", referenced from: folly::AsyncSSLSocket::checkForImmediateRead() in AsyncSSLSocket.o "_event_get_method", referenced from: folly::EventBase::getLibeventMethod() in EventBase.o "_event_set", referenced from: folly::EventBaseEvent::eb_signal_set(int, void ()(int, short, void), void*) in AsyncSignalHandler.o folly::EventBaseEvent::eb_event_set(int, short, void ()(int, short, void), void*) in AsyncTimeout.o (anonymous namespace)::EventBaseBackend::EventBaseBackend() in EventBase.o (maybe you meant: folly::EventBaseEvent::eb_event_set(int, short, void ()(int, short, void), void*)) "_CRYPTO_THREADID_set_callback", referenced from: folly::ssl::detail::installThreadingLocks() in OpenSSLThreading.o folly::ssl::detail::cleanupThreadingLocks() in OpenSSLThreading.o "_X509_STORE_add_cert", referenced from: folly::ssl::OpenSSLCertUtils::readStoreFromBuffer(folly::Range<unsigned char const*>) in OpenSSLCertUtils.o "_BIO_clear_flags", referenced from: folly::AsyncSSLSocket::bioWrite(bio_st*, char const*, int) in AsyncSSLSocket.o folly::AsyncSSLSocket::bioRead(bio_st*, char*, int) in AsyncSSLSocket.o "_i2d_X509", referenced from: folly::ssl::OpenSSLCertUtils::derEncode(x509_st&) in OpenSSLCertUtils.o "_ERR_load_crypto_strings", referenced from: folly::portability::ssl::OPENSSL_init_ssl(unsigned long long, void const*) in OpenSSL.o "_SSL_get_wbio", referenced from: folly::AsyncSSLSocket::getRawBytesWritten() const in AsyncSSLSocket.o folly::AsyncSSLSocket::willBlock(int, int*, unsigned long*) in AsyncSSLSocket.o "folly::detail::crc32c_combine_sw(unsigned int, unsigned int, unsigned long)", referenced from: folly::crc32c_combine(unsigned int, unsigned int, unsigned long) in Checksum.o "boost::re_detail_106300::perl_matcher<char const*, std::__1::allocator<boost::sub_match<char const*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)", referenced from: boost::re_detail_106300::perl_matcher<char const*, std::__1::allocator<boost::sub_match<char const*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher(char const*, char const*, boost::match_results<char const*, std::__1::allocator<boost::sub_match<char const*> > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, char const*) in Uri.o "_ASN1_TIME_set", referenced from: folly::ssl::OpenSSLCertUtils::asnTimeToTimepoint(asn1_string_st const*) in OpenSSLCertUtils.o "_BIO_number_read", referenced from: folly::AsyncSSLSocket::getRawBytesReceived() const in AsyncSSLSocket.o folly::AsyncSSLSocket::willBlock(int, int*, unsigned long*) in AsyncSSLSocket.o "_CRYPTO_set_dynlock_create_callback", referenced from: folly::ssl::detail::installThreadingLocks() in OpenSSLThreading.o folly::ssl::detail::cleanupThreadingLocks() in OpenSSLThreading.o "_SSL_connect", referenced from: folly::AsyncSSLSocket::handleConnect() in AsyncSSLSocket.o "_OpenSSL_add_all_digests", referenced from: folly::portability::ssl::OPENSSL_init_ssl(unsigned long long, void const*) in OpenSSL.o "_SSL_set_SSL_CTX", referenced from: folly::AsyncSSLSocket::attachSSLContext(std::__1::shared_ptrfolly::SSLContext const&) in AsyncSSLSocket.o folly::AsyncSSLSocket::detachSSLContext() in AsyncSSLSocket.o folly::AsyncSSLSocket::switchServerSSLContext(std::__1::shared_ptrfolly::SSLContext const&) in AsyncSSLSocket.o "_SSL_read", referenced from: folly::AsyncSSLSocket::performRead(void**, unsigned long*, unsigned long*) in AsyncSSLSocket.o "_SSL_set_session", referenced from: folly::AsyncSSLSocket::sslConn(folly::AsyncSSLSocket::HandshakeCB*, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l> >, folly::SSLContext::SSLVerifyPeerEnum const&) in AsyncSSLSocket.o "_SSL_alert_desc_string", referenced from: folly::AsyncSSLSocket::sslInfoCallback(ssl_st const*, int, int) in AsyncSSLSocket.o "_BIO_number_written", referenced from: folly::AsyncSSLSocket::getRawBytesWritten() const in AsyncSSLSocket.o folly::AsyncSSLSocket::willBlock(int, int*, unsigned long*) in AsyncSSLSocket.o folly::AsyncSSLSocket::bioWrite(bio_st*, char const*, int) in AsyncSSLSocket.o "folly::detail::crc32c_combine_hw(unsigned int, unsigned int, unsigned long)", referenced from: folly::crc32c_combine(unsigned int, unsigned int, unsigned long) in Checksum.o "_SSL_accept", referenced from: folly::AsyncSSLSocket::handleAccept()::$_0::operator()() const in AsyncSSLSocket.o "_PEM_read_bio_X509", referenced from: folly::ssl::OpenSSLCertUtils::readCertsFromBuffer(folly::Range<unsigned char const*>) in OpenSSLCertUtils.o folly::SSLContext::loadCertificateFromBufferPEM(folly::Range<char const*>) in SSLContext.o "_SSL_alert_type_string", referenced from: folly::AsyncSSLSocket::sslInfoCallback(ssl_st const*, int, int) in AsyncSSLSocket.o "_TLSv1_2_client_method", referenced from: folly::portability::ssl::TLS_client_method() in OpenSSL.o "_BIO_set_ex_data", referenced from: folly::ssl::OpenSSLUtils::setBioAppData(bio_st*, void*) in OpenSSLUtils.o "_SSL_SESSION_free", referenced from: folly::AsyncSSLSocket::closeNow() in AsyncSSLSocket.o folly::AsyncSSLSocket::sslConn(folly::AsyncSSLSocket::HandshakeCB*, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l> >, folly::SSLContext::SSLVerifyPeerEnum const&) in AsyncSSLSocket.o folly::AsyncSSLSocket::setSSLSession(ssl_session_st*, bool) in AsyncSSLSocket.o folly::ssl::detail::SSLSessionImpl::downRef() in SSLSessionImpl.o "_BIO_vfree", referenced from: folly::static_function_deleter<bio_st, &(BIO_vfree)>::operator()(bio_st*) const in OpenSSLCertUtils.o "folly::detail::crc32_combine_sw(unsigned int, unsigned int, unsigned long)", referenced from: folly::crc32_combine(unsigned int, unsigned int, unsigned long) in Checksum.o "_BIO_write", referenced from: folly::SSLContext::loadCertificateFromBufferPEM(folly::Range<char const*>) in SSLContext.o folly::SSLContext::loadPrivateKeyFromBufferPEM(folly::Range<char const*>) in SSLContext.o "_OPENSSL_cleanse", referenced from: folly::PasswordInFile::~PasswordInFile() in PasswordInFile.o "_CRYPTO_cleanup_all_ex_data", referenced from: folly::portability::ssl::OPENSSL_cleanup() in OpenSSL.o "_SSL_get_shared_ciphers", referenced from: folly::AsyncSSLSocket::getSSLSharedCiphers(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) const in AsyncSSLSocket.o "_SSL_CTX_set_info_callback", referenced from: folly::AsyncSSLSocket::AsyncSSLSocket(std::__1::shared_ptrfolly::SSLContext, folly::EventBase*, folly::NetworkSocket, bool, bool) in AsyncSSLSocket.o folly::AsyncSSLSocket::AsyncSSLSocket(std::__1::shared_ptrfolly::SSLContext, folly::EventBase*, folly::NetworkSocket, bool, bool) in AsyncSSLSocket.o folly::AsyncSSLSocket::AsyncSSLSocket(std::__1::shared_ptrfolly::SSLContext, std::__1::unique_ptr<folly::AsyncSocket, folly::DelayedDestruction::Destructor>, bool, bool) in AsyncSSLSocket.o folly::AsyncSSLSocket::AsyncSSLSocket(std::__1::shared_ptrfolly::SSLContext, std::__1::unique_ptr<folly::AsyncSocket, folly::DelayedDestruction::Destructor>, bool, bool) in AsyncSSLSocket.o folly::AsyncSSLSocket::switchServerSSLContext(std::__1::shared_ptrfolly::SSLContext const&) in AsyncSSLSocket.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/facebook/flipper/issues/1425, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBGYNDAXEBENXXWYINLR6GJHLANCNFSM4POBXJQQ .

jpmonette

comment created time in 9 days

issue commentfacebook/flipper

Support flipper plugins that contain a scope in their name

@bizzguy npx flipper-pkg init. You run it in the directory where you want to store your plugin under development. Since you will typically want to create your own VCS directory for that, it is typically not done in the flipper checkout itself :)

jschear

comment created time in 9 days

issue commentfacebook/flipper

Discussion: add "Delete row" option for Database plugin

@mczenith, yes, feel free to take a stab at it!

vkotovv

comment created time in 9 days

issue commentfacebook/flipper

Discussion: Dark theme

As a short update on this, we are looking into standardizing on a well established publicly available component library, probably ant.design. With that we will also start to support dark mode.

troy-lamerton

comment created time in 9 days

push eventmobxjs/mobx

Michel Weststrate

commit sha 591c58ade326760eb96be3e5ec64255ea7619aae

combined computed into one

view details

Michel Weststrate

commit sha 5d0a6b04538a68f15a68261a7ea85dc2c2ad2152

Merge branch 'mobx6' of github.com:mobxjs/mobx into mobx6

view details

push time in 10 days

issue commentfacebook/flipper

Flipper Layout plugin freezes apps in some cases when using Modals

@adrianso in that case please try create a reproduction, as we still don't have one, to make your comment actionable :)

djMax

comment created time in 10 days

issue commentfacebook/flipper

Question: Flipper connects to device but not application

@spawncholeva, just wondering, is your device clock in sync with your computer? Otherwise the secured handshake won't work. We saw this causing issues for others, in the device logs a message like

flipper: AsyncSocketException: error:1416F086:lib(20):func(367):reason(134), type = SSL error Make sure the date and time of your device is up to date.

In android this can be fixed by running. I can imagine something similar exists for iOS.

adb shell "su 0 toybox date `TZ=UTC date +%m%d%H%M%Y.%S`"

For others, please note that messages like "doesn't work" and "same!" are completely in-actionable for us, as there are no two RN apps with the same build setup. We can't look at your machine, so if you want help, details need to be provided. Currently completely different issues are being reported in this thread, hermes engine not connecting, yogakit build errors and it will make it impossible for anybody else reading to make sense of this thread.

Please follow the troubleshooting guide https://fbflipper.com/docs/troubleshooting#react-native and report in detail at which step things failed, and in include relevant build files, errors from device logs, etc etc.

Finally, if you found a solution to your problem, please do contribute with a PR to the troubleshooting guide if applicable, and otherwise at least report in the thread how your issue was solved. Inside FB the RN projects are a bit more consistent in build setup, so we don't experience all errors report first-hand. So please don't be just a consumer of information.

ShawnCholeva

comment created time in 10 days

push eventmobxjs/mobx

Chen Gang

commit sha 5280827b37f21d808f30727060f12e96c98c00a1

remove `debugger;`

view details

Michel Weststrate

commit sha 29fbbbc9aa9637f0b2c6dbad18dc2393a7031df6

Merge pull request #2414 from MoonBall/remove-debugger remove `debugger;`

view details

push time in 10 days

PR merged mobxjs/mobx

remove `debugger;`

<!-- Thanks for taking the effort to create a PR! 🙌

🚨🚨🚨 IMPORTANT NOTICE 🚨🚨🚨

Next major of MobX V6 is under development. Try to direct all changes toward `mobx6` branch instead of `master`.

🚨🚨🚨 IMPORTANT NOTICE 🚨🚨🚨

👋 Are you making a change to documentation only? Delete the rest of the template and go ahead.

👋 If you are creating an extensive PR, you might want to open an issue with your idea first in case there is a chance for rejecting it.

👋 If you intend to work on PR over several days, please, create [draft pull requests](https://github.blog/2019-02-14-introducing-draft-pull-requests/) instead.

👇 Please look at the following checklist to ensure that your PR can be accepted quickly:

-->

Code change checklist

  • [x] Added/updated unit tests
  • [ ] Updated changelog
  • [ ] Updated /docs. For new functionality, at least API.md should be updated
  • [ ] Verified that there is no significant performance drop (npm run perf)

<!-- Feel free to ask help with any of these boxes! -->

The debugger statement would take effect in Visual Studio Code's Javascript Debug Terminal. But I don't expect to debug here.

<a href="https://gitpod.io/#https://github.com/mobxjs/mobx/pull/2414"><img src="https://gitpod.io/api/apps/github/pbs/github.com/MoonBall/mobx.git/5280827b37f21d808f30727060f12e96c98c00a1.svg" /></a>

+0 -1

2 comments

1 changed file

MoonBall

pr closed time in 10 days

pull request commentmobxjs/mobx

remove `debugger;`

Nice catch

MoonBall

comment created time in 10 days

push eventmobxjs/mobx

Michel Weststrate

commit sha 77900139b18a6ed213c320338cf65d8a2dd29beb

WIP on computed

view details

push time in 11 days

issue closedmobxjs/mobx-react

build 6.2.4 is broken (missing files)

Hi,

I just updated to v6.2.4 and my react project broke due: Cannot find module: './mobxreact.cjs.production.min.js'. Make sure this package is installed.

Looking at: https://unpkg.com/browse/mobx-react@6.2.4/dist/ we mis the built files.

For comparing take a look at:

https://unpkg.com/browse/mobx-react@6.2.3/dist/

closed time in 11 days

blendsdk

issue commentmobxjs/mobx-react

build 6.2.4 is broken (missing files)

Apologies, did run the wrong release command. Should be fixed in 6.2.5. Apologies and thanks for reporting!

blendsdk

comment created time in 11 days

issue closedmobxjs/mobx-react

[mobx-react 6.2.4] Unable to resolve path to module 'mobx-react'

Just seen this one after dependabot update.

Intended outcome

import { observer } from 'mobx-react';

Should work.

Actual outcome

Unable to resolve path to module 'mobx-react' 🤷‍♂️

How to reproduce the issue

https://codesandbox.io/s/intelligent-wilson-3c5yg

Versions

Listed in https://codesandbox.io/s/intelligent-wilson-3c5yg

closed time in 11 days

ZilvinasKucinskas

issue commentmobxjs/mobx-react

[mobx-react 6.2.4] Unable to resolve path to module 'mobx-react'

woops, made a booboo. publishing is hard. Should be fixed in 6.2.5. Thanks for reporting!

ZilvinasKucinskas

comment created time in 11 days

created tagmobxjs/mobx-react

tag6.2.5

React bindings for MobX

created time in 11 days

push eventmobxjs/mobx-react

Michel Weststrate

commit sha fddedee59415ea56659a06365237164b77710b32

Published version 6.2.5

view details

push time in 11 days

issue closedimmerjs/immer

Minified CJS bundle doesn't contain plugins

(Immer is a great little library, thank you for creating it)

I have a very vanilla TypeScript + rollup project set up, am trying to use the latest version of immer. I would like to make use of the plugins, and while they're "available" as type definitions, the proper plugin js code isn't there at runtime, in my browser bundle.

I've been looking through the immer source and cannot figure out how this should be happening - specifically how the plugin ts source is transpiled into js and then ends up in a rollup-produced bundle. I see the minified/production "core" immer js file getting produced under dist/...but nothing related to any plugin code.

I'm sure I'm missing something and would really appreciate a short explanation about how the build and release aspects of the plugin feature work, both out of curiosity and so I can troubleshoot further.

fwiw for now I'm back on 5.3.6 and that's working just fine, including mapset.

closed time in 11 days

sconover

issue commentimmerjs/immer

Minified CJS bundle doesn't contain plugins

Closing until more info is available

sconover

comment created time in 11 days

issue closedmobxjs/mobx-react

React component won't rerender when Observables change

#React component won't rerender Hi everyone.

I'm fully aware of earlier issues regarding mine, but I can't seem to find an answer that matches mine. So that is the reason I publish this here.

I'm working in a Gatsbyjs project (React based), and I'm having trouble with my props not updating, and therefore the component would not rerender.

With Chrome plugin Mobx-devtools, I can see that my actions are triggered, and I also see that the state is changing. But, it won't trigger a an update in the React component. But when I trigger a new render(), the updated state is showing.

What do I have to do, so the React component automatically rerenders?

Here is my code: ShopModel.js:

import { observable, action, decorate } from  'mobx';
class  ShopModel {
   compassDirection  =  -20;
   cagesActive  =  [{ title:  '1' }, { title:  '2' }];
   cagesInactive  =  [{ title:  '103' }];
   hardwarePackageSelected  =  'vision';
   screenSize  =  42;
   numberOfScreens  =  2;
   recaroChair  =  false;
   AddActiveCage() {
	   this.cagesActive.push({ title: `${this.cagesActive.length  +  1}` });
   }
	
	// AND SIMILAR ACTIONS AS AddActiveCage

decorate(ShopModel, {
	compassDirection:  observable,
	cagesActive:  observable,
	cagesInactive:  observable,
	AddActiveCage:  action,
	RemoveLastActiveCage:  action,
	AddInactiveCage:  action,
	RemoveLastInactiveCage:  action,
	DecrementCompassDirection:  action,
	IncrementCompassDirection:  action,
});
const  ShopStore  =  new  ShopModel();
export  default  ShopStore;

Positioning.js:

import  React  from  'react';
import { inject, observer } from  'mobx-react';
import  SEO  from  '../../components/Seo';
import  Counter  from  '../../components/Counter';
import { Cage, Box } from  '../../components/DragAndDrop';
import {StoreLayout,StoreMainContentLeft,StoreMainContentRight,} from  '../../components/Store';

@inject('shopStore')
@observer
class  PositioningSite  extends  React.Component {
	constructor(props) {
		super(props);
		this.state  = {
			activeDrags:  0,
		};
	}
	render() {
		return (
		<StoreLayout  next="/butikk/hardware">

<>

			<SEO  title="Bestill BlueThink"  />
			<StoreMainContentLeft  id="drag-and-drop">
				<Box
					className="box"
					title="Fôringsflåte"
					onStart={this.onStart}
					onStop={this.onStop}
				/>

			{this.props.shopStore.cagesActive.map(cage => { return (

				<Cage
				key={cage.title}
				className="box"
				title={cage.title}
				onStart={this.onStart}
				onStop={this.onStop}
				/>
			);})}
</StoreMainContentLeft>
<StoreMainContentRight>
	<h1>Positioning</h1>
	<h3><strong>Box</strong></h3>
	<Counter
		title="Kompassretning"
		counter={this.props.shopStore.compassDirection}
		onIncrement={() =>
		this.props.shopStore.IncrementCompassDirection()
		}
		onDecrement={() =>
		this.props.shopStore.DecrementCompassDirection()
		}
	/>
	<h3><strong>Cage</strong></h3>
	<Counter
		title="Active"
		counter={this.props.shopStore.cagesActive.length}
		onIncrement={() =>  this.props.shopStore.AddActiveCage()}
		onDecrement={() =>  this.props.shopStore.RemoveLastActiveCage()}
	/>
	<Counter
		title="Inactive"
		counter={this.props.shopStore.cagesInactive.length}
		onIncrement={() =>  this.props.shopStore.AddInactiveCage()}
		onDecrement={() =>  this.props.shopStore.RemoveLastInactiveCage()}
	/>
</StoreMainContentRight>
</>
</StoreLayout>

);}}

export  default  PositioningSite;

wrap-with-provider.js:

import React from 'react';
import { Provider } from 'mobx-react';
import { useStrict } from 'mobx';

import ShopModel from './src/models/ShopModel';

useStrict(true);

// eslint-disable-next-line react/display-name,react/prop-types
export default ({ element }) => (
  <Provider shopStore={ShopModel}>{element}</Provider>
);

closed time in 11 days

FredrikSigvartsen

issue commentmobxjs/mobx-react

React component won't rerender when Observables change

Oh this issue was inactive for a year already. Closing for now.

FredrikSigvartsen

comment created time in 11 days

issue commentmobxjs/mobx-react

React component won't rerender when Observables change

Please note that @babel/plugin-proposal-class-properties should be configured with loose: true in your babelrc. Not sure if that is the cause, but it is incorrect at least. See https://mobx.js.org/best/decorators.html#enabling-decorator-syntax.

FredrikSigvartsen

comment created time in 11 days

issue commentmobxjs/mobx-react

upgrade mobx-react version from 6.2.2 to 6.2.3,There is an error

Just release 6.2.4. Thanks for reporting!

zengqingzhuang

comment created time in 11 days

issue closedmobxjs/mobx-react

observer component re-renders even though observed value doesn't change

Intended outcome

When an observed value doesn't change, don't re-render a component wrapped with an observer.

Actual outcome

observer-wrapped component re-renders even though observed value doesn't change.

How to reproduce the issue

See repro here: https://codesandbox.io/s/stoic-sara-v1znu?file=/src/index.tsx

  1. Click the <kbd>Set param value</kbd> button
  2. Check console, there's a new entry even though there shouldn't be: | [mobx.trace] 'observerView' is invalidated due to a change in: 'MyModel@11.params'

Some more details: When clicking the button, an action fires, which is supposed to do nothing - it creates a new object that's structurally identical to the previous one. I expect that the @comptued.struct (paramsInternal) will catch this and prevent further propagation. I then read this, which I tried - see the params @computed, to no avail..

Versions

mobx: 5.15.4 mobx-react: 6.2.3 react & react-dom: 16.13.1

closed time in 11 days

bengry

issue commentmobxjs/mobx-react

observer component re-renders even though observed value doesn't change

@bengry it depends, if things of the observed by the computed change, the computed has to recompute, if it than concludes it didn't produce a different value than before, it won't propage further, etc.

bengry

comment created time in 11 days

created tagmobxjs/mobx-react

tagv6.2.4

React bindings for MobX

created time in 11 days

push eventmobxjs/mobx-react

Michel Weststrate

commit sha 73ac3f21003bb774872b0096ddd891aa701e7044

v6.2.4

view details

push time in 11 days

push eventmobxjs/mobx

Michel Weststrate

commit sha 85487a5dca401383c06e915ef24c174a1c298a68

Improvements with details/summary. Restored some examples

view details

push time in 11 days

issue commentmobxjs/mobx-react-lite

useObservable hook should have a delay option

That is what observer already does, only rerender when something that is used in state changed, so the entire concept of selectors isn't needed in mobx. See https://mobx.js.org/refguide/observer-component.html#observer-automatically-tracks-observables-used-during-render .

A delay option won't be supported because it is a symptom of another problem; your components are too slow, or your updates to the state themselves should be batched, rather than creating a situation where the UI is getting out of sync with the state. Beyond that, throttling render (which imho is generally a bad idea) can be achieved with utilities like react-debounce-render and there is no need to solve that in MobX.

On Tue, Jul 28, 2020 at 8:38 PM rgranger notifications@github.com wrote:

useObservable was deprecated in 1.x and it's gone in 2.x. Make sure to update.

Ok, my bad then.

I expected a hook that would do like useSelector in a redux store : extract data from the store and automatically render the react component on changes.

I don't think there is an equivalent in mobx yet ?

Maybe there could be a generic useReaction hook or something alike, that does the useState() and useEffect() internally ?

Or maybe my use case is too marginal to make something generic.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/mobxjs/mobx-react-lite/issues/297#issuecomment-665237174, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN4NBGVJMRFVASQH6Z72NLR54SM3ANCNFSM4PKWWPYA .

rgranger

comment created time in 11 days

more