Skip to content
This repository has been archived by the owner on Dec 31, 2022. It is now read-only.

Commit

Permalink
Add type-checking test
Browse files Browse the repository at this point in the history
This makes sure that files generated by the blueprints type-check correctly. As all tests use fixture files to test that the blueprints generate the correct output, we can just add a linting test that type-checks the existing static fixtures files, instead of running the blueprints and type-checking the output afterwards.

To make imports not cause type errors, the appropriate typing packages have been added to `devDependencies`, and `types/index.d.ts` declares all in-app modules used in the test fixtures.
  • Loading branch information
simonihmig committed Jan 8, 2022
1 parent 071bc97 commit dd9ddb7
Show file tree
Hide file tree
Showing 5 changed files with 300 additions and 1 deletion.
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ jobs:

- run: yarn install --frozen-lockfile --non-interactive
- run: yarn lint:js
- run: yarn lint:blueprints
continue-on-error: true

tests:
name: 'Tests: ${{ matrix.os }}'
Expand Down
13 changes: 12 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"scripts": {
"build": "ember build",
"lint:js": "eslint .",
"lint:blueprints": "tsc -p ./test.tsconfig.json",
"start": "ember serve",
"test": "mocha --recursive node-tests"
},
Expand All @@ -35,6 +36,15 @@
},
"devDependencies": {
"@typed-ember/renovate-config": "1.2.1",
"@types/chai": "^4.3.0",
"@types/ember": "^3.16.5",
"@types/ember-mocha": "^0.14.12",
"@types/ember-qunit": "^3.4.15",
"@types/ember-test-helpers": "^1.0.10",
"@types/ember-testing-helpers": "^0.0.4",
"@types/ember__test-helpers": "^2.6.0",
"@types/mocha": "^9.0.0",
"@types/qunit": "^2.11.3",
"broccoli-asset-rev": "3.0.0",
"ember-ajax": "5.0.0",
"ember-cli": "3.22.0",
Expand All @@ -60,7 +70,8 @@
"loader.js": "4.7.0",
"mocha": "8.2.1",
"qunit-dom": "1.6.0",
"testdouble": "3.16.1"
"testdouble": "3.16.1",
"typescript": "^4.5.4"
},
"engines": {
"node": "10.* || 12.* || >= 14.*"
Expand Down
33 changes: 33 additions & 0 deletions test.tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"compilerOptions": {
"target": "es2017",
"allowJs": true,
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"noImplicitAny": true,
"noImplicitThis": true,
"alwaysStrict": true,
"strictNullChecks": true,
"strictPropertyInitialization": true,
"noFallthroughCasesInSwitch": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noEmitOnError": false,
"noEmit": true,
"inlineSourceMap": true,
"inlineSources": true,
"baseUrl": ".",
"module": "es6",
"skipLibCheck": true,
"paths": {
"*": [
"types/*"
]
}
},
"include": [
"node-tests/fixtures/**/*",
"types/**/*"
]
}
16 changes: 16 additions & 0 deletions types/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
declare module "dummy/utils/foo-bar";
declare module "dummy/utils/foo/bar-baz";
declare module "dummy/initializers/foo";
declare module "dummy/instance-initializers/foo";
declare module "my-addon/helpers/foo/bar-baz";
declare module "my-addon/mixins/foo";
declare module "my-app/helpers/foo/bar-baz";
declare module "my-app/initializers/foo";
declare module "my-app/init/initializers/foo";
declare module "my-app/instance-initializers/foo";
declare module "my-app/init/instance-initializers/foo";
declare module "my-app/mixins/foo";
declare module "my-app/tests/helpers/module-for-acceptance";
declare module "my-app/tests/helpers/start-app";
declare module "my-app/utils/foo-bar";
declare module "my-app/utils/foo/bar-baz";
237 changes: 237 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1523,13 +1523,213 @@
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.14.tgz#44d2dd0b5de6185089375d976b4ec5caf6861193"
integrity sha512-G+ITQPXkwTrslfG5L/BksmbLUA0M1iybEsmCWPqzSxsRRhJZimBKJkoMi8fr/CPygPTj4zO5pJH7I2/cm9M7SQ==

"@types/chai@^4.3.0":
version "4.3.0"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.0.tgz#23509ebc1fa32f1b4d50d6a66c4032d5b8eaabdc"
integrity sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==

