tshy 1.14.1 → 1.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -276,10 +276,12 @@ appropriate build target locations, like:
276
276
  "./foo": {
277
277
  "import": {
278
278
  "types": "./dist/esm/foo.d.ts",
279
+ "source": "./src/foo.ts",
279
280
  "default": "./dist/esm/foo.js"
280
281
  },
281
282
  "require": {
282
283
  "types": "./dist/commonjs/foo.d.ts",
284
+ "source": "./src/foo.ts",
283
285
  "default": "./dist/commonjs/foo.js"
284
286
  }
285
287
  }
@@ -345,20 +347,24 @@ be:
345
347
  ".": {
346
348
  "require": {
347
349
  "types": "./dist/commonjs/index.d.ts",
350
+ "source": "./src/index.ts",
348
351
  "default": "./dist/commonjs/index.js"
349
352
  },
350
353
  "import": {
351
354
  "types": "./dist/esm/index.d.ts",
355
+ "source": "./src/index.ts",
352
356
  "default": "./dist/esm/index.js"
353
357
  }
354
358
  },
355
359
  "./component/foo": {
356
360
  "require": {
357
361
  "types": "./dist/commonjs/component/foo.d.ts",
362
+ "source": "./src/component/foo.ts",
358
363
  "default": "./dist/commonjs/component/foo.js"
359
364
  },
360
365
  "import": {
361
366
  "types": "./dist/esm/component/foo.d.ts",
367
+ "source": "./src/component/foo.ts",
362
368
  "default": "./dist/esm/component/foo.js"
363
369
  }
364
370
  },
@@ -381,6 +387,37 @@ This would export a file at `./src/foo.ts` as `./foo`, and a file
381
387
  at `./src/utils/bar.ts` as `./utils/bar`, but would ignore a file
382
388
  at `./internal/private.ts`.
383
389
 
390
+ ### Live Dev
391
+
392
+ Set `"liveDev": true` in the tshy config in `package.json` to
393
+ build in link mode. In this mode, the files are hard-linked into
394
+ place in the `dist` folder, so that edits are immediately visible.
395
+
396
+ This is particularly beneficial in monorepo projects, where
397
+ workspaces may be edited in parallel, and so it's handy to have
398
+ changes reflected in real time without a rebuild.
399
+
400
+ Of course, tools that can't handle TypeScript will have a problem
401
+ with this, so any generic `node` program will not be able to run
402
+ your code. For this reason:
403
+
404
+ - `liveDev` is always disabled when the `npm_command` environment
405
+ variable is `'publish'` or `'pack'`. In these situations, your
406
+ code is being built for public consumption, and must be
407
+ compiled.
408
+ - Code in dist will not be able to be loaded in the node repl
409
+ unless you run it with a loader, such as `node --import=tsx`.
410
+ - Because it links files into place, a rebuild _is_ required when
411
+ a file is added or removed.
412
+
413
+ **Note**: If a package uses Node.js `Worker` scripts or bins that
414
+ are written in TS and need to be compiled, then `liveDev` will
415
+ not work, and should not be used. Additionally, any dependencies
416
+ of those modules also cannot use `liveDev`, unless a loader such
417
+ as `tsx` is used when run.
418
+
419
+ See also: "Loading from Source", below.
420
+
384
421
  ### Package `#imports`
385
422
 
386
423
  You can use `"imports"` in your package.json, and it will be
@@ -574,10 +611,12 @@ will produce:
574
611
  ".": {
575
612
  "require": {
576
613
  "types": "./dist/commonjs/index.d.ts",
614
+ "source": "./src/index.js",
577
615
  "default": "./dist/commonjs/index.js"
578
616
  },
579
617
  "import": {
580
618
  "types": "./dist/esm/index.d.ts",
619
+ "source": "./src/index.ts",
581
620
  "default": "./dist/esm/index.js"
582
621
  }
583
622
  }
@@ -682,22 +721,27 @@ Will result in:
682
721
  ".": {
683
722
  "deno": {
684
723
  "types": "./dist/deno/index.d.ts",
724
+ "source": "./src/index.ts",
685
725
  "default": "./dist/deno/index.js"
686
726
  },
687
727
  "browser": {
688
728
  "types": "./dist/browser/index.d.ts",
729
+ "default": "./src/index.ts",
689
730
  "default": "./dist/browser/index.js"
690
731
  },
691
732
  "webpack": {
692
733
  "types": "./dist/webpack/index.d.ts",
734
+ "source": "./src/index.ts",
693
735
  "default": "./dist/webpack/index.js"
694
736
  },
695
737
  "require": {
696
738
  "types": "./dist/commonjs/index.d.ts",
739
+ "source": "./src/index.ts",
697
740
  "default": "./dist/commonjs/index.js"
698
741
  },
699
742
  "import": {
700
743
  "types": "./dist/esm/index.d.ts",
744
+ "source": "./src/index.ts",
701
745
  "default": "./dist/esm/index.js"
702
746
  }
703
747
  }
@@ -722,6 +766,44 @@ src/index-deno.mts # esm variant for deno
722
766
  src/index-webpack.cts # cjs variant for webpack
