Skip to content

Commit df0199f

Browse files
committed
esm support
1 parent cfad016 commit df0199f

7 files changed

Lines changed: 307 additions & 26 deletions

File tree

package.json

Lines changed: 133 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
2+
"type": "module",
23
"name": "@stackpress/lib",
3-
"version": "0.4.6",
4+
"version": "0.4.10",
45
"license": "Apache-2.0",
56
"description": "Shared library used across stackpress projects",
67
"author": "Chris <chris@incept.asia>",
@@ -17,18 +18,141 @@
1718
"file system",
1819
"stackpress"
1920
],
20-
"main": "index.js",
21-
"types": "index.d.ts",
21+
"main": "./cjs/index.js",
22+
"module": "./esm/index.js",
23+
"types": "./cjs/index.d.ts",
24+
"exports": {
25+
".": {
26+
"require": "./cjs/index.js",
27+
"import": "./esm/index.js",
28+
"types": "./esm/index.d.ts"
29+
},
30+
"./types": {
31+
"require": "./cjs/types.js",
32+
"import": "./esm/types.js",
33+
"types": "./esm/types.d.ts"
34+
},
35+
"./Exception": {
36+
"require": "./cjs/Exception.js",
37+
"import": "./esm/Exception.js",
38+
"types": "./esm/Exception.d.ts"
39+
},
40+
"./Reflection": {
41+
"require": "./cjs/Reflection.js",
42+
"import": "./esm/Reflection.js",
43+
"types": "./esm/Reflection.d.ts"
44+
},
45+
"./Status": {
46+
"require": "./cjs/Status.js",
47+
"import": "./esm/Status.js",
48+
"types": "./esm/Status.d.ts"
49+
},
50+
"./map": {
51+
"require": "./cjs/data/map.js",
52+
"import": "./esm/data/map.js",
53+
"types": "./esm/data/map.d.ts"
54+
},
55+
"./set": {
56+
"require": "./cjs/data/set.js",
57+
"import": "./esm/data/set.js",
58+
"types": "./esm/data/set.d.ts"
59+
},
60+
"./Nest": {
61+
"require": "./cjs/data/Nest.js",
62+
"import": "./esm/data/Nest.js",
63+
"types": "./esm/data/Nest.d.ts"
64+
},
65+
"./ReadonlyMap": {
66+
"require": "./cjs/data/ReadonlyMap.js",
67+
"import": "./esm/data/ReadonlyMap.js",
68+
"types": "./esm/data/ReadonlyMap.d.ts"
69+
},
70+
"./ReadonlyNest": {
71+
"require": "./cjs/data/ReadonlyNest.js",
72+
"import": "./esm/data/ReadonlyNest.js",
73+
"types": "./esm/data/ReadonlyNest.d.ts"
74+
},
75+
"./ReadonlySet": {
76+
"require": "./cjs/data/ReadonlySet.js",
77+
"import": "./esm/data/ReadonlySet.js",
78+
"types": "./esm/data/ReadonlySet.d.ts"
79+
},
80+
"./EventEmitter": {
81+
"require": "./cjs/event/EventEmitter.js",
82+
"import": "./esm/event/EventEmitter.js",
83+
"types": "./esm/event/EventEmitter.d.ts"
84+
},
85+
"./EventRouter": {
86+
"require": "./cjs/event/EventRouter.js",
87+
"import": "./esm/event/EventRouter.js",
88+
"types": "./esm/event/EventRouter.d.ts"
89+
},
90+
"./EventTerminal": {
91+
"require": "./cjs/event/EventTerminal.js",
92+
"import": "./esm/event/EventTerminal.js",
93+
"types": "./esm/event/EventTerminal.d.ts"
94+
},
95+
"./ItemQueue": {
96+
"require": "./cjs/queue/ItemQueue.js",
97+
"import": "./esm/queue/ItemQueue.js",
98+
"types": "./esm/queue/ItemQueue.d.ts"
99+
},
100+
"./TaskQueue": {
101+
"require": "./cjs/queue/TaskQueue.js",
102+
"import": "./esm/queue/TaskQueue.js",
103+
"types": "./esm/queue/TaskQueue.d.ts"
104+
},
105+
"./FileLoader": {
106+
"require": "./cjs/system/FileLoader.js",
107+
"import": "./esm/system/FileLoader.js",
108+
"types": "./esm/system/FileLoader.d.ts"
109+
},
110+
"./NodeFS": {
111+
"require": "./cjs/system/NodeFS.js",
112+
"import": "./esm/system/NodeFS.js",
113+
"types": "./esm/system/NodeFS.d.ts"
114+
},
115+
"./tsconfig/cjs": "./tsconfig/cjs.json",
116+
"./tsconfig/esm": "./tsconfig/esm.json"
117+
},
118+
"typesVersions": {
119+
"*": {
120+
"index": ["./cjs/index.d.ts"],
121+
"types": [ "./cjs/types.d.ts" ],
122+
"Exception": [ "./cjs/Exception.d.ts" ],
123+
"Reflection": [ "./cjs/Reflection.d.ts" ],
124+
"Status": [ "./cjs/Status.d.ts" ],
125+
"map": [ "./cjs/data/map.d.ts" ],
126+
"set": [ "./cjs/data/set.d.ts" ],
127+
"Nest": [ "./cjs/data/Nest.d.ts" ],
128+
"ReadonlyMap": [ "./cjs/data/ReadonlyMap.d.ts" ],
129+
"ReadonlyNest": [ "./cjs/data/ReadonlyNest.d.ts" ],
130+
"ReadonlySet": [ "./cjs/data/ReadonlySet.d.ts" ],
131+
"EventEmitter": [ "./cjs/event/EventEmitter.d.ts" ],
132+
"EventRouter": [ "./cjs/event/EventRouter.d.ts" ],
133+
"EventTerminal": [ "./cjs/event/EventTerminal.d.ts" ],
134+
"ItemQueue": [ "./cjs/queue/ItemQueue.d.ts" ],
135+
"TaskQueue": [ "./cjs/queue/TaskQueue.d.ts" ],
136+
"FileLoader": [ "./cjs/system/FileLoader.d.ts" ],
137+
"NodeFS": [ "./cjs/system/NodeFS.d.ts" ]
138+
}
139+
},
22140
"files": [
23-
"dist",
24-
"index.js",
25-
"index.d.ts",
141+
"cjs",
142+
"esm",
26143
"LICENSE",
27-
"README.md"
144+
"README.md",
145+
"tsconfig"
28146
],
29147
"scripts": {
30-
"build": "tsc",
31-
"test": "nyc ts-mocha tests/*.test.ts",
148+
"build": "yarn build:tsc && yarn build:pkg",
149+
"build:pkg": "yarn build:pkg:cjs && yarn build:pkg:esm",
150+
"build:pkg:cjs": "echo '{\"type\": \"commonjs\"}' > cjs/package.json",
151+
"build:pkg:esm": "echo '{\"type\": \"module\"}' > esm/package.json",
152+
"build:tsc": "yarn build:tsc:cjs && yarn build:tsc:esm",
153+
"build:tsc:cjs": "tsc -p ./tsconfig.cjs.json",
154+
"build:tsc:esm": "tsc -p ./tsconfig.esm.json",
155+
"test": "nyc ts-mocha -p ./tsconfig.cjs.json tests/*.test.ts",
32156
"report": "nyc report -r lcov"
33157
},
34158
"dependencies": {

tsconfig.cjs.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"extends": "./tsconfig/cjs.json",
3+
"compilerOptions": {
4+
"outDir": "cjs/"
5+
},
6+
"include": [ "src/**/*.ts" ],
7+
"exclude": [ "esm", "cjs", "docs", "node_modules", "tests" ]
8+
}