"@types/connect@*":
version "3.4.33"
resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546"
integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==
dependencies:
"@types/node" "*"

"@types/ember-mocha@^0.14.12":
version "0.14.12"
resolved "https://registry.yarnpkg.com/@types/ember-mocha/-/ember-mocha-0.14.12.tgz#7613a6dddcc1913acd1b22c5fa3dda1eea4701ca"
integrity sha512-thR/RJlxE/dJCM6k5yXx/b72fW5v4brTmW0NUUObLpUiLnKm4Jgdlk84cGpUidrIyzesnSq14dRPyTpw8D3iqA==
dependencies:
"@types/ember" "*"
"@types/ember-test-helpers" "*"
"@types/mocha" "*"

"@types/ember-qunit@^3.4.15":
version "3.4.15"
resolved "https://registry.yarnpkg.com/@types/ember-qunit/-/ember-qunit-3.4.15.tgz#333b3644f4c80af755f54f82ccdf3f1652cfac8d"
integrity sha512-ZWQcnLCsQfNq0MK9o0dt+reFn9Sk6rcMP2f/bkRRM/HCnNSD1XjMgnRhbKcDmCk0CmxTt5WtfSmlO0TYubcxcA==
dependencies:
"@types/ember" "*"
"@types/ember-test-helpers" "*"
"@types/qunit" "*"

"@types/ember-test-helpers@*", "@types/ember-test-helpers@^1.0.10":
version "1.0.10"
resolved "https://registry.yarnpkg.com/@types/ember-test-helpers/-/ember-test-helpers-1.0.10.tgz#cbd7f7e73a05f1c08075b99d4906cd5d92f443f0"
integrity sha512-sa0bIRIFPJanqA+6gzjLPUtBifJmVh7PKWwR1C0tmt+R2/CKSFMxn1j38nafNDNKS1so2KVCU/WmHvQ/WlF+gA==
dependencies:
"@types/ember" "*"
"@types/htmlbars-inline-precompile" "*"
"@types/jquery" "*"
"@types/rsvp" "*"

"@types/ember-testing-helpers@^0.0.4":
version "0.0.4"
resolved "https://registry.yarnpkg.com/@types/ember-testing-helpers/-/ember-testing-helpers-0.0.4.tgz#d305b418d477c6f84fcd4dcb851a3efadbc4a2bd"
integrity sha512-6EEY+kk4+HsKMzLkzZp0UU7TzUG1EB2mPyORrQXcudjJ0M7k67Z9cCBDn7kupDcu4NVgtG7HNRZTZgBljOjxoA==
dependencies:
"@types/jquery" "*"
"@types/rsvp" "*"

"@types/ember@*", "@types/ember@^3.16.5":
version "3.16.5"
resolved "https://registry.yarnpkg.com/@types/ember/-/ember-3.16.5.tgz#c2d6b0f178761c0c2fbc6fc39b4b6958c256d0ac"
integrity sha512-8BzT1g8r7xQsN2p7qIUZ0AXWEVpJ5LmaRWP3iT79PLyIQfTAYvHSueUl14lrB8renETjwr4+ZvVPKurn9TKxNA==
dependencies:
"@types/ember__application" "*"
"@types/ember__array" "*"
"@types/ember__component" "*"
"@types/ember__controller" "*"
"@types/ember__debug" "*"
"@types/ember__destroyable" "*"
"@types/ember__engine" "*"
"@types/ember__error" "*"
"@types/ember__object" "*"
"@types/ember__polyfills" "*"
"@types/ember__routing" "*"
"@types/ember__runloop" "*"
"@types/ember__service" "*"
"@types/ember__string" "*"
"@types/ember__template" "*"
"@types/ember__test" "*"
"@types/ember__utils" "*"
"@types/htmlbars-inline-precompile" "*"
"@types/jquery" "*"
"@types/rsvp" "*"

"@types/ember__application@*":
version "3.16.3"
resolved "https://registry.yarnpkg.com/@types/ember__application/-/ember__application-3.16.3.tgz#f16e852b3200d5601b6f073be5a030cfadebb778"
integrity sha512-kx7euIQ+zy7EjyBMoWTOMPxkbGmLitwKp7Cxga2xeKnpMPrZCIaLcFM50XnbnbjzmlSMmJEn5EDIEYwlqnfzvg==
dependencies:
"@types/ember__application" "*"
"@types/ember__engine" "*"
"@types/ember__object" "*"
"@types/ember__routing" "*"

"@types/ember__array@*":
version "3.16.4"
resolved "https://registry.yarnpkg.com/@types/ember__array/-/ember__array-3.16.4.tgz#d61b5b876e4976de03aa027ea89cb48cd640d49d"
integrity sha512-K21LKDNDW3ug0fLsFUTHZPyaFnzUUZEOtsmzmmeXKI6apJcoaz/yF3V0fvM2FUWNLs6rXB3PXegtzik6lq44Yw==
dependencies:
"@types/ember__array" "*"
"@types/ember__object" "*"

"@types/ember__component@*":
version "3.16.6"
resolved "https://registry.yarnpkg.com/@types/ember__component/-/ember__component-3.16.6.tgz#affc4798ee97f58747f5d173b8f739ddab26e551"
integrity sha512-Zi82wppu0wtijXKAsyn75KBauJKIIHoYk5cbk7OmOKE2zmV1qzCfsxjM8x9iTJpu97T1P0vXWZ91aXM7KeQFMw==
dependencies:
"@types/ember__component" "*"
"@types/ember__object" "*"
"@types/jquery" "*"

"@types/ember__controller@*":
version "3.16.6"
resolved "https://registry.yarnpkg.com/@types/ember__controller/-/ember__controller-3.16.6.tgz#1fbb5f9483b9b9fd59b78f7289e6bd382e457f9c"
integrity sha512-oltv4YaMljVMvhXJMT/UFmAQOJgYbnNUBGgOsclctpb9FYkimsJm8xIAoEmP5wBekzjeNd5UDf9F1DxSDpqgGw==
dependencies:
"@types/ember__object" "*"

"@types/ember__debug@*":
version "3.16.5"
resolved "https://registry.yarnpkg.com/@types/ember__debug/-/ember__debug-3.16.5.tgz#ce04532c100fdc1c97c9f308d69a88d6e956db97"
integrity sha512-Sj0idBMOd33PubBbxtXty+tzyVIAbxK4cf8q0AKZ0z5wOL0wsFOLCvMgRMxSME3DB2uvJd4u9tGr15XFM+Z03A==
dependencies:
"@types/ember__debug" "*"
"@types/ember__engine" "*"
"@types/ember__object" "*"

"@types/ember__destroyable@*":
version "3.22.0"
resolved "https://registry.yarnpkg.com/@types/ember__destroyable/-/ember__destroyable-3.22.0.tgz#2af2c27f5d8996694c3f0fe906e2536b2e4c5aca"
integrity sha512-T5wZGK1MwEelNIv1bbAvRQZPo9zvfjpGyyFPwjz+sakjImKVcQzb/yq1SgGyT0QTAQAT7l0L+kFru9+fSVVo5A==

"@types/ember__engine@*":
version "3.16.3"
resolved "https://registry.yarnpkg.com/@types/ember__engine/-/ember__engine-3.16.3.tgz#f61114922ed7d1a65f468bfd3e9dd5b128f32822"
integrity sha512-D9cLOlkQjT+b+9vszgAfxnTelx1H/GiL9FNmPcYQbLd+Ta8+FdKssb2Vt4DbHZrc5MsBJ8LMRs5/xPhkHuCDMA==
dependencies:
"@types/ember__engine" "*"
"@types/ember__object" "*"

"@types/ember__error@*":
version "3.16.1"
resolved "https://registry.yarnpkg.com/@types/ember__error/-/ember__error-3.16.1.tgz#752d977f4ee35d4fa66bcfeebae6e85240fc62a6"
integrity sha512-bnB58krc18B8qgSMsRBbrVbNb4msyb8pMzS9Yo3brw/bRjuPb1ONUrjieAVHeespXlXNJOusvvX/pji641iCPQ==

"@types/ember__object@*":
version "3.12.6"
resolved "https://registry.yarnpkg.com/@types/ember__object/-/ember__object-3.12.6.tgz#5f77662881e3c6f877d63e08b46861c52a36714a"
integrity sha512-LAGldyJmFpErWLCm1HOAGd3G4E7Sem+AzQycKH+zSiYSwKVxNSpzUIU1yewlScHn5WvKwLEVE2H6mPvwvkQ+yA==
dependencies:
"@types/ember__object" "*"
"@types/rsvp" "*"