723
767
  ```
724
768
 
769
+ If dialect overrides are used, then the `"source"` export
770
+ condition will refer to the original source for the override. For
771
+ example:
772
+
773
+ ```json
774
+ {
775
+ "exports": {
776
+ ".": {
777
+ "deno": {
778
+ "types": "./dist/deno/index.d.ts",
779
+ "source": "./src/index-deno.mts",
780
+ "default": "./dist/deno/index.js"
781
+ },
782
+ "browser": {
783
+ "types": "./dist/browser/index.d.ts",
784
+ "default": "./src/index-browser.mts",
785
+ "default": "./dist/browser/index.js"
786
+ },
787
+ "webpack": {
788
+ "types": "./dist/webpack/index.d.ts",
789
+ "source": "./src/index-webpack.cts",
790
+ "default": "./dist/webpack/index.js"
791
+ },
792
+ "require": {
793
+ "types": "./dist/commonjs/index.d.ts",
794
+ "source": "./src/index-cjs.cts",
795
+ "default": "./dist/commonjs/index.js"
796
+ },
797
+ "import": {
798
+ "types": "./dist/esm/index.d.ts",
799
+ "source": "./src/index.ts",
800
+ "default": "./dist/esm/index.js"
801
+ }
802
+ }
803
+ }
804
+ }
805
+ ```
806
+
725
807
  Note that the `commonjs` override uses the abbreviated `cjs`
726
808
  name (historical reasons, it was originally the only override
727
809
  supported), and that the file extension must be `cts` or `mts`
@@ -778,6 +860,39 @@ provided for you.
778
860
  Then the `tsconfig.json` file will be used as the default project
779
861
  for code hints in VSCode, neovim, tests, etc.
780
862
 
863
+ ### Loading from Source
864
+
865
+ If you are using tshy in a monorepo environment, you can
866
+ configure TypeScript (and other tools) to resolve to the _source_
867
+ files rather than built artifacts by telling them to use the
868
+ `"source"` export condition.
869
+
870
+ For example, in editors such as VS Code and neovim/CoC that use
871
+ the TypeScript language services, you can give them a `tsconfig`
872
+ that contains this:
873
+
874
+ ```json
875
+ {
876
+ "compilerOptions": {
877
+ "customConditions": ["source"]
878
+ }
879
+ }
880
+ ```
881
+
882
+ If you are loading your program with a custom Node.js importer
883
+ like [`tsx`](https://npm.im/tsx) that can load TypeScript
884
+ directly, you can specify it like this:
885
+
886
+ ```bash
887
+ node --import=tsx --conditions=source ./script.ts
888
+ ```
889
+
890
+ Other TypeScript-aware tools may have other mechanisms for
891
+ specifying export conditions. Refer to their documentation for
892
+ more information.
893
+
894
+ See also: "Live Dev", above.
895
+
781
896
  ### Custom `project`
782
897
 
783
898
  Configure `tshy.project` if you want tshy to extend from a custom
@@ -0,0 +1,3 @@
1
+ import './tsconfig.js';
2
+ export declare const buildLiveCommonJS: () => void;
3
+ //# sourceMappingURL=build-live-commonjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-live-commonjs.d.ts","sourceRoot":"","sources":["../../src/build-live-commonjs.ts"],"names":[],"mappings":"AAUA,OAAO,eAAe,CAAA;AAKtB,eAAO,MAAM,iBAAiB,YA2B7B,CAAA"}
@@ -0,0 +1,36 @@
1
+ import chalk from 'chalk';
2
+ import { linkSync, mkdirSync } from 'node:fs';
3
+ import { dirname } from 'node:path';
4
+ import { relative, resolve } from 'node:path/posix';
5
+ import config from './config.js';
6
+ import * as console from './console.js';
7
+ import ifExist from './if-exist.js';
8
+ import polyfills from './polyfills.js';
9
+ import setFolderDialect from './set-folder-dialect.js';
10
+ import sources from './sources.js';
11
+ import './tsconfig.js';
12
+ const { commonjsDialects = [] } = config;
13
+ // don't actually do a build, just link files into places.
14
+ export const buildLiveCommonJS = () => {
15
+ for (const d of ['commonjs', ...commonjsDialects]) {
16
+ const pf = polyfills.get(d === 'commonjs' ? 'cjs' : d);
17
+ console.debug(chalk.cyan.dim('linking ' + d));
18
+ for (const s of sources) {
19
+ const source = s.substring('./src/'.length);
20
+ const target = resolve(`.tshy-build/${d}/${source}`);
21
+ mkdirSync(dirname(target), { recursive: true });
22
+ linkSync(s, target);
23
+ }
24
+ setFolderDialect('.tshy-build/' + d, 'commonjs');
25
+ for (const [override, orig] of pf?.map.entries() ?? []) {
26
+ const stemFrom = resolve(`.tshy-build/${d}`, relative(resolve('src'), resolve(override))).replace(/\.cts$/, '');
27
+ const stemTo = resolve(`.tshy-build/${d}`, relative(resolve('src'), resolve(orig))).replace(/\.tsx?$/, '');
28
+ ifExist.unlink(`${stemTo}.js.map`);
29
+ ifExist.unlink(`${stemTo}.d.ts.map`);
30
+ ifExist.rename(`${stemFrom}.cjs`, `${stemTo}.js`);
31
+ ifExist.rename(`${stemFrom}.d.cts`, `${stemTo}.d.ts`);
32
+ }
33
+ console.error(chalk.cyan.bold('linked commonjs'));
34
+ }
35
+ };
36
+ //# sourceMappingURL=build-live-commonjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-live-commonjs.js","sourceRoot":"","sources":["../../src/build-live-commonjs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,OAAO,MAAM,eAAe,CAAA;AACnC,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,eAAe,CAAA;AAEtB,MAAM,EAAE,gBAAgB,GAAG,EAAE,EAAE,GAAG,MAAM,CAAA;AAExC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,KAAK,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,gBAAgB,CAAC,EAAE,CAAC;QAClD,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACtD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAA;QAC7C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,MAAM,EAAE,CAAC,CAAA;YACpD,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC/C,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QACrB,CAAC;QACD,gBAAgB,CAAC,cAAc,GAAG,CAAC,EAAE,UAAU,CAAC,CAAA;QAChD,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,OAAO,CACtB,eAAe,CAAC,EAAE,EAClB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAC5C,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YACvB,MAAM,MAAM,GAAG,OAAO,CACpB,eAAe,CAAC,EAAE,EAClB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CACxC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;YACxB,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,CAAA;YAClC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,CAAA;YACpC,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,CAAA;YACjD,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC,CAAA;QACvD,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACnD,CAAC;AACH,CAAC,CAAA","sourcesContent":["import chalk from 'chalk'\nimport { linkSync, mkdirSync } from 'node:fs'\nimport { dirname } from 'node:path'\nimport { relative, resolve } from 'node:path/posix'\nimport config from './config.js'\nimport * as console from './console.js'\nimport ifExist from './if-exist.js'\nimport polyfills from './polyfills.js'\nimport setFolderDialect from './set-folder-dialect.js'\nimport sources from './sources.js'\nimport './tsconfig.js'\n\nconst { commonjsDialects = [] } = config\n\n// don't actually do a build, just link files into places.\nexport const buildLiveCommonJS = () => {\n for (const d of ['commonjs', ...commonjsDialects]) {\n const pf = polyfills.get(d === 'commonjs' ? 'cjs' : d)\n console.debug(chalk.cyan.dim('linking ' + d))\n for (const s of sources) {\n const source = s.substring('./src/'.length)\n const target = resolve(`.tshy-build/${d}/${source}`)\n mkdirSync(dirname(target), { recursive: true })\n linkSync(s, target)\n }\n setFolderDialect('.tshy-build/' + d, 'commonjs')\n for (const [override, orig] of pf?.map.entries() ?? []) {\n const stemFrom = resolve(\n `.tshy-build/${d}`,\n relative(resolve('src'), resolve(override))\n ).replace(/\\.cts$/, '')\n const stemTo = resolve(\n `.tshy-build/${d}`,\n relative(resolve('src'), resolve(orig))\n ).replace(/\\.tsx?$/, '')\n ifExist.unlink(`${stemTo}.js.map`)\n ifExist.unlink(`${stemTo}.d.ts.map`)\n ifExist.rename(`${stemFrom}.cjs`, `${stemTo}.js`)\n ifExist.rename(`${stemFrom}.d.cts`, `${stemTo}.d.ts`)\n }\n console.error(chalk.cyan.bold('linked commonjs'))\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import './tsconfig.js';
2
+ export declare const buildLiveESM: () => void;
3
+ //# sourceMappingURL=build-live-esm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-live-esm.d.ts","sourceRoot":"","sources":["../../src/build-live-esm.ts"],"names":[],"mappings":"AASA,OAAO,eAAe,CAAA;AAItB,eAAO,MAAM,YAAY,YA2BxB,CAAA"}
@@ -0,0 +1,34 @@
1
+ import chalk from 'chalk';
2
+ import { linkSync, mkdirSync } from 'node:fs';
3
+ import { dirname, relative, resolve } from 'node:path';
4
+ import config from './config.js';
5
+ import * as console from './console.js';
6
+ import ifExist from './if-exist.js';
7
+ import polyfills from './polyfills.js';
8
+ import setFolderDialect from './set-folder-dialect.js';
9
+ import sources from './sources.js';
10
+ import './tsconfig.js';
11
+ const { esmDialects = [] } = config;
12
+ export const buildLiveESM = () => {
13
+ for (const d of ['esm', ...esmDialects]) {
14
+ const pf = polyfills.get(d);
15
+ console.debug(chalk.cyan.dim('linking ' + d));
16
+ for (const s of sources) {
17
+ const source = s.substring('./src/'.length);
18
+ const target = resolve(`.tshy-build/${d}/${source}`);
19
+ mkdirSync(dirname(target), { recursive: true });
20
+ linkSync(s, target);
21
+ }
22
+ setFolderDialect('.tshy-build/' + d, 'esm');
23
+ for (const [override, orig] of pf?.map.entries() ?? []) {
24
+ const stemFrom = resolve(`.tshy-build/${d}`, relative(resolve('src'), resolve(override))).replace(/\.mts$/, '');
25
+ const stemTo = resolve(`.tshy-build/${d}`, relative(resolve('src'), resolve(orig))).replace(/\.tsx?$/, '');
26
+ ifExist.unlink(`${stemTo}.js.map`);
27
+ ifExist.unlink(`${stemTo}.d.ts.map`);
28
+ ifExist.rename(`${stemFrom}.mjs`, `${stemTo}.js`);
29
+ ifExist.rename(`${stemFrom}.d.mts`, `${stemTo}.d.ts`);
30
+ }
31
+ console.error(chalk.cyan.bold('linked ' + d));
32
+ }
33
+ };
34
+ //# sourceMappingURL=build-live-esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-live-esm.js","sourceRoot":"","sources":["../../src/build-live-esm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACtD,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,OAAO,MAAM,eAAe,CAAA;AACnC,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,eAAe,CAAA;AAEtB,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,MAAM,CAAA;AAEnC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAA;QAC7C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,MAAM,EAAE,CAAC,CAAA;YACpD,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC/C,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QACrB,CAAC;QACD,gBAAgB,CAAC,cAAc,GAAG,CAAC,EAAE,KAAK,CAAC,CAAA;QAC3C,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,OAAO,CACtB,eAAe,CAAC,EAAE,EAClB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAC5C,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YACvB,MAAM,MAAM,GAAG,OAAO,CACpB,eAAe,CAAC,EAAE,EAClB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CACxC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;YACxB,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,CAAA;YAClC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,CAAA;YACpC,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,CAAA;YACjD,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC,CAAA;QACvD,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAA;IAC/C,CAAC;AACH,CAAC,CAAA","sourcesContent":["import chalk from 'chalk'\nimport { linkSync, mkdirSync } from 'node:fs'\nimport { dirname, relative, resolve } from 'node:path'\nimport config from './config.js'\nimport * as console from './console.js'\nimport ifExist from './if-exist.js'\nimport polyfills from './polyfills.js'\nimport setFolderDialect from './set-folder-dialect.js'\nimport sources from './sources.js'\nimport './tsconfig.js'\n\nconst { esmDialects = [] } = config\n\nexport const buildLiveESM = () => {\n for (const d of ['esm', ...esmDialects]) {\n const pf = polyfills.get(d)\n console.debug(chalk.cyan.dim('linking ' + d))\n for (const s of sources) {\n const source = s.substring('./src/'.length)\n const target = resolve(`.tshy-build/${d}/${source}`)\n mkdirSync(dirname(target), { recursive: true })\n linkSync(s, target)\n }\n setFolderDialect('.tshy-build/' + d, 'esm')\n for (const [override, orig] of pf?.map.entries() ?? []) {\n const stemFrom = resolve(\n `.tshy-build/${d}`,\n relative(resolve('src'), resolve(override))\n ).replace(/\\.mts$/, '')\n const stemTo = resolve(\n `.tshy-build/${d}`,\n relative(resolve('src'), resolve(orig))\n ).replace(/\\.tsx?$/, '')\n ifExist.unlink(`${stemTo}.js.map`)\n ifExist.unlink(`${stemTo}.d.ts.map`)\n ifExist.rename(`${stemFrom}.mjs`, `${stemTo}.js`)\n ifExist.rename(`${stemFrom}.d.mts`, `${stemTo}.d.ts`)\n }\n console.error(chalk.cyan.bold('linked ' + d))\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"AAaA,OAAO,eAAe,CAAA;;AAQtB,wBAoCC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"AAcA,OAAO,eAAe,CAAA;;AAUtB,wBA0CC"}
package/dist/esm/build.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import chalk from 'chalk';
2
+ import config from './config.js';
2
3
  import { syncContentSync } from 'sync-content';
3
4
  import bins from './bins.js';
4
5
  import { buildCommonJS } from './build-commonjs.js';
@@ -11,14 +12,21 @@ import { link as linkSelfDep, unlink as unlinkSelfDep, } from './self-link.js';
11
12
  import './tsconfig.js';
12
13
  import { link as linkImports, save as saveImports, unlink as unlinkImports, } from './unbuilt-imports.js';
13
14
  import writePackage from './write-package.js';
15
+ import { buildLiveESM } from './build-live-esm.js';
16
+ import { buildLiveCommonJS } from './build-live-commonjs.js';
14
17
  export default async () => {
15
18
  cleanBuildTmp();
16
19
  linkSelfDep(pkg, 'src');
17
20
  await linkImports(pkg, 'src');
21
+ const liveDev = config.liveDev &&
22
+ process.env.npm_command !== 'publish' &&
23
+ process.env.npm_command !== 'pack';
24
+ const esm = liveDev ? buildLiveESM : buildESM;
25
+ const commonjs = liveDev ? buildLiveCommonJS : buildCommonJS;
18
26
  if (dialects.includes('esm'))
19
- buildESM();
27
+ esm();
20
28
  if (dialects.includes('commonjs'))
21
- buildCommonJS();
29
+ commonjs();
22
30
  await unlinkImports(pkg, 'src');
23
31
  unlinkSelfDep(pkg, 'src');
24
32
  console.debug(chalk.cyan.dim('moving to ./dist'));
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,aAAa,MAAM,sBAAsB,CAAA;AAChD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,QAAQ,MAAM,eAAe,CAAA;AACpC,OAAO,GAAG,MAAM,cAAc,CAAA;AAC9B,OAAO,EACL,IAAI,IAAI,WAAW,EACnB,MAAM,IAAI,aAAa,GACxB,MAAM,gBAAgB,CAAA;AACvB,OAAO,eAAe,CAAA;AACtB,OAAO,EACL,IAAI,IAAI,WAAW,EACnB,IAAI,IAAI,WAAW,EACnB,MAAM,IAAI,aAAa,GACxB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,YAAY,MAAM,oBAAoB,CAAA;AAE7C,eAAe,KAAK,IAAI,EAAE;IACxB,aAAa,EAAE,CAAA;IAEf,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACvB,MAAM,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC7B,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,QAAQ,EAAE,CAAA;IACxC,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,aAAa,EAAE,CAAA;IAClD,MAAM,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC/B,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAEzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAA;IACjD,eAAe,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAA;IAExD,aAAa,EAAE,CAAA;IAEf,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAExB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;QACrD,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC/B,MAAM,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,CAAA;QAC/C,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC1B,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAC1C,IAAI,WAAW,CAAC,6BAA6B,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAA;YAC/B,GAAG,CAAC,OAAO,CAAC,UAAU;gBACpB,kDAAkD;oBAClD,6BAA6B,CAAA;QACjC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;IAC3C,IAAI,EAAE,CAAA;IACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAA;IACnD,YAAY,EAAE,CAAA;AAChB,CAAC,CAAA","sourcesContent":["import chalk from 'chalk'\nimport { syncContentSync } from 'sync-content'\nimport bins from './bins.js'\nimport { buildCommonJS } from './build-commonjs.js'\nimport { buildESM } from './build-esm.js'\nimport cleanBuildTmp from './clean-build-tmp.js'\nimport * as console from './console.js'\nimport dialects from './dialects.js'\nimport pkg from './package.js'\nimport {\n link as linkSelfDep,\n unlink as unlinkSelfDep,\n} from './self-link.js'\nimport './tsconfig.js'\nimport {\n link as linkImports,\n save as saveImports,\n unlink as unlinkImports,\n} from './unbuilt-imports.js'\nimport writePackage from './write-package.js'\n\nexport default async () => {\n cleanBuildTmp()\n\n linkSelfDep(pkg, 'src')\n await linkImports(pkg, 'src')\n if (dialects.includes('esm')) buildESM()\n if (dialects.includes('commonjs')) buildCommonJS()\n await unlinkImports(pkg, 'src')\n unlinkSelfDep(pkg, 'src')\n\n console.debug(chalk.cyan.dim('moving to ./dist'))\n syncContentSync('.tshy-build', 'dist')\n console.debug(chalk.cyan.dim('cleaning build temp dir'))\n\n cleanBuildTmp()\n\n linkSelfDep(pkg, 'dist')\n\n if (pkg.imports) {\n console.debug('linking package imports', pkg.imports)\n if (dialects.includes('commonjs'))\n await linkImports(pkg, 'dist/commonjs', true)\n if (dialects.includes('esm'))\n await linkImports(pkg, 'dist/esm', true)\n if (saveImports('dist/.tshy-link-imports.mjs')) {\n pkg.scripts = pkg.scripts || {}\n pkg.scripts.preinstall =\n 'node -e \"import(process.argv[1]).catch(()=>{})\" ' +\n 'dist/.tshy-link-imports.mjs'\n }\n }\n\n console.debug(chalk.cyan.dim('chmod bins'))\n bins()\n console.debug(chalk.cyan.dim('write package.json'))\n writePackage()\n}\n"]}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk'\nimport config from './config.js'\nimport { syncContentSync } from 'sync-content'\nimport bins from './bins.js'\nimport { buildCommonJS } from './build-commonjs.js'\nimport { buildESM } from './build-esm.js'\nimport cleanBuildTmp from './clean-build-tmp.js'\nimport * as console from './console.js'\nimport dialects from './dialects.js'\nimport pkg from './package.js'\nimport {\n link as linkSelfDep,\n unlink as unlinkSelfDep,\n} from './self-link.js'\nimport './tsconfig.js'\nimport {\n link as linkImports,\n save as saveImports,\n unlink as unlinkImports,\n} from './unbuilt-imports.js'\nimport writePackage from './write-package.js'\nimport { buildLiveESM } from './build-live-esm.js'\nimport { buildLiveCommonJS } from './build-live-commonjs.js'\n\nexport default async () => {\n cleanBuildTmp()\n\n linkSelfDep(pkg, 'src')\n await linkImports(pkg, 'src')\n const liveDev =\n config.liveDev &&\n process.env.npm_command !== 'publish' &&\n process.env.npm_command !== 'pack'\n const esm = liveDev ? buildLiveESM : buildESM\n const commonjs = liveDev ? buildLiveCommonJS : buildCommonJS\n if (dialects.includes('esm')) esm()\n if (dialects.includes('commonjs')) commonjs()\n await unlinkImports(pkg, 'src')\n unlinkSelfDep(pkg, 'src')\n\n console.debug(chalk.cyan.dim('moving to ./dist'))\n syncContentSync('.tshy-build', 'dist')\n console.debug(chalk.cyan.dim('cleaning build temp dir'))\n\n cleanBuildTmp()\n\n linkSelfDep(pkg, 'dist')\n\n if (pkg.imports) {\n console.debug('linking package imports', pkg.imports)\n if (dialects.includes('commonjs'))\n await linkImports(pkg, 'dist/commonjs', true)\n if (dialects.includes('esm'))\n await linkImports(pkg, 'dist/esm', true)\n if (saveImports('dist/.tshy-link-imports.mjs')) {\n pkg.scripts = pkg.scripts || {}\n pkg.scripts.preinstall =\n 'node -e \"import(process.argv[1]).catch(()=>{})\" ' +\n 'dist/.tshy-link-imports.mjs'\n }\n }\n\n console.debug(chalk.cyan.dim('chmod bins'))\n bins()\n console.debug(chalk.cyan.dim('write package.json'))\n writePackage()\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,UAAU,EAEX,MAAM,YAAY,CAAA;AAiHnB,QAAA,MAAM,MAAM,EAAE,UAAoC,CAAA;AAClD,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,UAAU,EAEX,MAAM,YAAY,CAAA;AAkHnB,QAAA,MAAM,MAAM,EAAE,UAAoC,CAAA;AAClD,eAAe,MAAM,CAAA"}
@@ -30,7 +30,8 @@ const validConfig = (e) => !!e &&
30
30
  (e.exclude === undefined || validExclude(e.exclude)) &&
31
31
  validExtraDialects(e) &&
32
32
  validBoolean(e, 'selfLink') &&
33
- validBoolean(e, 'main');
33
+ validBoolean(e, 'main') &&
34
+ validBoolean(e, 'liveDev');
34
35
  const match = (e, pattern) => pattern.some(m => m.match(e));
35
36
  const parsePattern = (p) => Array.isArray(p)
36
37
  ? p.map(p => new Minimatch(p.replace(/^\.\//, '')))
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["// get the config and package and stuff\n\nimport chalk from 'chalk'\nimport { Minimatch } from 'minimatch'\nimport * as console from './console.js'\nimport fail from './fail.js'\nimport pkg from './package.js'\nimport sources from './sources.js'\nimport {\n Package,\n TshyConfig,\n TshyConfigMaybeGlobExports,\n} from './types.js'\nimport validDialects from './valid-dialects.js'\nimport validExclude from './valid-exclude.js'\nimport validExports from './valid-exports.js'\nimport validExtraDialects from './valid-extra-dialects.js'\nimport validImports from './valid-imports.js'\nimport validProject from './valid-project.js'\n\nconst validBoolean = (e: Record<string, any>, name: string) => {\n const v = e[name]\n if (v === undefined || typeof v === 'boolean') return true\n fail(`tshy.${name} must be a boolean value if specified, got: ` + v)\n return process.exit(1)\n}\n\nconst isStringArray = (e: any): e is string[] =>\n !!e && Array.isArray(e) && !e.some(e => typeof e !== 'string')\n\nconst validConfig = (e: any): e is TshyConfigMaybeGlobExports =>\n !!e &&\n typeof e === 'object' &&\n (e.exports === undefined ||\n typeof e.exports === 'string' ||\n isStringArray(e.exports) ||\n validExports(e.exports)) &&\n (e.dialects === undefined || validDialects(e.dialects)) &&\n (e.project === undefined || validProject(e.project)) &&\n (e.exclude === undefined || validExclude(e.exclude)) &&\n validExtraDialects(e) &&\n validBoolean(e, 'selfLink') &&\n validBoolean(e, 'main')\n\nconst match = (e: string, pattern: Minimatch[]): boolean =>\n pattern.some(m => m.match(e))\n\nconst parsePattern = (p: string | string[]): Minimatch[] =>\n Array.isArray(p)\n ? p.map(p => new Minimatch(p.replace(/^\\.\\//, '')))\n : parsePattern([p])\n\nconst getConfig = (\n pkg: Package,\n sources: Set<string>\n): TshyConfig => {\n const tshy: TshyConfigMaybeGlobExports = validConfig(pkg.tshy)\n ? pkg.tshy\n : {}\n let exportsConfig = tshy.exports\n if (\n typeof exportsConfig === 'string' ||\n Array.isArray(exportsConfig)\n ) {\n // Strip off the `./src` prefix and the extension\n // exports: \"src/**/*.ts\" => exports: {\"./foo\": \"./src/foo.ts\"}\n const exp: Exclude<TshyConfig['exports'], undefined> = {}\n const pattern: string | string[] = exportsConfig\n const m = parsePattern(pattern)\n for (const e of sources) {\n if (!match(e.replace(/^\\.\\//, ''), m)) continue\n // index is main, anything else is a subpath\n const sp = /^\\.\\/src\\/index.([mc]?[jt]s|[jt]sx)$/.test(e)\n ? '.'\n : './' +\n e\n .replace(/^\\.\\/src\\//, '')\n .replace(/\\.([mc]?[tj]s|[jt]sx)$/, '')\n exp[sp] = `./${e}`\n }\n /* c8 ignore start - should be impossible */\n if (!validExports(exp)) {\n console.error('invalid exports pattern, using default exports')\n delete tshy.exports\n exportsConfig = undefined\n } else {\n /* c8 ignore stop */\n exp['./package.json'] = './package.json'\n tshy.exports = exp\n }\n }\n const config = { ...tshy } as TshyConfig\n const ti = config as TshyConfig & { imports?: any }\n if (ti.imports) {\n console.debug(\n chalk.cyan.dim('imports') +\n ' moving from tshy config to top level'\n )\n pkg.imports = {\n ...pkg.imports,\n ...ti.imports,\n }\n delete ti.imports\n }\n validImports(pkg)\n if (!exportsConfig) {\n const e: Exclude<TshyConfig['exports'], undefined> = {\n './package.json': './package.json',\n }\n for (const i of sources) {\n if (/^\\.\\/src\\/index\\.[^\\.]+$/.test(i)) {\n e['.'] = i\n break\n }\n }\n config.exports = e\n tshy.exports = e\n exportsConfig = e\n }\n // return the filled out config, but leave the package.json\n // exports as they were, as long as they turned out to be valid.\n pkg.tshy = { ...tshy, exports: exportsConfig }\n return config\n}\n\nconst config: TshyConfig = getConfig(pkg, sources)\nexport default config\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["// get the config and package and stuff\n\nimport chalk from 'chalk'\nimport { Minimatch } from 'minimatch'\nimport * as console from './console.js'\nimport fail from './fail.js'\nimport pkg from './package.js'\nimport sources from './sources.js'\nimport {\n Package,\n TshyConfig,\n TshyConfigMaybeGlobExports,\n} from './types.js'\nimport validDialects from './valid-dialects.js'\nimport validExclude from './valid-exclude.js'\nimport validExports from './valid-exports.js'\nimport validExtraDialects from './valid-extra-dialects.js'\nimport validImports from './valid-imports.js'\nimport validProject from './valid-project.js'\n\nconst validBoolean = (e: Record<string, any>, name: string) => {\n const v = e[name]\n if (v === undefined || typeof v === 'boolean') return true\n fail(`tshy.${name} must be a boolean value if specified, got: ` + v)\n return process.exit(1)\n}\n\nconst isStringArray = (e: any): e is string[] =>\n !!e && Array.isArray(e) && !e.some(e => typeof e !== 'string')\n\nconst validConfig = (e: any): e is TshyConfigMaybeGlobExports =>\n !!e &&\n typeof e === 'object' &&\n (e.exports === undefined ||\n typeof e.exports === 'string' ||\n isStringArray(e.exports) ||\n validExports(e.exports)) &&\n (e.dialects === undefined || validDialects(e.dialects)) &&\n (e.project === undefined || validProject(e.project)) &&\n (e.exclude === undefined || validExclude(e.exclude)) &&\n validExtraDialects(e) &&\n validBoolean(e, 'selfLink') &&\n validBoolean(e, 'main') &&\n validBoolean(e, 'liveDev')\n\nconst match = (e: string, pattern: Minimatch[]): boolean =>\n pattern.some(m => m.match(e))\n\nconst parsePattern = (p: string | string[]): Minimatch[] =>\n Array.isArray(p)\n ? p.map(p => new Minimatch(p.replace(/^\\.\\//, '')))\n : parsePattern([p])\n\nconst getConfig = (\n pkg: Package,\n sources: Set<string>\n): TshyConfig => {\n const tshy: TshyConfigMaybeGlobExports = validConfig(pkg.tshy)\n ? pkg.tshy\n : {}\n let exportsConfig = tshy.exports\n if (\n typeof exportsConfig === 'string' ||\n Array.isArray(exportsConfig)\n ) {\n // Strip off the `./src` prefix and the extension\n // exports: \"src/**/*.ts\" => exports: {\"./foo\": \"./src/foo.ts\"}\n const exp: Exclude<TshyConfig['exports'], undefined> = {}\n const pattern: string | string[] = exportsConfig\n const m = parsePattern(pattern)\n for (const e of sources) {\n if (!match(e.replace(/^\\.\\//, ''), m)) continue\n // index is main, anything else is a subpath\n const sp = /^\\.\\/src\\/index.([mc]?[jt]s|[jt]sx)$/.test(e)\n ? '.'\n : './' +\n e\n .replace(/^\\.\\/src\\//, '')\n .replace(/\\.([mc]?[tj]s|[jt]sx)$/, '')\n exp[sp] = `./${e}`\n }\n /* c8 ignore start - should be impossible */\n if (!validExports(exp)) {\n console.error('invalid exports pattern, using default exports')\n delete tshy.exports\n exportsConfig = undefined\n } else {\n /* c8 ignore stop */\n exp['./package.json'] = './package.json'\n tshy.exports = exp\n }\n }\n const config = { ...tshy } as TshyConfig\n const ti = config as TshyConfig & { imports?: any }\n if (ti.imports) {\n console.debug(\n chalk.cyan.dim('imports') +\n ' moving from tshy config to top level'\n )\n pkg.imports = {\n ...pkg.imports,\n ...ti.imports,\n }\n delete ti.imports\n }\n validImports(pkg)\n if (!exportsConfig) {\n const e: Exclude<TshyConfig['exports'], undefined> = {\n './package.json': './package.json',\n }\n for (const i of sources) {\n if (/^\\.\\/src\\/index\\.[^\\.]+$/.test(i)) {\n e['.'] = i\n break\n }\n }\n config.exports = e\n tshy.exports = e\n exportsConfig = e\n }\n // return the filled out config, but leave the package.json\n // exports as they were, as long as they turned out to be valid.\n pkg.tshy = { ...tshy, exports: exportsConfig }\n return config\n}\n\nconst config: TshyConfig = getConfig(pkg, sources)\nexport default config\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,eAAe,EAChB,MAAM,gBAAgB,CAAA;AAKvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGjD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAoC5D,eAAO,MAAM,YAAY,MACpB,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,cAC9B,IAAI,MAAM,EAAE,WAAW,CAAC,8BAE+B,CAAA;AAEpE,eAAO,MAAM,YAAY,MACpB,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,cAC9B,IAAI,MAAM,EAAE,WAAW,CAAC,8BAQlC,CAAA;AAqFH,eAAO,MAAM,OAAO,MACf,UAAU,GAAG,SAAS,OACpB,OAAO,GAAG;IAAE,OAAO,EAAE,eAAe,CAAA;CAAE,cAsB5C,CAAA;;AAMD,wBAA0B"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,eAAe,EAChB,MAAM,gBAAgB,CAAA;AAKvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGjD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AA6C5D,eAAO,MAAM,YAAY,MACpB,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,cAC9B,IAAI,MAAM,EAAE,WAAW,CAAC,8BAE+B,CAAA;AAEpE,eAAO,MAAM,YAAY,MACpB,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,cAC9B,IAAI,MAAM,EAAE,WAAW,CAAC,8BAQlC,CAAA;AAgHH,eAAO,MAAM,OAAO,MACf,UAAU,GAAG,SAAS,OACpB,OAAO,GAAG;IAAE,OAAO,EAAE,eAAe,CAAA;CAAE,cAsB5C,CAAA;;AAMD,wBAA0B"}
@@ -6,6 +6,9 @@ import pkg from './package.js';
6
6
  import polyfills from './polyfills.js';
7
7
  import { resolveExport } from './resolve-export.js';
8
8
  const { esmDialects = [], commonjsDialects = [] } = config;
9
+ const liveDev = config.liveDev &&
10
+ process.env.npm_command !== 'publish' &&
11
+ process.env.npm_command !== 'pack';
9
12
  const getTargetForDialectCondition = (s, dialect, condition, type, polyfills = new Map()) => {
10
13
  if (s === undefined)
11
14
  return undefined;
@@ -15,10 +18,14 @@ const getTargetForDialectCondition = (s, dialect, condition, type, polyfills = n
15
18
  if (s.endsWith(xts))
16
19
  return undefined;
17
20
  const pf = dialect === 'commonjs' ? 'cjs' : dialect;
21
+ const rel = relative(resolve('./src'), resolve(polyfills.get(pf)?.map.get(s) ?? s));
22
+ const target = liveDev
23
+ ? rel
24
+ : rel.replace(/\.([mc]?)tsx?$/, '.$1js');
18
25
  return !s || !s.startsWith('./src/')
19
26
  ? s
20
27
  : dialects.includes(type)
21
- ? `./dist/${dialect}/${relative(resolve('./src'), resolve(polyfills.get(pf)?.map.get(s) ?? s)).replace(/\.([mc]?)tsx?$/, '.$1js')}`
28
+ ? `./dist/${dialect}/${target}`
22
29
  : undefined;
23
30
  }
24
31
  return resolveExport(s, [condition]);
@@ -52,38 +59,64 @@ const getExports = (c) => {
52
59
  const exp = (e[sub] = {});
53
60
  if (impTarget) {
54
61
  for (const d of esmDialects) {
62
+ const source = s && (polyfills.get(d)?.map.get(s) ?? s);
55
63
  const target = getTargetForDialectCondition(s, d, d, 'esm', polyfills);
56
64
  if (target) {
57
- exp[d] = {
58
- types: target.replace(/\.js$/, '.d.ts'),
59
- default: target,
60
- };
65
+ exp[d] = liveDev
66
+ ? {
67
+ source,
68
+ default: target,
69
+ }
70
+ : {
71
+ source,
72
+ types: target.replace(/\.js$/, '.d.ts'),
73
+ default: target,
74
+ };
61
75
  }
62
76
  }
63
77
  }
64
78
  if (reqTarget) {
65
79
  for (const d of commonjsDialects) {
80
+ const source = s && (polyfills.get(d)?.map.get(s) ?? s);
66
81
  const target = getTargetForDialectCondition(s, d, d, 'commonjs', polyfills);
67
82
  if (target) {
68
- exp[d] = {
69
- types: target.replace(/\.js$/, '.d.ts'),
70
- default: target,
71
- };
83
+ exp[d] = liveDev
84
+ ? {
85
+ source,
86
+ default: target,
87
+ }
88
+ : {
89
+ source,
90
+ types: target.replace(/\.js$/, '.d.ts'),
91
+ default: target,
92
+ };
72
93
  }
73
94
  }
74
95
  }
75
96
  // put the default import/require after all the other special ones.
76
97
  if (impTarget) {
77
- exp.import = {
78
- types: impTarget.replace(/\.(m?)js$/, '.d.$1ts'),
79
- default: impTarget,
80
- };
98
+ exp.import = liveDev
99
+ ? {
100
+ source: s,
101
+ default: impTarget,
102
+ }
103
+ : {
104
+ source: s,
105
+ types: impTarget.replace(/\.(m?)js$/, '.d.$1ts'),
106
+ default: impTarget,
107
+ };
81
108
  }
82
109
  if (reqTarget) {
83
- exp.require = {
84
- types: reqTarget.replace(/\.(c?)js$/, '.d.$1ts'),
85
- default: reqTarget,
86
- };
110
+ exp.require = liveDev
111
+ ? {
112
+ source: s,
113
+ default: reqTarget,
114
+ }
115
+ : {
116
+ source: s,
117
+ types: reqTarget.replace(/\.(c?)js$/, '.d.$1ts'),
118
+ default: reqTarget,
119
+ };
87
120
  }
88
121
  }
89
122
  return e;
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAMnD,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,QAAQ,MAAM,eAAe,CAAA;AACpC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,GAAG,MAAM,cAAc,CAAA;AAE9B,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,gBAAgB,GAAG,EAAE,EAAE,GAAG,MAAM,CAAA;AAE1D,MAAM,4BAA4B,GAAG,CACnC,CAAyC,EACzC,OAAU,EACV,SAIK,EACL,IAIsB,EACtB,YAAsC,IAAI,GAAG,EAAE,EACpB,EAAE;IAC7B,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACrC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,gCAAgC;QAChC,MAAM,GAAG,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;QACjD,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAA;QACrC,MAAM,EAAE,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAA;QACnD,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACzB,CAAC,CAAC,UAAU,OAAO,IAAI,QAAQ,CAC3B,OAAO,CAAC,OAAO,CAAC,EAChB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAC5C,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE;gBACxC,CAAC,CAAC,SAAS,CAAA;IACf,CAAC;IACD,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,CAAyC,EACzC,YAAsC,IAAI,GAAG,EAAE,EAC/C,EAAE,CACF,4BAA4B,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;AAEpE,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,CAAyC,EACzC,YAAsC,IAAI,GAAG,EAAE,EAC/C,EAAE,CACF,4BAA4B,CAC1B,CAAC,EACD,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,CACV,CAAA;AAEH,MAAM,UAAU,GAAG,CACjB,CAAa,EACqB,EAAE;IACpC,kEAAkE;IAClE,qBAAqB;IACrB,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,qDAAqD,CAAC,CAAA;QAC3D,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IACD,oBAAoB;IACpB,MAAM,CAAC,GAAqC,EAAE,CAAA;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,mCAAmC;QACnC,IACE,CAAC,KAAK,IAAI;YACV,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAClD,CAAC;YACD,4CAA4C;YAC5C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAqB,CAAA;YAC9B,SAAQ;QACV,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;QAC5C,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;QAE5C,uBAAuB;QACvB,qBAAqB;QACrB,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS;YAAE,SAAQ;QACtC,oBAAoB;QAEpB,MAAM,GAAG,GAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;QACjD,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,4BAA4B,CACzC,CAAC,EACD,CAAC,EACD,CAAC,EACD,KAAK,EACL,SAAS,CACV,CAAA;gBACD,IAAI,MAAM,EAAE,CAAC;oBACX,GAAG,CAAC,CAAC,CAAC,GAAG;wBACP,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;wBACvC,OAAO,EAAE,MAAM;qBAChB,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,4BAA4B,CACzC,CAAC,EACD,CAAC,EACD,CAAC,EACD,UAAU,EACV,SAAS,CACV,CAAA;gBACD,IAAI,MAAM,EAAE,CAAC;oBACX,GAAG,CAAC,CAAC,CAAC,GAAG;wBACP,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;wBACvC,OAAO,EAAE,MAAM;qBAChB,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,mEAAmE;QACnE,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,GAAG;gBACX,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC;gBAChD,OAAO,EAAE,SAAS;aACnB,CAAA;QACH,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,OAAO,GAAG;gBACZ,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC;gBAChD,OAAO,EAAE,SAAS;aACnB,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,CAAyB,EACzB,GAA2C,EAC3C,EAAE;IACF,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IACxD,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAA;IAC7B,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,wDAAwD,CAAC,CAAA;YAC9D,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxB,CAAC;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC5C,SAAS;YACT,OAAO;SACR,CAAC,CAAA;QACF,GAAG,CAAC,IAAI,GAAG,GAAG,CAAA;QACd,IAAI,KAAK,IAAI,KAAK,KAAK,GAAG;YAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;;YACxC,OAAO,GAAG,CAAC,KAAK,CAAA;IACvB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,CAAC,CAAC,IAAI,CAAA;QACxC,OAAO,GAAG,CAAC,IAAI,CAAA;QACf,OAAO,GAAG,CAAC,KAAK,CAAA;IAClB,CAAC;IACD,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAA;AAC5D,CAAC,CAAA;AAED,qEAAqE;AACrE,OAAO,GAAG,CAAC,MAAM,CAAA;AACjB,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;AAChC,OAAO,CAAC,MAAM,EAAE,GAA6C,CAAC,CAAA;AAC9D,eAAe,GAAG,CAAC,OAAO,CAAA","sourcesContent":["import { relative, resolve } from 'node:path/posix'\nimport {\n ConditionalValue,\n ConditionalValueObject,\n ExportsSubpaths,\n} from 'resolve-import'\nimport config from './config.js'\nimport dialects from './dialects.js'\nimport fail from './fail.js'\nimport pkg from './package.js'\nimport type { PolyfillSet } from './polyfills.js'\nimport polyfills from './polyfills.js'\nimport { resolveExport } from './resolve-export.js'\nimport { Package, TshyConfig, TshyExport } from './types.js'\nconst { esmDialects = [], commonjsDialects = [] } = config\n\nconst getTargetForDialectCondition = <T extends string>(\n s: string | TshyExport | undefined | null,\n dialect: T,\n condition: T extends 'esm'\n ? 'import'\n : T extends 'commonjs'\n ? 'require'\n : T,\n type: T extends 'esm'\n ? 'esm'\n : T extends 'commonjs'\n ? 'commonjs'\n : 'esm' | 'commonjs',\n polyfills: Map<string, PolyfillSet> = new Map()\n): string | undefined | null => {\n if (s === undefined) return undefined\n if (typeof s === 'string') {\n // the excluded filename pattern\n const xts = type === 'commonjs' ? '.mts' : '.cts'\n if (s.endsWith(xts)) return undefined\n const pf = dialect === 'commonjs' ? 'cjs' : dialect\n return !s || !s.startsWith('./src/')\n ? s\n : dialects.includes(type)\n ? `./dist/${dialect}/${relative(\n resolve('./src'),\n resolve(polyfills.get(pf)?.map.get(s) ?? s)\n ).replace(/\\.([mc]?)tsx?$/, '.$1js')}`\n : undefined\n }\n return resolveExport(s, [condition])\n}\n\nexport const getImpTarget = (\n s: string | TshyExport | undefined | null,\n polyfills: Map<string, PolyfillSet> = new Map()\n) =>\n getTargetForDialectCondition(s, 'esm', 'import', 'esm', polyfills)\n\nexport const getReqTarget = (\n s: string | TshyExport | undefined | null,\n polyfills: Map<string, PolyfillSet> = new Map()\n) =>\n getTargetForDialectCondition(\n s,\n 'commonjs',\n 'require',\n 'commonjs',\n polyfills\n )\n\nconst getExports = (\n c: TshyConfig\n): Record<string, ConditionalValue> => {\n // by this time it always exports, will get the default if missing\n /* c8 ignore start */\n if (!c.exports) {\n fail('no exports on tshy config (is there code in ./src?)')\n return process.exit(1)\n }\n /* c8 ignore stop */\n const e: Record<string, ConditionalValue> = {}\n for (const [sub, s] of Object.entries(c.exports)) {\n // external export, not built by us\n if (\n s !== null &&\n (typeof s !== 'string' || !s.startsWith('./src/'))\n ) {\n // already been validated, just accept as-is\n e[sub] = s as ConditionalValue\n continue\n }\n\n const impTarget = getImpTarget(s, polyfills)\n const reqTarget = getReqTarget(s, polyfills)\n\n // should be impossible\n /* c8 ignore start */\n if (!impTarget && !reqTarget) continue\n /* c8 ignore stop */\n\n const exp: ConditionalValueObject = (e[sub] = {})\n if (impTarget) {\n for (const d of esmDialects) {\n const target = getTargetForDialectCondition(\n s,\n d,\n d,\n 'esm',\n polyfills\n )\n if (target) {\n exp[d] = {\n types: target.replace(/\\.js$/, '.d.ts'),\n default: target,\n }\n }\n }\n }\n\n if (reqTarget) {\n for (const d of commonjsDialects) {\n const target = getTargetForDialectCondition(\n s,\n d,\n d,\n 'commonjs',\n polyfills\n )\n if (target) {\n exp[d] = {\n types: target.replace(/\\.js$/, '.d.ts'),\n default: target,\n }\n }\n }\n }\n // put the default import/require after all the other special ones.\n if (impTarget) {\n exp.import = {\n types: impTarget.replace(/\\.(m?)js$/, '.d.$1ts'),\n default: impTarget,\n }\n }\n if (reqTarget) {\n exp.require = {\n types: reqTarget.replace(/\\.(c?)js$/, '.d.$1ts'),\n default: reqTarget,\n }\n }\n }\n return e\n}\n\nexport const setMain = (\n c: TshyConfig | undefined,\n pkg: Package & { exports: ExportsSubpaths }\n) => {\n const mod = resolveExport(pkg.exports['.'], ['require'])\n const main = c?.main ?? !!mod\n if (main) {\n if (!mod) {\n fail(`could not resolve exports['.'] for tshy.main 'require'`)\n return process.exit(1)\n }\n const types = resolveExport(pkg.exports['.'], [\n 'require',\n 'types',\n ])\n pkg.main = mod\n if (types && types !== mod) pkg.types = types\n else delete pkg.types\n } else {\n if (c && c.main !== false) delete c.main\n delete pkg.main\n delete pkg.types\n }\n pkg.type = pkg.type === 'commonjs' ? 'commonjs' : 'module'\n}\n\n// These are all defined by exports, so it's just confusing otherwise\ndelete pkg.module\npkg.exports = getExports(config)\nsetMain(config, pkg as Package & { exports: ExportsSubpaths })\nexport default pkg.exports\n"]}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/exports.ts"],"names":[],"mappings":"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","sourcesContent":["import { relative, resolve } from 'node:path/posix'\nimport {\n ConditionalValue,\n ConditionalValueObject,\n ExportsSubpaths,\n} from 'resolve-import'\nimport config from './config.js'\nimport dialects from './dialects.js'\nimport fail from './fail.js'\nimport pkg from './package.js'\nimport type { PolyfillSet } from './polyfills.js'\nimport polyfills from './polyfills.js'\nimport { resolveExport } from './resolve-export.js'\nimport { Package, TshyConfig, TshyExport } from './types.js'\nconst { esmDialects = [], commonjsDialects = [] } = config\n\nconst liveDev =\n config.liveDev &&\n process.env.npm_command !== 'publish' &&\n process.env.npm_command !== 'pack'\n\nconst getTargetForDialectCondition = <T extends string>(\n s: string | TshyExport | undefined | null,\n dialect: T,\n condition: T extends 'esm'\n ? 'import'\n : T extends 'commonjs'\n ? 'require'\n : T,\n type: T extends 'esm'\n ? 'esm'\n : T extends 'commonjs'\n ? 'commonjs'\n : 'esm' | 'commonjs',\n polyfills: Map<string, PolyfillSet> = new Map()\n): string | undefined | null => {\n if (s === undefined) return undefined\n if (typeof s === 'string') {\n // the excluded filename pattern\n const xts = type === 'commonjs' ? '.mts' : '.cts'\n if (s.endsWith(xts)) return undefined\n const pf = dialect === 'commonjs' ? 'cjs' : dialect\n const rel = relative(\n resolve('./src'),\n resolve(polyfills.get(pf)?.map.get(s) ?? s)\n )\n const target = liveDev\n ? rel\n : rel.replace(/\\.([mc]?)tsx?$/, '.$1js')\n return !s || !s.startsWith('./src/')\n ? s\n : dialects.includes(type)\n ? `./dist/${dialect}/${target}`\n : undefined\n }\n return resolveExport(s, [condition])\n}\n\nexport const getImpTarget = (\n s: string | TshyExport | undefined | null,\n polyfills: Map<string, PolyfillSet> = new Map()\n) =>\n getTargetForDialectCondition(s, 'esm', 'import', 'esm', polyfills)\n\nexport const getReqTarget = (\n s: string | TshyExport | undefined | null,\n polyfills: Map<string, PolyfillSet> = new Map()\n) =>\n getTargetForDialectCondition(\n s,\n 'commonjs',\n 'require',\n 'commonjs',\n polyfills\n )\n\nconst getExports = (\n c: TshyConfig\n): Record<string, ConditionalValue> => {\n // by this time it always exports, will get the default if missing\n /* c8 ignore start */\n if (!c.exports) {\n fail('no exports on tshy config (is there code in ./src?)')\n return process.exit(1)\n }\n /* c8 ignore stop */\n const e: Record<string, ConditionalValue> = {}\n for (const [sub, s] of Object.entries(c.exports)) {\n // external export, not built by us\n if (\n s !== null &&\n (typeof s !== 'string' || !s.startsWith('./src/'))\n ) {\n // already been validated, just accept as-is\n e[sub] = s as ConditionalValue\n continue\n }\n\n const impTarget = getImpTarget(s, polyfills)\n const reqTarget = getReqTarget(s, polyfills)\n\n // should be impossible\n /* c8 ignore start */\n if (!impTarget && !reqTarget) continue\n /* c8 ignore stop */\n\n const exp: ConditionalValueObject = (e[sub] = {})\n if (impTarget) {\n for (const d of esmDialects) {\n const source = s && (polyfills.get(d)?.map.get(s) ?? s)\n\n const target = getTargetForDialectCondition(\n s,\n d,\n d,\n 'esm',\n polyfills\n )\n if (target) {\n exp[d] = liveDev\n ? {\n source,\n default: target,\n }\n : {\n source,\n types: target.replace(/\\.js$/, '.d.ts'),\n default: target,\n }\n }\n }\n }\n\n if (reqTarget) {\n for (const d of commonjsDialects) {\n const source = s && (polyfills.get(d)?.map.get(s) ?? s)\n const target = getTargetForDialectCondition(\n s,\n d,\n d,\n 'commonjs',\n polyfills\n )\n if (target) {\n exp[d] = liveDev\n ? {\n source,\n default: target,\n }\n : {\n source,\n types: target.replace(/\\.js$/, '.d.ts'),\n default: target,\n }\n }\n }\n }\n // put the default import/require after all the other special ones.\n if (impTarget) {\n exp.import = liveDev\n ? {\n source: s,\n default: impTarget,\n }\n : {\n source: s,\n types: impTarget.replace(/\\.(m?)js$/, '.d.$1ts'),\n default: impTarget,\n }\n }\n if (reqTarget) {\n exp.require = liveDev\n ? {\n source: s,\n default: reqTarget,\n }\n : {\n source: s,\n types: reqTarget.replace(/\\.(c?)js$/, '.d.$1ts'),\n default: reqTarget,\n }\n }\n }\n return e\n}\n\nexport const setMain = (\n c: TshyConfig | undefined,\n pkg: Package & { exports: ExportsSubpaths }\n) => {\n const mod = resolveExport(pkg.exports['.'], ['require'])\n const main = c?.main ?? !!mod\n if (main) {\n if (!mod) {\n fail(`could not resolve exports['.'] for tshy.main 'require'`)\n return process.exit(1)\n }\n const types = resolveExport(pkg.exports['.'], [\n 'require',\n 'types',\n ])\n pkg.main = mod\n if (types && types !== mod) pkg.types = types\n else delete pkg.types\n } else {\n if (c && c.main !== false) delete c.main\n delete pkg.main\n delete pkg.types\n }\n pkg.type = pkg.type === 'commonjs' ? 'commonjs' : 'module'\n}\n\n// These are all defined by exports, so it's just confusing otherwise\ndelete pkg.module\npkg.exports = getExports(config)\nsetMain(config, pkg as Package & { exports: ExportsSubpaths })\nexport default pkg.exports\n"]}
@@ -8,6 +8,7 @@ export type TshyConfigMaybeGlobExports = {
8
8
  esmDialects?: string[];
9
9
  project?: string;
10
10
  exclude?: string[];
11
+ liveDev?: boolean;
11
12
  };
12
13
  export type TshyConfig = TshyConfigMaybeGlobExports & {
13
14
  exports?: Record<string, TshyExport>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,OAAO,EACR,MAAM,gBAAgB,CAAA;AAEvB,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACxD,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,0BAA0B,GAAG;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,KAAK,CAAA;AAExC,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAA;AAEzC,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,IAAI,CAAC,EAAE,0BAA0B,CAAA;IACjC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACjB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,OAAO,EACR,MAAM,gBAAgB,CAAA;AAEvB,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACxD,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,0BAA0B,GAAG;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,KAAK,CAAA;AAExC,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAA;AAEzC,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,IAAI,CAAC,EAAE,0BAA0B,CAAA;IACjC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACjB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n ConditionalValue,\n ExportsSubpaths,\n Imports,\n} from 'resolve-import'\n\nexport type TshyConfigMaybeGlobExports = {\n exports?: string | string[] | Record<string, TshyExport>\n dialects?: Dialect[]\n selfLink?: boolean\n main?: boolean\n commonjsDialects?: string[]\n esmDialects?: string[]\n project?: string\n exclude?: string[]\n}\n\nexport type TshyConfig = TshyConfigMaybeGlobExports & {\n exports?: Record<string, TshyExport>\n}\n\nexport type Dialect = 'commonjs' | 'esm'\n\nexport type ExportDetail = {\n default: string\n [k: string]: string\n}\n\nexport type TshyExport = ConditionalValue\n\nexport type Package = {\n name: string\n version: string\n main?: string\n types?: string\n type?: 'module' | 'commonjs'\n bin?: string | Record<string, string>\n exports?: ExportsSubpaths\n tshy?: TshyConfigMaybeGlobExports\n imports?: Imports\n [k: string]: any\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n ConditionalValue,\n ExportsSubpaths,\n Imports,\n} from 'resolve-import'\n\nexport type TshyConfigMaybeGlobExports = {\n exports?: string | string[] | Record<string, TshyExport>\n dialects?: Dialect[]\n selfLink?: boolean\n main?: boolean\n commonjsDialects?: string[]\n esmDialects?: string[]\n project?: string\n exclude?: string[]\n liveDev?: boolean\n}\n\nexport type TshyConfig = TshyConfigMaybeGlobExports & {\n exports?: Record<string, TshyExport>\n}\n\nexport type Dialect = 'commonjs' | 'esm'\n\nexport type ExportDetail = {\n default: string\n [k: string]: string\n}\n\nexport type TshyExport = ConditionalValue\n\nexport type Package = {\n name: string\n version: string\n main?: string\n types?: string\n type?: 'module' | 'commonjs'\n bin?: string | Record<string, string>\n exports?: ExportsSubpaths\n tshy?: TshyConfigMaybeGlobExports\n imports?: Imports\n [k: string]: any\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tshy",
3
- "version": "1.14.1",
3
+ "version": "1.15.1",
4
4
  "description": "TypeScript HYbridizer - Hybrid (CommonJS/ESM) TypeScript node package builder",
5
5
  "author": "Isaac Z. Schlueter <i@izs.me> (https://izs.me)",
6
6
  "license": "BlueOak-1.0.0",