tsconfig.esm.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"extends": "./tsconfig/esm.json",
3+
"compilerOptions": {
4+
"moduleResolution": "node",
5+
"outDir": "esm/"
6+
},
7+
"include": [ "src/**/*.ts" ],
8+
"exclude": [ "esm", "cjs", "docs", "node_modules", "tests" ]
9+
}

tsconfig.json

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,3 @@
11
{
2-
"compilerOptions": {
3-
"declaration": true,
4-
"esModuleInterop": true,
5-
"lib": [ "es2021", "es7", "es6", "dom" ],
6-
"module": "commonjs",
7-
"noUnusedLocals": true,
8-
"outDir": "./dist/",
9-
"preserveConstEnums": true,
10-
"resolveJsonModule": true,
11-
"removeComments": true,
12-
"sourceMap": false,
13-
"strict": true,
14-
"target": "es6",
15-
"skipLibCheck": true
16-
},
17-
"include": [ "src/**/*.ts" ],
18-
"exclude": [ "dist", "docs", "node_modules", "tests"]
2+
"extends": "./tsconfig.esm.json"
193
}

tsconfig/README.md

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
## Desciptions For Each TSConfig
2+
3+
Because it's hella confusing.
4+
5+
## CommonJS
6+
7+
These compiler options for commonjs have worked for years without fail.
8+
9+
```js
10+
{
11+
/* Module System */
12+
13+
//type definitions to use
14+
"lib": [ "es2021", "es7", "es6", "dom" ],
15+
//module system for the program (import, require)
16+
"module": "commonjs",
17+
18+
/* Developing */
19+
20+
//Fixes import issues with cjs/umd/amd modules
21+
"esModuleInterop": true,
22+
//do not erase const enum declarations in generated code.
23+
"preserveConstEnums": true,
24+
//allows importing modules with a .json extension
25+
"resolveJsonModule": true,
26+
//skip type checking of declaration files.
27+
"skipLibCheck": true,
28+
//js strict mode
29+
"strict": true,
30+
31+
/* Compiling */
32+
33+
//include `.d.ts` files
34+
"declaration": true,
35+
//strips all comments when converting into JavaScript
36+
"removeComments": true,
37+
//include `.map` files
38+
"sourceMap": false,
39+
//what code will compile to
40+
"target": "es6",
41+
42+
/* Linting */
43+
44+
//report errors on unused local variables.
45+
"noUnusedLocals": true
46+
}
47+
```
48+
49+
## EcmaScript
50+
51+
The following considerations are normally added to esm builds but, not
52+
added to the defaults.
53+
54+
- `moduleDetection`
55+
- `auto` (default) - TypeScript will not only look for import and
56+
export statements, but it will also check whether the "type" field
57+
in a package.json is set to "module" when running with module:
58+
nodenext or node16, and check whether the current file is a JSX
59+
file when running under jsx: react-jsx.
60+
- `legacy` - The same behavior as 4.6 and prior, usings import and
61+
export statements to determine whether a file is a module.
62+
- `force` - Ensures that every non-declaration file is treated as
63+
a module.
64+
- `isolatedModules` - forbid files without import/export
65+
- `verbatimModuleSyntax` - any imports or exports without a type
66+
modifier are left around. Anything that uses the type modifier
67+
is dropped entirely.
68+
- `noImplicitOverride` - functions which override should include the
69+
keyword override
70+
71+
```js
72+
{
73+
/* Module System */
74+
75+
//allow js files to be imported inside your project
76+
"allowJs": true,
77+
//type definitions to use
78+
"lib": [ "es2022", "dom", "dom.iterable" ],
79+
//module system for the program (import, require)
80+
"module": "esnext",
81+
82+
/* Developing */
83+
84+
//Fixes import issues with cjs/umd/amd modules
85+
"esModuleInterop": true,
86+
//Emit .js files with the JSX changed to _jsx calls
87+
//(as opposed to React.createElement) optimized for
88+
//production
89+
"jsx": "react-jsx",
90+
//do not erase const enum declarations in generated code.
91+
"preserveConstEnums": true,
92+
//allows importing modules with a .json extension
93+
"resolveJsonModule": true,
94+
//skip type checking of declaration files.
95+
"skipLibCheck": true,
96+
//js strict mode
97+
"strict": true,
98+
99+
/* Compiling */
100+
101+
//include `.d.ts` files
102+
"declaration": true,
103+
//strips all comments when converting into JavaScript
104+
"removeComments": true,
105+
//include `.map` files
106+
"sourceMap": false,
107+
//what code will compile to
108+
"target": "es2022",
109+
110+
/* Linting */
111+
112+
//report errors on unused local variables.
113+
"noUnusedLocals": true,
114+
//report when arguments are unused (prefix _arg to ignore)
115+
"noUnusedParameters": true
116+
}
117+
```

tsconfig/cjs.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"compilerOptions": {
3+
"lib": [ "es2021", "es7", "es6", "dom" ],
4+
"module": "commonjs",
5+
6+
"esModuleInterop": true,
7+
"preserveConstEnums": true,
8+
"resolveJsonModule": true,
9+
"skipLibCheck": true,
10+
"strict": true,
11+
12+
"declaration": true,
13+
"removeComments": true,
14+
"sourceMap": false,
15+
"target": "es6",
16+
17+
"noUnusedLocals": true
18+
}
19+
}

tsconfig/esm.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"compilerOptions": {
3+
"allowJs": true,
4+
"lib": [ "es2022", "dom", "dom.iterable" ],
5+
"module": "esnext",
6+
7+
"esModuleInterop": true,
8+
"preserveConstEnums": true,
9+
"skipLibCheck": true,
10+
"strict": true,
11+
12+
"declaration": true,
13+
"removeComments": true,
14+
"sourceMap": false,
15+
"target": "es2022",
16+
17+
"noUnusedLocals": true,
18+
"noUnusedParameters": true
19+
}
20+
}

0 commit comments

Comments
 (0)