Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add support for event source for reshape #295

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

ifeelBALANCED
Copy link

Add event source support for reshape operator

@stackblitz
Copy link

stackblitz bot commented Sep 14, 2023

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

@github-actions
Copy link

🚛 size-compare report

Comparing 97763341...97763341

Files wasn't changed
File +/- Base Current +/- gzip Base gzip Current gzip
dist/and/index.cjs = 397 B 397 B = 251 B 251 B
dist/and/index.js = 413 B 413 B = 245 B 245 B
dist/babel-preset.cjs = 434 B 434 B = 249 B 249 B
dist/combine-events/index.cjs = 2.46 kB 2.46 kB = 841 B 841 B
dist/combine-events/index.js = 3.95 kB 3.95 kB = 1.35 kB 1.35 kB
dist/condition/index.cjs = 1.37 kB 1.37 kB = 505 B 505 B
dist/condition/index.js = 1.29 kB 1.29 kB = 461 B 461 B
dist/debounce/index.cjs = 4.21 kB 4.21 kB = 1.37 kB 1.37 kB
dist/debounce/index.js = 4.05 kB 4.05 kB = 1.35 kB 1.35 kB
dist/debug/index.cjs = 11.3 kB 11.3 kB = 3.16 kB 3.16 kB
dist/debug/index.js = 13.3 kB 13.3 kB = 3.79 kB 3.79 kB
dist/delay/index.cjs = 1.79 kB 1.79 kB = 727 B 727 B
dist/delay/index.js = 1.84 kB 1.84 kB = 719 B 719 B
dist/either/index.cjs = 600 B 600 B = 334 B 334 B
dist/either/index.js = 477 B 477 B = 270 B 270 B
dist/empty/index.cjs = 175 B 175 B = 151 B 151 B
dist/empty/index.js = 79 B 79 B = 89 B 89 B
dist/equals/index.cjs = 336 B 336 B = 249 B 249 B
dist/equals/index.js = 221 B 221 B = 179 B 179 B
dist/every/index.cjs = 1.22 kB 1.22 kB = 513 B 513 B
dist/every/index.js = 1.08 kB 1.08 kB = 442 B 442 B
dist/format/index.cjs = 642 B 642 B = 366 B 366 B
dist/format/index.js = 687 B 687 B = 368 B 368 B
dist/in-flight/index.cjs = 641 B 641 B = 357 B 357 B
dist/in-flight/index.js = 546 B 546 B = 305 B 305 B
dist/index.cjs = 1.62 kB 1.62 kB = 369 B 369 B
dist/index.js = 1.13 kB 1.13 kB = 285 B 285 B
dist/interval/index.cjs = 4.26 kB 4.26 kB = 1.27 kB 1.27 kB
dist/interval/index.js = 4.09 kB 4.09 kB = 1.25 kB 1.25 kB
dist/macro.cjs = 1.91 kB 1.91 kB = 808 B 808 B
dist/not/index.cjs = 161 B 161 B = 148 B 148 B
dist/not/index.js = 69 B 69 B = 81 B 81 B
dist/once/index.cjs = 597 B 597 B = 308 B 308 B
dist/once/index.js = 465 B 465 B = 242 B 242 B
dist/or/index.cjs = 393 B 393 B = 249 B 249 B
dist/or/index.js = 411 B 411 B = 245 B 245 B
dist/patronum.cjs = 19.5 kB 19.5 kB = 6.18 kB 6.18 kB
dist/patronum.js = 18.4 kB 18.4 kB = 6.23 kB 6.23 kB
dist/patronum.umd.js = 20.6 kB 20.6 kB = 6.28 kB 6.28 kB
dist/pending/index.cjs = 909 B 909 B = 495 B 495 B
dist/pending/index.js = 828 B 828 B = 444 B 444 B
dist/reset/index.cjs = 526 B 526 B = 312 B 312 B
dist/reset/index.js = 439 B 439 B = 256 B 256 B
dist/reshape/index.cjs = 419 B 419 B = 242 B 242 B
dist/reshape/index.js = 379 B 379 B = 201 B 201 B
dist/snapshot/index.cjs = 763 B 763 B = 350 B 350 B
dist/snapshot/index.js = 648 B 648 B = 292 B 292 B
dist/some/index.cjs = 1.16 kB 1.16 kB = 474 B 474 B
dist/some/index.js = 1.02 kB 1.02 kB = 407 B 407 B
dist/split-map/index.cjs = 628 B 628 B = 359 B 359 B
dist/split-map/index.js = 575 B 575 B = 318 B 318 B
dist/spread/index.cjs = 1.26 kB 1.26 kB = 534 B 534 B
dist/spread/index.js = 1.28 kB 1.28 kB = 516 B 516 B
dist/status/index.cjs = 426 B 426 B = 265 B 265 B
dist/status/index.js = 339 B 339 B = 208 B 208 B
dist/throttle/index.cjs = 2.19 kB 2.19 kB = 858 B 858 B
dist/throttle/index.js = 2.08 kB 2.08 kB = 818 B 818 B
dist/time/index.cjs = 719 B 719 B = 376 B 376 B
dist/time/index.js = 621 B 621 B = 323 B 323 B

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please, delete this change from PR. It is not related to the introduced feature and must be handled in different PR.

Comment on lines +32 to +35
const tempStore = createStore<Type | null>(null);
sample({ source: source, filter: Boolean, target: tempStore });

result[key] = tempStore.map(mapUnit(fn));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you think, not changing the meaning of the operator, and returning an object of events if passed event? Otherwise, we need to change the type of the value (| null) to correctly create a store for each key.

So, I don't understand the case where we need to create stores from the event. We can use restore

const shape = reshape({
  source: restore(eventSource, null),
  shape: {
    length: (original) => original?.length ?? null,
    uppercase: (original) => original?.toUpperCase() ?? null,
    hasSpace: (original) => original?.includes(' ') ?? null,
  },
})

Or use any other default value.

I see the case for event -> event mapping for reshape:

const result = reshape({
  source: eventSource,
  shape: {
    length: (original) => original.length,
    uppercase: (original) => original.toUpperCase(),
    hasSpace: (original) => original.includes(' '),
  },
});

is.event(result.length) // true

Here we don't have to change the type of the shape (reshape shape.length returns number, so result.length has the same type).

@sergeysova sergeysova changed the title feat(reshape): add support of event source add support for event source for reshape Sep 17, 2023
@sergeysova sergeysova self-assigned this Sep 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants