From 3bd31074348704977a35d433bf4867fa3305e45b Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Sun, 26 Sep 2021 16:41:00 +0200 Subject: [PATCH] bump ts to 4.0, ensure no new type syntax --- package-lock.json | 15 ++++++++------- package.json | 4 ++-- post-typegen.js | 14 ++++++++++++++ 3 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 post-typegen.js diff --git a/package-lock.json b/package-lock.json index 4bc3337e32..12dd6587eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "requires": true, "packages": { "": { + "name": "svelte", "version": "3.43.0", "license": "MIT", "devDependencies": { @@ -45,7 +46,7 @@ "sourcemap-codec": "^1.4.8", "tiny-glob": "^0.2.6", "tslib": "^2.0.3", - "typescript": "^3.7.5" + "typescript": "~4.0.0" }, "engines": { "node": ">= 8" @@ -5543,9 +5544,9 @@ "dev": true }, "node_modules/typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.8.tgz", + "integrity": "sha512-oz1765PN+imfz1MlZzSZPtC/tqcwsCyIYA8L47EkRnRW97ztRk83SzMiWLrnChC0vqoYxSU1fcFUDA5gV/ZiPg==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -10298,9 +10299,9 @@ "dev": true }, "typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.8.tgz", + "integrity": "sha512-oz1765PN+imfz1MlZzSZPtC/tqcwsCyIYA8L47EkRnRW97ztRk83SzMiWLrnChC0vqoYxSU1fcFUDA5gV/ZiPg==", "dev": true }, "unbox-primitive": { diff --git a/package.json b/package.json index e6991fd5c0..66decce07a 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "pretest": "npm run build", "posttest": "agadoo internal/index.mjs", "prepublishOnly": "node check_publish_env.js && npm run lint && npm test", - "tsd": "tsc -p src/compiler --emitDeclarationOnly && tsc -p src/runtime --emitDeclarationOnly", + "tsd": "tsc -p src/compiler --emitDeclarationOnly && tsc -p src/runtime --emitDeclarationOnly && node ./post-typegen.js", "lint": "eslint \"{src,test}/**/*.{ts,js}\"" }, "repository": { @@ -140,7 +140,7 @@ "sourcemap-codec": "^1.4.8", "tiny-glob": "^0.2.6", "tslib": "^2.0.3", - "typescript": "^3.7.5" + "typescript": "~4.0.0" }, "nyc": { "include": [ diff --git a/post-typegen.js b/post-typegen.js new file mode 100644 index 0000000000..08d932d090 --- /dev/null +++ b/post-typegen.js @@ -0,0 +1,14 @@ +// Svelte 3 types are generated using TS 3.7 . Using newer type syntax is therefore technically a breaking change. +// `export type` / `import type` was introduced later, and needed now in one of the files. +// Replace `export type` with `export` in the `d.ts` file as it doesn't make a difference in `d.ts` files. +// This keeps backwards-compatibility + +const fs = require('fs'); + +const path = 'types/runtime/index.d.ts'; +const content = fs.readFileSync(path, 'utf8'); +const replaced = content.replace('export type', 'export'); +if (content === replaced) { + throw new Error('types/runtime/index.d.ts changed. Update post-typegen.js') +} +fs.writeFileSync(path, replaced);