"@types/ember__polyfills@*":
version "3.12.1"
resolved "https://registry.yarnpkg.com/@types/ember__polyfills/-/ember__polyfills-3.12.1.tgz#aed838e35a3e8670d247333d4c7ea2c2f7b3c43e"
integrity sha512-Xw9RxFizB8guT6YGg3VNi5tjbzAjqk+bLtAJ1oVl2I1FylKrRFh0bwobxT2K0BF/i0QFEYlqckHpN/OoCpkvkA==

"@types/ember__routing@*":
version "3.16.15"
resolved "https://registry.yarnpkg.com/@types/ember__routing/-/ember__routing-3.16.15.tgz#14e7e98ae331d05b19aacc29c9759c9f3dc222ec"
integrity sha512-M+QujBvUQZJgcLo/vj1aYVdEZaQWxuD+GM2CLp2jmkb4RYGhdYPuNYK7KkDMhJH5vMICOeK7KVVKrmN1KhAQHg==
dependencies:
"@types/ember__component" "*"
"@types/ember__controller" "*"
"@types/ember__object" "*"
"@types/ember__routing" "*"
"@types/ember__service" "*"

"@types/ember__runloop@*":
version "3.16.3"
resolved "https://registry.yarnpkg.com/@types/ember__runloop/-/ember__runloop-3.16.3.tgz#c37ed507aed0f642ef19cbc4b5d0b3a167e3ada6"
integrity sha512-iYT7+9z6lVOi4RSyM9tBwIOidRI0Y5nyaRtIMP1DhP8n2UZjvVG6ao4PkpFnpFWR4R8Ajj2p13SaPGxpEV62jg==
dependencies:
"@types/ember__runloop" "*"

"@types/ember__service@*":
version "3.16.1"
resolved "https://registry.yarnpkg.com/@types/ember__service/-/ember__service-3.16.1.tgz#e8f941ec50ff4a7531487dc60830b4e6c7da6a47"
integrity sha512-XYl75IZGE+ZqRiCr9tBLXNYBVM9WX18AQHw/73QSQP/7sfyv5QFP/C/KvJrwP9wJmqh0BS2lVAXP3Nx4/BRNTw==
dependencies:
"@types/ember__object" "*"

"@types/ember__string@*":
version "3.16.3"
resolved "https://registry.yarnpkg.com/@types/ember__string/-/ember__string-3.16.3.tgz#6c474d422dfae5c382a3c52bd3c994048d04b72e"
integrity sha512-0T9ofzm9LL/bSG5u1SxKx/j2h/bHKkl5NKjGCNbFQxEKBw4f2cs6+AMDgWke9z+qrRRIz9vGEtMXnA3yJrO2xA==
dependencies:
"@types/ember__template" "*"

"@types/ember__template@*":
version "3.16.1"
resolved "https://registry.yarnpkg.com/@types/ember__template/-/ember__template-3.16.1.tgz#30d7f50a49b190934db0f5a56dd76ad86c21efc6"
integrity sha512-APQINizzizl2LHWGMFBCanRjKZQsdzqn7b+us17zbNhnx/R0IZAJq901x/i7eozCRwxsDKmGzNABSCIu6uc1Tg==

"@types/ember__test-helpers@^2.6.0":
version "2.6.0"
resolved "https://registry.yarnpkg.com/@types/ember__test-helpers/-/ember__test-helpers-2.6.0.tgz#26a3e709502868fbf73d3cf06942335195f6408b"
integrity sha512-iLb4npBAi2nWdAgnL/lClJkZUXuS4pCpGq3a5yzWoNjzRZCJzLI+zbmNgfY3nQjsV8lXclgfEY0ZzGkRpHU+Xw==
dependencies:
"@types/ember" "*"
"@types/ember__application" "*"
"@types/ember__error" "*"
"@types/htmlbars-inline-precompile" "*"

"@types/ember__test@*":
version "3.16.1"
resolved "https://registry.yarnpkg.com/@types/ember__test/-/ember__test-3.16.1.tgz#8407e42b9835a13ef0c6ef7a7ce3aa3d7ebcb7ed"
integrity sha512-0ICnkM4BDwOKhqmLQRpfvNuZlb6QOqE+FhP5fPaWXWy7bgcL9CY7kMRc7N+wZQbTvbSKqgEdfbvjd0bJsIrz5w==
dependencies:
"@types/ember__application" "*"

