web-stories-wp
web-stories-wp copied to clipboard
TypeScript: Migrate `migration` package
Context
Summary
Relevant Technical Choices
To-do
- [ ] Should we carry all used types in each file? What if they're used (changed / migrated) just once?
- [ ]
migrate.ts
file'smigrationFn
needs figuring out - [x] Depth error with
PageV[X]
andStoryV[X]
types.
User-facing changes
Testing Instructions
- [x] This is a non-user-facing change and requires no QA
This PR can be tested by following these steps:
Reviews
Does this PR have a security-related impact?
Does this PR change what data or activity we track or use?
Does this PR have a legal-related impact?
Checklist
- [ ] This PR addresses an existing issue and I have linked this PR to it in ZenHub
- [ ] I have tested this code to the best of my abilities
- [ ] I have verified accessibility to the best of my abilities (docs)
- [ ] I have verified i18n and l10n (translation, right-to-left layout) to the best of my abilities
- [ ] This code is covered by automated tests (unit, integration, and/or e2e) to verify it works as intended (docs)
- [ ] I have added documentation where necessary
- [ ] I have added a matching
Type: XYZ
label to the PR
Fixes #12239
I also found this article, that has some ideas about how to go about this (recognizing some of the same issues, that we run into here). They made the version a generic, which I really like. I don't know if we can scale this concept to our solution though?
Nice find!
As far as I can see, it would still require defining a new type in each file and using that as the new base?
@swissspidy When you have a moment, can you also check if all seems ok to you with the current approach? I'm at V10 right now, wouldn't want to get to the end to then start changing all the files again đ
Some remaining topics:
-
EDIT: I'm not seeing this error anymore, not sure why or what changed. ~Getting the following TS error now starting from V35 -- due to extending the Story and Page in every file, it complains about the depth of it... Should we disable the rule for this package? An alternative could be re-defining the types fully after each 30 migrations for example. Thoughts?~
-
Each file now includes a versioned type for
Story
,Page
, all element types. However, there are some more types that are migrated, for example,Resource
is a quite common one but there are some others that are changed just once or twice. I'm currently thinking that perhaps for more common types (such asResource
per each element), we could define a type per each file but only after the type is changed for the first time. E.g. theresource
is introduced in V4 but it's modified the first time for Video in V13, so perhaps it would make sense to start adding the VideoResource type to each file starting from V13? -
Not sure what to do with types that are rarely touched, for example
Pattern
is changed once. Should we still add a PatternV[X] to each migration file? See alsoTrack
which is changed twice. -
Let me know if you have a good idea for typing the migration functions in
migrate.ts
file (each migration fn accepts a different version of the story) -- still figuring out that one.
Plugin builds for 7a94718115dd699860950c03b8c4adfe748a26c1 are ready :bellhop_bell:!
- Download development build
- Download production build
Size Change: +276 B (0%)
Total Size: 2.71 MB
Filename | Size | Change | |
---|---|---|---|
assets/js/1814.js |
0 B | -7.48 kB (removed) | đ |
assets/js/1583.js |
7.75 kB | +7.75 kB (new file) | đ |
âšī¸ View Unchanged
Filename | Size | Change |
---|---|---|
assets/css/carousel-view-rtl.css |
702 B | 0 B |
assets/css/carousel-view.css |
701 B | 0 B |
assets/css/web-stories-block-rtl.css |
4.52 kB | 0 B |
assets/css/web-stories-block.css |
4.56 kB | 0 B |
assets/css/web-stories-embed-rtl.css |
318 B | 0 B |
assets/css/web-stories-embed.css |
317 B | 0 B |
assets/css/web-stories-list-styles-rtl.css |
2.36 kB | 0 B |
assets/css/web-stories-list-styles.css |
2.39 kB | 0 B |
assets/css/web-stories-theme-style-twentyeleven-rtl.css |
102 B | 0 B |
assets/css/web-stories-theme-style-twentyeleven.css |
102 B | 0 B |
assets/css/web-stories-theme-style-twentyfifteen-rtl.css |
251 B | 0 B |
assets/css/web-stories-theme-style-twentyfifteen.css |
251 B | 0 B |
assets/css/web-stories-theme-style-twentyfourteen-rtl.css |
287 B | 0 B |
assets/css/web-stories-theme-style-twentyfourteen.css |
287 B | 0 B |
assets/css/web-stories-theme-style-twentyseventeen-rtl.css |
288 B | 0 B |
assets/css/web-stories-theme-style-twentyseventeen.css |
288 B | 0 B |
assets/css/web-stories-theme-style-twentysixteen-rtl.css |
224 B | 0 B |
assets/css/web-stories-theme-style-twentysixteen.css |
224 B | 0 B |
assets/css/web-stories-theme-style-twentyten-rtl.css |
143 B | 0 B |
assets/css/web-stories-theme-style-twentyten.css |
143 B | 0 B |
assets/css/web-stories-theme-style-twentytwelve-rtl.css |
256 B | 0 B |
assets/css/web-stories-theme-style-twentytwelve.css |
256 B | 0 B |
assets/css/web-stories-theme-style-twentytwenty-rtl.css |
86 B | 0 B |
assets/css/web-stories-theme-style-twentytwenty.css |
86 B | 0 B |
assets/css/web-stories-theme-style-twentytwentyone-rtl.css |
326 B | 0 B |
assets/css/web-stories-theme-style-twentytwentyone.css |
326 B | 0 B |
assets/css/web-stories-widget-rtl.css |
482 B | 0 B |
assets/css/web-stories-widget.css |
482 B | 0 B |
assets/css/wp-dashboard-rtl.css |
657 B | 0 B |
assets/css/wp-dashboard.css |
659 B | 0 B |
assets/css/wp-story-editor-rtl.css |
737 B | 0 B |
assets/css/wp-story-editor.css |
738 B | 0 B |
assets/js/4422.js |
49.3 kB | 0 B |
assets/js/5369.js |
90.4 kB | 0 B |
assets/js/5918.js |
34.7 kB | 0 B |
assets/js/81.js |
203 kB | 0 B |
assets/js/9750.js |
12.8 kB | 0 B |
assets/js/carousel-view.js |
3.41 kB | 0 B |
assets/js/chunk-colorthief.js |
2.64 kB | 0 B |
assets/js/chunk-ffmpeg.js |
5.89 kB | 0 B |
assets/js/chunk-focus-visible.js |
1.01 kB | 0 B |
assets/js/chunk-html-to-image.js |
4.5 kB | 0 B |
assets/js/chunk-opentype.js |
96 B | 0 B |
assets/js/chunk-react-calendar.js |
12.5 kB | 0 B |
assets/js/chunk-react-color.js |
44.3 kB | 0 B |
assets/js/chunk-web-animations-js.js |
14.6 kB | 0 B |
assets/js/chunk-web-stories-template-0-metaData.js |
545 B | 0 B |
assets/js/chunk-web-stories-template-0.js |
11.4 kB | 0 B |
assets/js/chunk-web-stories-template-1-metaData.js |
539 B | 0 B |
assets/js/chunk-web-stories-template-1.js |
9.61 kB | 0 B |
assets/js/chunk-web-stories-template-10-metaData.js |
533 B | 0 B |
assets/js/chunk-web-stories-template-10.js |
7.37 kB | 0 B |
assets/js/chunk-web-stories-template-11-metaData.js |
539 B | 0 B |
assets/js/chunk-web-stories-template-11.js |
9.09 kB | 0 B |
assets/js/chunk-web-stories-template-12-metaData.js |
497 B | 0 B |
assets/js/chunk-web-stories-template-12.js |
9.7 kB | 0 B |
assets/js/chunk-web-stories-template-13-metaData.js |
525 B | 0 B |
assets/js/chunk-web-stories-template-13.js |
7.4 kB | 0 B |
assets/js/chunk-web-stories-template-14-metaData.js |
582 B | 0 B |
assets/js/chunk-web-stories-template-14.js |
7.37 kB | 0 B |
assets/js/chunk-web-stories-template-15-metaData.js |
544 B | 0 B |
assets/js/chunk-web-stories-template-15.js |
9 kB | 0 B |
assets/js/chunk-web-stories-template-16-metaData.js |
588 B | 0 B |
assets/js/chunk-web-stories-template-16.js |
10.9 kB | 0 B |
assets/js/chunk-web-stories-template-17-metaData.js |
539 B | 0 B |
assets/js/chunk-web-stories-template-17.js |
9.2 kB | 0 B |
assets/js/chunk-web-stories-template-18-metaData.js |
585 B | 0 B |
assets/js/chunk-web-stories-template-18.js |
9.91 kB | 0 B |
assets/js/chunk-web-stories-template-19-metaData.js |
501 B | 0 B |
assets/js/chunk-web-stories-template-19.js |
10.8 kB | 0 B |
assets/js/chunk-web-stories-template-2-metaData.js |
586 B | 0 B |
assets/js/chunk-web-stories-template-2.js |
9.3 kB | 0 B |
assets/js/chunk-web-stories-template-20-metaData.js |
548 B | 0 B |
assets/js/chunk-web-stories-template-20.js |
9.01 kB | 0 B |
assets/js/chunk-web-stories-template-21-metaData.js |
535 B | 0 B |
assets/js/chunk-web-stories-template-21.js |
9.85 kB | 0 B |
assets/js/chunk-web-stories-template-22-metaData.js |
525 B | 0 B |
assets/js/chunk-web-stories-template-22.js |
7.83 kB | 0 B |
assets/js/chunk-web-stories-template-23-metaData.js |
605 B | 0 B |
assets/js/chunk-web-stories-template-23.js |
7.48 kB | 0 B |
assets/js/chunk-web-stories-template-24-metaData.js |
516 B | 0 B |
assets/js/chunk-web-stories-template-24.js |
11.7 kB | 0 B |
assets/js/chunk-web-stories-template-25-metaData.js |
544 B | 0 B |
assets/js/chunk-web-stories-template-25.js |
7.06 kB | 0 B |
assets/js/chunk-web-stories-template-26-metaData.js |
601 B | 0 B |
assets/js/chunk-web-stories-template-26.js |
7.27 kB | 0 B |
assets/js/chunk-web-stories-template-27-metaData.js |
542 B | 0 B |
assets/js/chunk-web-stories-template-27.js |
7.82 kB | 0 B |
assets/js/chunk-web-stories-template-28-metaData.js |
532 B | 0 B |
assets/js/chunk-web-stories-template-28.js |
9.07 kB | 0 B |
assets/js/chunk-web-stories-template-29-metaData.js |
562 B | 0 B |
assets/js/chunk-web-stories-template-29.js |
9.25 kB | 0 B |
assets/js/chunk-web-stories-template-3-metaData.js |
539 B | 0 B |
assets/js/chunk-web-stories-template-3.js |
8.42 kB | 0 B |
assets/js/chunk-web-stories-template-30-metaData.js |
576 B | 0 B |
assets/js/chunk-web-stories-template-30.js |
7.89 kB | 0 B |
assets/js/chunk-web-stories-template-31-metaData.js |
502 B | 0 B |
assets/js/chunk-web-stories-template-31.js |
10.3 kB | 0 B |
assets/js/chunk-web-stories-template-32-metaData.js |
552 B | 0 B |
assets/js/chunk-web-stories-template-32.js |
13.3 kB | 0 B |
assets/js/chunk-web-stories-template-33-metaData.js |
492 B | 0 B |
assets/js/chunk-web-stories-template-33.js |
9.07 kB | 0 B |
assets/js/chunk-web-stories-template-34-metaData.js |
571 B | 0 B |
assets/js/chunk-web-stories-template-34.js |
7.58 kB | 0 B |
assets/js/chunk-web-stories-template-35-metaData.js |
566 B | 0 B |
assets/js/chunk-web-stories-template-35.js |
8.91 kB | 0 B |
assets/js/chunk-web-stories-template-36-metaData.js |
577 B | 0 B |
assets/js/chunk-web-stories-template-36.js |
12.7 kB | 0 B |
assets/js/chunk-web-stories-template-37-metaData.js |
528 B | 0 B |
assets/js/chunk-web-stories-template-37.js |
6.71 kB | 0 B |
assets/js/chunk-web-stories-template-38-metaData.js |
572 B | 0 B |
assets/js/chunk-web-stories-template-38.js |
7.94 kB | 0 B |
assets/js/chunk-web-stories-template-39-metaData.js |
588 B | 0 B |
assets/js/chunk-web-stories-template-39.js |
8.08 kB | 0 B |
assets/js/chunk-web-stories-template-4-metaData.js |
564 B | 0 B |
assets/js/chunk-web-stories-template-4.js |
12.7 kB | 0 B |
assets/js/chunk-web-stories-template-40-metaData.js |
557 B | 0 B |
assets/js/chunk-web-stories-template-40.js |
10.2 kB | 0 B |
assets/js/chunk-web-stories-template-41-metaData.js |
572 B | 0 B |
assets/js/chunk-web-stories-template-41.js |
7.75 kB | 0 B |
assets/js/chunk-web-stories-template-42-metaData.js |
521 B | 0 B |
assets/js/chunk-web-stories-template-42.js |
7 kB | 0 B |
assets/js/chunk-web-stories-template-43-metaData.js |
557 B | 0 B |
assets/js/chunk-web-stories-template-43.js |
8.76 kB | 0 B |
assets/js/chunk-web-stories-template-44-metaData.js |
584 B | 0 B |
assets/js/chunk-web-stories-template-44.js |
11.1 kB | 0 B |
assets/js/chunk-web-stories-template-45-metaData.js |
565 B | 0 B |
assets/js/chunk-web-stories-template-45.js |
7.52 kB | 0 B |
assets/js/chunk-web-stories-template-46-metaData.js |
531 B | 0 B |
assets/js/chunk-web-stories-template-46.js |
5.22 kB | 0 B |
assets/js/chunk-web-stories-template-47-metaData.js |
592 B | 0 B |
assets/js/chunk-web-stories-template-47.js |
9.42 kB | 0 B |
assets/js/chunk-web-stories-template-48-metaData.js |
555 B | 0 B |
assets/js/chunk-web-stories-template-48.js |
9.09 kB | 0 B |
assets/js/chunk-web-stories-template-49-metaData.js |
518 B | 0 B |
assets/js/chunk-web-stories-template-49.js |
9.69 kB | 0 B |
assets/js/chunk-web-stories-template-5-metaData.js |
556 B | 0 B |
assets/js/chunk-web-stories-template-5.js |
9.94 kB | 0 B |
assets/js/chunk-web-stories-template-50-metaData.js |
503 B | 0 B |
assets/js/chunk-web-stories-template-50.js |
9.15 kB | 0 B |
assets/js/chunk-web-stories-template-51-metaData.js |
526 B | 0 B |
assets/js/chunk-web-stories-template-51.js |
10.4 kB | 0 B |
assets/js/chunk-web-stories-template-52-metaData.js |
602 B | 0 B |
assets/js/chunk-web-stories-template-52.js |
10.4 kB | 0 B |
assets/js/chunk-web-stories-template-53-metaData.js |
553 B | 0 B |
assets/js/chunk-web-stories-template-53.js |
5.78 kB | 0 B |
assets/js/chunk-web-stories-template-54-metaData.js |
547 B | 0 B |
assets/js/chunk-web-stories-template-54.js |
7.67 kB | 0 B |
assets/js/chunk-web-stories-template-55-metaData.js |
573 B | 0 B |
assets/js/chunk-web-stories-template-55.js |
7.13 kB | 0 B |
assets/js/chunk-web-stories-template-56-metaData.js |
542 B | 0 B |
assets/js/chunk-web-stories-template-56.js |
9.87 kB | 0 B |
assets/js/chunk-web-stories-template-57-metaData.js |
527 B | 0 B |
assets/js/chunk-web-stories-template-57.js |
14.9 kB | 0 B |
assets/js/chunk-web-stories-template-58-metaData.js |
555 B | 0 B |
assets/js/chunk-web-stories-template-58.js |
5.74 kB | 0 B |
assets/js/chunk-web-stories-template-59-metaData.js |
590 B | 0 B |
assets/js/chunk-web-stories-template-59.js |
8.96 kB | 0 B |
assets/js/chunk-web-stories-template-6-metaData.js |
569 B | 0 B |
assets/js/chunk-web-stories-template-6.js |
7.07 kB | 0 B |
assets/js/chunk-web-stories-template-60-metaData.js |
510 B | 0 B |
assets/js/chunk-web-stories-template-60.js |
9.51 kB | 0 B |
assets/js/chunk-web-stories-template-7-metaData.js |
569 B | 0 B |
assets/js/chunk-web-stories-template-7.js |
7.46 kB | 0 B |
assets/js/chunk-web-stories-template-8-metaData.js |
569 B | 0 B |
assets/js/chunk-web-stories-template-8.js |
8.93 kB | 0 B |
assets/js/chunk-web-stories-template-9-metaData.js |
581 B | 0 B |
assets/js/chunk-web-stories-template-9.js |
8.46 kB | 0 B |
assets/js/chunk-web-stories-templates.js |
1.17 kB | 0 B |
assets/js/chunk-web-stories-textset-0.js |
5.06 kB | 0 B |
assets/js/chunk-web-stories-textset-1.js |
6.65 kB | 0 B |
assets/js/chunk-web-stories-textset-2.js |
7.65 kB | 0 B |
assets/js/chunk-web-stories-textset-3.js |
15.1 kB | 0 B |
assets/js/chunk-web-stories-textset-4.js |
4.15 kB | 0 B |
assets/js/chunk-web-stories-textset-5.js |
5.47 kB | 0 B |
assets/js/chunk-web-stories-textset-6.js |
5.28 kB | 0 B |
assets/js/chunk-web-stories-textset-7.js |
10.2 kB | 0 B |
assets/js/generateBlurhash.worker.worker.js |
1.1 kB | 0 B |
assets/js/imgareaselect.js |
3.77 kB | 0 B |
assets/js/lightbox.js |
550 B | 0 B |
assets/js/tinymce-button.js |
2.85 kB | 0 B |
assets/js/web-stories-activation-notice.js |
27.1 kB | 0 B |
assets/js/web-stories-block.js |
22.6 kB | 0 B |
assets/js/web-stories-embed.js |
20 B | 0 B |
assets/js/web-stories-widget.js |
587 B | 0 B |
assets/js/wp-dashboard.js |
63.7 kB | +1 B (0%) |
assets/js/wp-story-editor.js |
1.44 MB | +2 B (0%) |
Merging with failing Karma tests since those are unrelated.