forked from dart-lang/site-www
-
Notifications
You must be signed in to change notification settings - Fork 0
/
firebase.json
222 lines (220 loc) · 22.6 KB
/
firebase.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
{
"hosting": {
"public": "_site",
"cleanUrls": true,
"trailingSlash": false,
"headers": [{
"source": "**/*.@(txt|json)",
"headers": [ { "key": "Access-Control-Allow-Origin", "value": "*" } ]
}],
"redirects": [
{ "source": "/\\)", "destination": "/", "type": 301 },
{ "source": "/+", "destination": "https://plus.sandbox.google.com/+dartlang", "type": 301 },
{ "source": "/+dart2js", "destination": "/tools/dart2js", "type": 301 },
{ "source": "/+isolates", "destination": "https://dart-lang.github.io/observatory/isolate.html", "type": 301 },
{ "source": "/+lexicalscope", "destination": "/guides/language/language-tour#lexical-scope", "type": 301 },
{ "source": "/+pub", "destination": "/tools/pub", "type": 301 },
{ "source": "/2.0", "destination": "/dart-2", "type": 301 },
{ "source": "/angular/cheatsheet", "destination": "https://angulardart.dev/cheatsheet", "type": 301 },
{ "source": "/api", "destination": "https://api.dart.dev", "type": 301 },
{ "source": "/articles/api-naming-guide{,/**}", "destination": "/guides/language/effective-dart/design", "type": 301 },
{ "source": "/articles/server{,/**}", "destination": "/server", "type": 301 },
{ "source": "/articles/language", "destination": "/articles", "type": 301 },
{ "source": "/articles/libraries", "destination": "/articles", "type": 301 },
{ "source": "/articles/await-async", "destination": "/codelabs/async-await", "type": 301 },
{ "source": "/articles/language/await-async", "destination": "/codelabs/async-await", "type": 301 },
{ "source": "/articles/creating-streams", "destination": "/articles/libraries/creating-streams", "type": 301 },
{ "source": "/articles/dart-unit-tests{,/**}", "destination": "https://github.com/dart-lang/test#writing-tests", "type": 301 },
{ "source": "/articles/dart-vm/io", "destination": "/articles/libraries/dart-io", "type": 301 },
{ "source": "/articles/dart-vm/native-extensions", "destination": "/server/c-interop-native-extensions", "type": 301 },
{ "source": "/server/c-interop", "destination": "/guides/libraries/c-interop", "type": 301 },
{ "source": "/articles/dart-vm/snapshots", "destination": "https://github.com/dart-lang/sdk/wiki/Snapshots", "type": 301 },
{ "source": "/articles/dart-vm/why-not-bytecode", "destination": "/faq#q-why-didnt-google-build-a-bytecode-vm-targetable-by-multiple-languages-including-dart", "type": 301 },
{ "source": "/articles/design-decisions/why-dart-types", "destination": "/faq#types", "type": 301 },
{ "source": "/articles/doc-comment-guidelines", "destination": "/guides/language/effective-dart/documentation", "type": 301 },
{ "source": "/articles/event-loop", "destination": "https://medium.com/dartlang/dart-asynchronous-programming-isolates-and-event-loops-bffc3e296a6a", "type": 301 },
{ "source": "/articles/archive/event-loop", "destination": "https://medium.com/dartlang/dart-asynchronous-programming-isolates-and-event-loops-bffc3e296a6a", "type": 301 },
{ "source": "/articles/libraries/converters-and-codecs", "destination": "/articles/archive/converters-and-codecs", "type": 301 },
{ "source": "/articles/feet-wet-streams{,/**}", "destination": "/tutorials/language/streams", "type": 301 },
{ "source": "/articles/futures-and-error-handling", "destination": "/guides/libraries/futures-error-handling", "type": 301 },
{ "source": "/articles/idiomatic-dart{,/**}", "destination": "/guides/language/effective-dart", "type": 301 },
{ "source": "/articles/io", "destination": "/articles/libraries/dart-io", "type": 301 },
{ "source": "/articles/js-dart-interop", "destination": "/web/libraries#js-interop", "type": 301 },
{ "source": "/articles/json-web-service", "destination": "/guides/json", "type": 301 },
{ "source": "/articles/language/optional-types", "destination": "/faq#types", "type": 301 },
{ "source": "/articles/m1-language-changes{,/**}", "destination": "/guides/language/spec", "type": 301 },
{ "source": "/articles/mixins", "destination": "/guides/language/language-tour#adding-features-to-a-class-mixins", "type": 301 },
{ "source": "/articles/language/mixins", "destination": "/guides/language/language-tour#adding-features-to-a-class-mixins", "type": 301 },
{ "source": "/articles/mocking-with-dart", "destination": "https://pub.dev/packages/mockito", "type": 301 },
{ "source": "/articles/native-extensions-for-standalone-dart-vm", "destination": "/server/c-interop-native-extensions", "type": 301 },
{ "source": "/articles/server/native-extensions", "destination": "/server/c-interop-native-extensions", "type": 301 },
{ "source": "/articles/optional-types", "destination": "/faq#types", "type": 301 },
{ "source": "/articles/serialization", "destination": "/guides/json", "type": 301 },
{ "source": "/articles/snapshots", "destination": "https://github.com/dart-lang/sdk/wiki/Snapshots", "type": 301 },
{ "source": "/articles/style-guide{,/**}", "destination": "/guides/language/effective-dart/style", "type": 301 },
{ "source": "/articles/using-future-based-apis{,/**}", "destination": "/codelabs/async-await", "type": 301 },
{ "source": "/articles/why-dart-types", "destination": "/faq#types", "type": 301 },
{ "source": "/articles/why-not-bytecode", "destination": "/faq#q-why-didnt-google-build-a-bytecode-vm-targetable-by-multiple-languages-including-dart", "type": 301 },
{ "source": "/articles/numeric-computation", "destination": "/articles/archive/numeric-computation", "type": 301 },
{ "source": "/articles/dart-vm/numeric-computation", "destination": "/articles/archive/numeric-computation", "type": 301 },
{ "source": "/articles/libraries/zones", "destination": "/articles/archive/zones", "type": 301 },
{ "source": "/articles/zones", "destination": "/articles/archive/zones", "type": 301 },
{ "source": "/articles/m*{,/**}", "destination": "/articles", "type": 301 },
{ "source": "/assets/dart-logo-for-shares*.png", "destination": "/assets/shared/dart-logo-for-shares.png?2", "type": 301 },
{ "source": "/assets/dart-logo-wordmark*.png", "destination": "/assets/shared/dart-logo-for-shares.png?2", "type": 301 },
{ "source": "/atom.xml", "destination": "https://news.dartlang.org/feeds/posts/default", "type": 301 },
{ "source": "/authors/bob-nystrom?(.html)", "destination": "/resources/authors/bob-nystrom", "type": 301 },
{ "source": "/authors/florian-loitsch?(.html)", "destination": "/resources/authors/florian-loitsch", "type": 301 },
{ "source": "/authors/gilad-bracha?(.html)", "destination": "/resources/authors/gilad-bracha", "type": 301 },
{ "source": "/authors{,/**}", "destination": "/resources/authors", "type": 301 },
{ "source": "/books", "destination": "/resources/books", "type": 301 },
{ "source": "/cloud{,/**}", "destination": "https://dart-lang.github.io/server", "type": 301 },
{ "source": "/codelabs/server{,/**}", "destination": "https://dart-lang.github.io/server/codelab", "type": 301 },
{ "source": "/dart-2.0", "destination": "/dart-2", "type": 301 },
{ "source": "/dart-by-example", "destination": "/samples", "type": 301 },
{ "source": "/dart-tips{,/**}", "destination": "/guides/language/language-tour", "type": 301 },
{ "source": "/dart-vm/dart-by-example", "destination": "/samples", "type": 301 },
{ "source": "/dart2js-reflection", "destination": "https://github.com/dart-lang/sdk/issues/21654", "type": 301 },
{ "source": "/dartisans{,/**}", "destination": "/", "type": 301 },
{ "source": "/dartium{,/**}", "destination": "/web/dart-2#tools", "type": 301 },
{ "source": "/dev{,/**}", "destination": "https://api.dart.dev/dev", "type": 301 },
{ "source": "/devices", "destination": "/platforms", "type": 301 },
{ "source": "/docs/api{,/**}", "destination": "https://api.dart.dev", "type": 301 },
{ "source": "/docs/cookbook", "destination": "/samples", "type": 301 },
{ "source": "/docs/dart-up-and-running/**/ch02?(.html)", "destination": "/guides/language/language-tour", "type": 301 },
{ "source": "/docs/dart-up-and-running/**/ch03?(.html)", "destination": "/guides/libraries/library-tour", "type": 301 },
{ "source": "/docs/dart-up-and-running/contents/ch04-tools-dart2js?(.html)", "destination": "/tools/dart2js", "type": 301 },
{ "source": "/docs/dart-up-and-running/contents/ch04-tools-dart_analyzer?(.html)", "destination": "https://github.com/dart-lang/sdk/tree/master/pkg/analyzer_cli#dartanalyzer", "type": 301 },
{ "source": "/docs/dart-up-and-running/contents/ch04-tools-dartium?(.html)", "destination": "/web/dart-2#tools", "type": 301 },
{ "source": "/docs/dart-up-and-running{,/**}", "destination": "/resources/books", "type": 301 },
{ "source": "/docs/editor", "destination": "/tools", "type": 301 },
{ "source": "/docs/editor/getting-started?(.html)", "destination": "/platforms", "type": 301 },
{ "source": "/docs/getting-started{,/**}", "destination": "/platforms", "type": 301 },
{ "source": "/guides/get-started", "destination": "/platforms", "type": 301 },
{ "source": "/guides/platforms", "destination": "/platforms", "type": 301 },
{ "source": "/docs/language-tour", "destination": "/guides/language/language-tour", "type": 301 },
{ "source": "/docs/library-tour", "destination": "/guides/libraries/library-tour", "type": 301 },
{ "source": "/docs/pub-package-manager", "destination": "/tools/pub", "type": 301 },
{ "source": "/docs/pub-package-manager/pubspec{,/**}", "destination": "/tools/pub/pubspec", "type": 301 },
{ "source": "/docs/serverguide?(.html)", "destination": "https://dart-lang.github.io/server", "type": 301 },
{ "source": "/docs/spec/EnumsTC52draft.pdf", "destination": "/guides/language/language-tour#enums", "type": 301 },
{ "source": "/docs/spec/deferred-loading?(.html)", "destination": "/guides/language/language-tour#deferred-loading", "type": 301 },
{ "source": "/docs/spec{,/**}", "destination": "/guides/language/spec", "type": 301 },
{ "source": "/docs/synonyms", "destination": "/resources/synonyms", "type": 301 },
{ "source": "/docs/technical-overview{,/**}", "destination": "/platforms", "type": 301 },
{ "source": "/docs/tutorials/add-elements", "destination": "/tutorials/web/low-level-html/add-elements", "type": 301 },
{ "source": "/docs/tutorials/cmdline", "destination": "/tutorials/server/cmdline", "type": 301 },
{ "source": "/docs/tutorials/connect-dart-html", "destination": "/tutorials/web/low-level-html/connect-dart-html", "type": 301 },
{ "source": "/docs/tutorials/fetchdata", "destination": "/tutorials/web/fetch-data", "type": 301 },
{ "source": "/docs/tutorials/forms{,/**}", "destination": "https://angulardart.dev/guide/forms", "type": 301 },
{ "source": "/docs/tutorials/futures", "destination": "/codelabs/async-await", "type": 301 },
{ "source": "/tutorials/language/futures", "destination": "/codelabs/async-await", "type": 301 },
{ "source": "/docs/tutorials/get-started", "destination": "/tutorials/server/get-started", "type": 301 },
{ "source": "/docs/tutorials/httpserver", "destination": "/tutorials/server/httpserver", "type": 301 },
{ "source": "/docs/tutorials/indexeddb{,/**}", "destination": "https://api.dart.dev/stable/dart-indexed_db/dart-indexed_db-library.html", "type": 301 },
{ "source": "/docs/tutorials/remove-elements", "destination": "/tutorials/web/low-level-html/remove-elements", "type": 301 },
{ "source": "/docs/tutorials/shared-pkgs", "destination": "/tutorials/libraries/shared-pkgs", "type": 301 },
{ "source": "/docs/tutorials/streams", "destination": "/tutorials/language/streams", "type": 301 },
{ "source": "/docs/tutorials{,/**}", "destination": "/tutorials", "type": 301 },
{ "source": "/docs{,/**}", "destination": "/guides", "type": 301 },
{ "source": "/downloads{,.html,/**}", "destination": "/get-dart", "type": 301 },
{ "source": "/eclipse{,/**}", "destination": "/tools", "type": 301 },
{ "source": "/editor{,/**}", "destination": "/tools", "type": 301 },
{ "source": "/effective-dart", "destination": "/guides/language/effective-dart", "type": 301 },
{ "source": "/effective-dart/:page*", "destination": "/guides/language/effective-dart/:page*", "type": 301 },
{ "source": "/events/2015{,/**}", "destination": "https://www.youtube.com/watch?list=PLOU2XLYxmsIIQorIS8gagUiMau9S84vZV&v=FiXiI2Atexc", "type": 301 },
{ "source": "/events/2016{,/**}", "destination": "https://events.dartlang.org/2016/summit", "type": 301 },
{ "source": "/events{,/**}", "destination": "https://events.dartlang.org", "type": 301 },
{ "source": "/flutter", "destination": "https://flutter.io", "type": 301 },
{ "source": "/go/analysis-server-protocol", "destination": "https://htmlpreview.github.io/?https://github.com/dart-lang/sdk/blob/master/pkg/analysis_server/doc/api.html", "type": 301 },
{ "source": "/go/dart-fix", "destination": "https://github.com/dart-lang/sdk/blob/master/pkg/dartdev/doc/dart-fix.md", "type": 301 },
{ "source": "/go/experiments", "destination": "/tools/experiment-flags", "type": 301 },
{ "source": "/go/null-safety-migration", "destination": "/null-safety/migration-guide", "type": 301 },
{ "source": "/go/test-docs/:page*", "destination": "https://github.com/dart-lang/test/blob/master/pkgs/test/doc/:page*", "type": 301 },
{ "source": "/go/unsound-null-safety", "destination": "/null-safety/unsound-null-safety", "type": 301 },
{ "source": "/googleapis", "destination": "https://github.com/dart-lang/googleapis", "type": 301 },
{ "source": "/guides/language/common-prob", "destination": "/guides/language/sound-problems", "type": 301 },
{ "source": "/guides/language/library-tour", "destination": "/guides/libraries/library-tour", "type": 301 },
{ "source": "/guides/language/sound-faq", "destination": "/guides/language/type-system", "type": 301 },
{ "source": "/guides/language/sound-dart", "destination": "/guides/language/type-system", "type": 301 },
{ "source": "/hackathons{,/**}", "destination": "/", "type": 301 },
{ "source": "/hangouts{,/**}", "destination": "/", "type": 301 },
{ "source": "/install/archive", "destination": "/tools/sdk/archive", "type": 301 },
{ "source": "/install/**", "destination": "/get-dart", "type": 301 },
{ "source": "/install", "destination": "/get-dart", "type": 301 },
{ "source": "/language-tour", "destination": "/guides/language/language-tour", "type": 301 },
{ "source": "/logos", "destination": "https://github.com/dart-lang/logos", "type": 301 },
{ "source": "/linter/lints/:lint*", "destination": "https://dart-lang.github.io/linter/lints/:lints*", "type": 301 },
{ "source": "/mailing-list", "destination": "https://groups.google.com/a/dartlang.org/forum/#!forum/misc", "type": 301 },
{ "source": "/news{,/**}", "destination": "https://news.dartlang.org/", "type": 301 },
{ "source": "/observatory{,/**}", "destination": "https://dart-lang.github.io/observatory", "type": 301 },
{ "source": "/posters{,/**}", "destination": "https://github.com/dart-lang/www.dartlang.org/tree/f5f235e56e51d38d9f4d01f949d0a485f3828056/src/site/posters", "type": 301 },
{ "source": "/pub/tools/editor", "destination": "/tools", "type": 301 },
{ "source": "/redirects/sdk-download-*", "destination": "/get-dart", "type": 301 },
{ "source": "/resources/dart-tips*{,/**}", "destination": "/guides/language/language-tour", "type": 301 },
{ "source": "/samples-files/portmanteaux.json", "destination": "/f/portmanteaux.json", "type": 301 },
{ "source": "/samples/appcache{,/**}", "destination": "https://github.com/dart-lang/dart-samples/tree/master/html5/web/appcache/beginner", "type": 301 },
{ "source": "/samples/dnd{,/**}", "destination": "https://github.com/dart-lang/dart-samples/tree/master/html5/web/dnd/basics", "type": 301 },
{ "source": "/samples/dndfiles{,/**}", "destination": "https://github.com/dart-lang/dart-samples/tree/master/html5/web/file/dndfiles", "type": 301 },
{ "source": "/samples/filesystem{,/**}", "destination": "https://github.com/dart-lang/dart-samples/tree/master/html5/web/file/filesystem", "type": 301 },
{ "source": "/samples/geolocation{,/**}", "destination": "https://github.com/dart-lang/dart-samples/tree/master/html5/web/geolocation/trip_meter", "type": 301 },
{ "source": "/samples/imagefilters{,/**}", "destination": "https://github.com/dart-lang/dart-samples/tree/master/html5/web/canvas/imagefilters", "type": 301 },
{ "source": "/samples/indexeddb_todo{,/**}", "destination": "https://github.com/dart-lang/dart-samples/tree/master/html5/web/indexeddb", "type": 301 },
{ "source": "/samples/localstorage{,/**}", "destination": "https://github.com/dart-lang/dart-samples/tree/master/html5/web/localstorage/basics", "type": 301 },
{ "source": "/samples/raf{,/**}", "destination": "https://github.com/dart-lang/dart-samples/tree/master/html5/web/speed/animations", "type": 301 },
{ "source": "/samples/solar3d{,/**}", "destination": "https://github.com/dart-lang/dart-samples/tree/master/html5/web/webgl/solar3d", "type": 301 },
{ "source": "/samples/spirodraw{,/**}", "destination": "/samples", "type": 301 },
{ "source": "/samples/sunflower{,/**}", "destination": "https://gist.github.com/49bde0c1ed780decc902f3d4d06d8f0c", "type": 301 },
{ "source": "/samples/terminal{,/**}", "destination": "https://github.com/dart-lang/dart-samples/tree/master/html5/web/file/terminal", "type": 301 },
{ "source": "/samples/todomvc{,/**}", "destination": "/samples", "type": 301 },
{ "source": "/samples/video{,/**}", "destination": "/samples", "type": 301 },
{ "source": "/samples/webaudio{,/**}", "destination": "https://github.com/dart-lang/dart-samples/tree/master/html5/web/webaudio/intro", "type": 301 },
{ "source": "/samples/websockets{,/**}", "destination": "https://github.com/dart-lang/dart-samples/tree/master/html5/web/websockets/basics", "type": 301 },
{ "source": "/server/app-engine{,/**}", "destination": "https://dart-lang.github.io/server/google-cloud-platform", "type": 301 },
{ "source": "/server/google-cloud-platform{,/**}", "destination": "https://dart-lang.github.io/server/google-cloud-platform", "type": 301 },
{ "source": "/server/io-library-tour", "destination": "/guides/libraries/library-tour#dartio", "type": 301 },
{ "source": "/server/tls-ssl?(.html)", "destination": "https://dart-lang.github.io/server/tls-ssl.html", "type": 301 },
{ "source": "/server/tools/dart-vm", "destination": "/tools/dart-vm", "type": 301 },
{ "source": "/server/tools", "destination": "/tools", "type": 301 },
{ "source": "/dart-vm", "destination": "/server", "type": 301 },
{ "source": "/dart-vm/:page*", "destination": "/server/:page*", "type": 301 },
{ "source": "/tutorials/dart-vm", "destination": "/tutorials/server", "type": 301 },
{ "source": "/tutorials/dart-vm/:page*", "destination": "/tutorials/server/:page*", "type": 301 },
{ "source": "/stable{,/**}", "destination": "https://api.dart.dev/stable", "type": 301 },
{ "source": "/support/faq?(.html)", "destination": "/faq", "type": 301 },
{ "source": "/support{,/**}", "destination": "/community", "type": 301 },
{ "source": "/tools/analyzer", "destination": "/tools/dartanalyzer", "type": 301 },
{ "source": "/tools/dartdocgen{,/**}", "destination": "https://github.com/dart-lang/dartdoc#dartdoc", "type": 301 },
{ "source": "/tools/dartium?(.html)", "destination": "/web/dart-2#tools", "type": 301 },
{ "source": "/tools/debian?(.html)", "destination": "/get-dart", "type": 301 },
{ "source": "/tools/docgen{,/**}", "destination": "https://pub.dev/packages/dartdoc", "type": 301 },
{ "source": "/tools/download-archive{,/**}", "destination": "/tools/sdk/archive", "type": 301 },
{ "source": "/tools/download-editor?(.html)", "destination": "/tools", "type": 301 },
{ "source": "/tools/**/download{,.html,/**}", "destination": "/get-dart", "type": 301 },
{ "source": "/tools/eclipse-plugin", "destination": "/tools", "type": 301 },
{ "source": "/tools/dart2aot", "destination": "/tools/dart2native", "type": 301 },
{ "source": "/tools/editor{,/**}", "destination": "/tools", "type": 301 },
{ "source": "/tools/faq?(.html)", "destination": "/faq", "type": 301 },
{ "source": "/tools/observatory{,/**}", "destination": "https://dart-lang.github.io/observatory", "type": 301 },
{ "source": "/tools/**/private-files?(.html)", "destination": "/guides/libraries/private-files", "type": 301 },
{ "source": "/tools/pub/assets-and-*transformers?(.html)", "destination": "/tools/pub/obsolete", "type": 301 },
{ "source": "/tools/pub/cmd/pub-build?(.html)", "destination": "/tools/webdev", "type": 301 },
{ "source": "/tools/pub/cmd/pub-serve?(.html)", "destination": "/tools/webdev", "type": 301 },
{ "source": "/tools/pub/create-library-packages?(.html)", "destination": "/guides/libraries/create-library-packages", "type": 301 },
{ "source": "/tools/pub/faq?(.html)", "destination": "/tools/faq#pub", "type": 301 },
{ "source": "/tools/pub/installing?(.html)", "destination": "/tools/pub/environment-variables", "type": 301 },
{ "source": "/tools/pub/transformers{,/**}", "destination": "/tools/pub/obsolete", "type": 301 },
{ "source": "/tools/pub/get-started?(.html)", "destination": "/guides/packages", "type": 301 },
{ "source": "/tools/pub", "destination": "/tools/pub/cmd", "type": 301 },
{ "source": "/{docs,tools}/{pub-package-manager,pub/cmd,pub/tools/pub}/glossary?(.html)", "destination": "/tools/pub/glossary", "type": 301 },
{ "source": "/tools/webstorm?(.html)", "destination": "/tools", "type": 301 },
{ "source": "/tos@(|.htm|.html)", "destination": "/terms", "type": 301 },
{ "source": "/web-ui/observables{,/**}", "destination": "https://pub.dev/packages/observable", "type": 301 },
{ "source": "/dart-1", "destination": "https://v1-dartlang-org.firebaseapp.com", "type": 301 },
{ "source": "/resources/dartpad-tutorials.pdf", "destination": "/resources/dartpad-best-practices", "type": 301 },
{ "source": "/packages", "destination": "https://pub.dev", "type": 301 },
{ "source": "/sdk-changelog-2.4.0", "destination": "https://github.com/dart-lang/sdk/blob/master/CHANGELOG.md#240---2019-06-27", "type": 301 },
{ "source": "/go/sdk-constraint", "destination": "https://dart.dev/tools/pub/pubspec#sdk-constraints", "type": 301 }
]
}
}