"@types/ember__utils@*":
version "3.16.2"
resolved "https://registry.yarnpkg.com/@types/ember__utils/-/ember__utils-3.16.2.tgz#3fa9a0666a3e8204262e2a2960289aaf01f29467"
integrity sha512-tBbqewgegiKSpGZvGh3pbcoXwLCMvKVdLRE97vys75nAEz/vBzkGJm+PDz1HVaTkRukWbRhlDiTm2qFH8qRnSw==

"@types/express-serve-static-core@*":
version "4.17.13"
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.13.tgz#d9af025e925fc8b089be37423b8d1eac781be084"
Expand Down Expand Up @@ -1571,6 +1771,18 @@
"@types/minimatch" "*"
"@types/node" "*"

"@types/htmlbars-inline-precompile@*":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@types/htmlbars-inline-precompile/-/htmlbars-inline-precompile-1.0.1.tgz#de564513fabb165746aecd76369c87bd85e5bbb4"
integrity sha512-sVD2e6QAAHW0Y6Btse+tTA9k9g0iKm87wjxRsgZRU5EwSooz80tenbV+fA+f2BI2g0G2CqxsS1rIlwQCtPRQow==

"@types/jquery@*":
version "3.5.11"
resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.11.tgz#fb2a255e8376779e89a10ddd04bfc1a93398f861"
integrity sha512-lYZGdfOtUa0XFjIATQgiogqeTY5PNNMOmp3Jq48ghmJALL8t/IqABRqlEwdHfuUdA8iIE1uGD1HoI4a7Tiy6OA==
dependencies:
"@types/sizzle" "*"

"@types/mime@*":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.3.tgz#c893b73721db73699943bfc3653b1deb7faa4a3a"
Expand All @@ -1581,6 +1793,11 @@
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==

"@types/mocha@*", "@types/mocha@^9.0.0":
version "9.0.0"
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.0.0.tgz#3205bcd15ada9bc681ac20bef64e9e6df88fd297"
integrity sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==

"@types/node@*":
version "13.9.3"
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.3.tgz#6356df2647de9eac569f9a52eda3480fa9e70b4d"
Expand All @@ -1591,6 +1808,11 @@
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.5.tgz#434711bdd49eb5ee69d90c1d67c354a9a8ecb18b"
integrity sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ==

"@types/qunit@*", "@types/qunit@^2.11.3":
version "2.11.3"
resolved "https://registry.yarnpkg.com/@types/qunit/-/qunit-2.11.3.tgz#2900adb58eee250c96b2d33a923cc4eae70d72ba"
integrity sha512-UF/4jDehcpRlMXzKXi2Z59Id48/uYlMeUDhYdjFrVVwy30Eud/e60Ok3yVjSPlHprafj3B315uFTrF6eqQTeSw==

"@types/range-parser@*":
version "1.2.3"
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
Expand All @@ -1604,6 +1826,11 @@
"@types/glob" "*"
"@types/node" "*"

"@types/rsvp@*":
version "4.0.4"
resolved "https://registry.yarnpkg.com/@types/rsvp/-/rsvp-4.0.4.tgz#55e93e7054027f1ad4b4ebc1e60e59eb091e2d32"
integrity sha512-J3Ol++HCC7/hwZhanDvggFYU/GtxHxE/e7cGRWxR04BF7Tt3TqJZ84BkzQgDxmX0uu8IagiyfmfoUlBACh2Ilg==

"@types/serve-static@*":
version "1.13.7"
resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.7.tgz#e51b51a0becda910f9fd04c718044da69d6c492e"
Expand All @@ -1612,6 +1839,11 @@
"@types/mime" "*"
"@types/node" "*"

"@types/sizzle@*":
version "2.3.3"
resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef"
integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==

"@types/symlink-or-copy@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@types/symlink-or-copy/-/symlink-or-copy-1.2.0.tgz#4151a81b4052c80bc2becbae09f3a9ec010a9c7a"
Expand Down Expand Up @@ -9545,6 +9777,11 @@ typedarray-to-buffer@^3.1.5:
dependencies:
is-typedarray "^1.0.0"

typescript@^4.5.4:
version "4.5.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8"
integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==

uc.micro@^1.0.1, uc.micro@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376"
Expand Down

0 comments on commit dd9ddb7

Please sign in to comment.