Skip to content

Commit 3e372f2

Browse files
authored
fix: Correct context for declaration files (#847)
1 parent 0254816 commit 3e372f2

File tree

8 files changed

+148
-4
lines changed

8 files changed

+148
-4
lines changed

.github/workflows/main.yml

+5
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ jobs:
5151
env:
5252
CI: true
5353

54+
- name: Test types
55+
run: yarn test-types
56+
env:
57+
CI: true
58+
5459
- name: Release
5560
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/alpha' || github.ref == 'refs/heads/beta')
5661
env:

css.d.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import type { JSX } from "react";
21
// Definitions by: @types/styled-jsx <https://www.npmjs.com/package/@types/styled-jsx>
32

43
declare module 'styled-jsx/css' {
4+
import type { JSX } from "react";
5+
56
function css(chunks: TemplateStringsArray, ...args: any[]): JSX.Element
67
namespace css {
78
export function global(

index.d.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import type { JSX } from "react";
21
/// <reference types="./css" />
32
/// <reference types="./macro" />
43
/// <reference types="./style" />
54
/// <reference types="./global" />
65

76
declare module 'styled-jsx' {
7+
import type { JSX } from "react";
8+
89
export type StyledJsxStyleRegistry = {
910
styles(options?: { nonce?: string }): JSX.Element[]
1011
flush(): void

macro.d.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import type { JSX } from "react";
21
declare module 'styled-jsx/macro' {
2+
import type { JSX } from "react";
3+
34
namespace macro {
45
function resolve(
56
chunks: TemplateStringsArray,

package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"build-webpack": "bunchee src/webpack.js -f cjs --runtime node -o dist/webpack/index.js",
2929
"build-index": "bunchee src/index.js -f cjs --runtime node -o dist/index/index.js",
3030
"test": "ava",
31+
"test-types": "tsc --project tsconfig.json --noEmit",
3132
"lint": "eslint ./src",
3233
"format": "prettier --write \"./{src,test}/**/*.{js,css}\"",
3334
"prepublishOnly": "yarn build && yarn test && yarn lint --quiet"
@@ -77,6 +78,7 @@
7778
"@babel/register": "7.12.1",
7879
"@babel/runtime": "7.12.5",
7980
"@babel/types": "7.15.0",
81+
"@types/react": "18.3.3",
8082
"ava": "4.3.1",
8183
"babel-plugin-macros": "2.8.0",
8284
"bunchee": "2.1.5",
@@ -124,6 +126,7 @@
124126
"css"
125127
],
126128
"dependencies": {
127-
"client-only": "0.0.1"
129+
"client-only": "0.0.1",
130+
"typescript": "~5.0.0"
128131
}
129132
}

test/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import {} from 'styled-jsx'

tsconfig.json

+109
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
{
2+
"compilerOptions": {
3+
/* Visit https://aka.ms/tsconfig to read more about this file */
4+
5+
/* Projects */
6+
// "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
7+
// "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
8+
// "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
9+
// "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
10+
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
11+
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12+
13+
/* Language and Environment */
14+
"target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
15+
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16+
// "jsx": "preserve", /* Specify what JSX code is generated. */
17+
// "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
18+
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
19+
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
20+
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
21+
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
22+
// "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
23+
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
24+
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
25+
// "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
26+
27+
/* Modules */
28+
"module": "commonjs" /* Specify what module code is generated. */,
29+
// "rootDir": "./", /* Specify the root folder within your source files. */
30+
// "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
31+
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
32+
// "paths": {} /* Specify a set of entries that re-map imports to additional lookup locations. */,
33+
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
34+
// "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
35+
"types": [] /* Specify type package names to be included without being referenced in a source file. */,
36+
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
37+
// "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
38+
// "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
39+
// "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
40+
// "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
41+
// "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
42+
// "resolveJsonModule": true, /* Enable importing .json files. */
43+
// "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
44+
// "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */
45+
46+
/* JavaScript Support */
47+
// "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
48+
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
49+
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
50+
51+
/* Emit */
52+
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
53+
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
54+
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
55+
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
56+
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
57+
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
58+
// "outDir": "./", /* Specify an output folder for all emitted files. */
59+
// "removeComments": true, /* Disable emitting comments. */
60+
// "noEmit": true, /* Disable emitting files from a compilation. */
61+
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
62+
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
63+
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
64+
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
65+
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
66+
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
67+
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
68+
// "newLine": "crlf", /* Set the newline character for emitting files. */
69+
// "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
70+
// "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
71+
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
72+
// "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
73+
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
74+
// "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
75+
76+
/* Interop Constraints */
77+
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
78+
// "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
79+
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
80+
"esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */,
81+
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
82+
"forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
83+
84+
/* Type Checking */
85+
"strict": true /* Enable all strict type-checking options. */,
86+
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
87+
// "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
88+
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
89+
// "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
90+
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
91+
// "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
92+
// "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
93+
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
94+
// "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
95+
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
96+
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
97+
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
98+
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
99+
// "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
100+
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
101+
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
102+
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
103+
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
104+
105+
/* Completeness */
106+
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
107+
"skipLibCheck": false /* Skip type checking all .d.ts files. */
108+
},
109+
}

yarn.lock

+23
Original file line numberDiff line numberDiff line change
@@ -1682,6 +1682,19 @@
16821682
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
16831683
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
16841684

1685+
"@types/prop-types@*":
1686+
version "15.7.12"
1687+
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6"
1688+
integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==
1689+
1690+
1691+
version "18.3.3"
1692+
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f"
1693+
integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==
1694+
dependencies:
1695+
"@types/prop-types" "*"
1696+
csstype "^3.0.2"
1697+
16851698
16861699
version "1.17.1"
16871700
resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6"
@@ -2610,6 +2623,11 @@ crypto-random-string@^2.0.0:
26102623
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
26112624
integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
26122625

2626+
csstype@^3.0.2:
2627+
version "3.1.3"
2628+
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
2629+
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
2630+
26132631
currently-unhandled@^0.4.1:
26142632
version "0.4.1"
26152633
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
@@ -6257,6 +6275,11 @@ typedarray-to-buffer@^3.1.5:
62576275
dependencies:
62586276
is-typedarray "^1.0.0"
62596277

6278+
typescript@~5.0.0:
6279+
version "5.0.4"
6280+
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
6281+
integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
6282+
62606283
uglify-js@^3.1.4:
62616284
version "3.16.3"
62626285
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.16.3.tgz#94c7a63337ee31227a18d03b8a3041c210fd1f1d"

0 commit comments

Comments
 (0)