@oidoid/void 0.1.2 → 0.1.4

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.
@@ -1,3 +1,4 @@
1
+ import { readFile } from 'node:fs/promises';
1
2
  import path from 'node:path';
2
3
  import { Argv } from "../utils/argv.js";
3
4
  import { exec } from "../utils/exec.js";
@@ -5,11 +6,18 @@ import { parseConfigFile } from "./config-file.js";
5
6
  export async function readConfig(args) {
6
7
  const argv = Argv(args);
7
8
  const configFile = await parseConfigFile(argv.opts['--config'] ?? 'void.json');
8
- const hash = (await exec('git', 'rev-parse', '--short', 'HEAD')).trim();
9
+ let hash = '0000000';
10
+ try {
11
+ hash = (await exec('git', 'rev-parse', '--short', 'HEAD')).trim();
12
+ }
13
+ catch { }
9
14
  const packageJSON = JSON.parse((await exec('npm', 'pkg', 'get', 'version', 'published')) || '{}');
10
- return Config(argv, configFile, hash, packageJSON);
15
+ const tsconfigFilename = path.resolve(configFile.dirname, argv.opts['--tsconfig'] ?? 'tsconfig.json');
16
+ const tsconfig = await readTSConfig(tsconfigFilename);
17
+ return Config(argv, configFile, hash, packageJSON, tsconfigFilename, tsconfig);
11
18
  }
12
- export function Config(argv, configFile, hash, packageJSON) {
19
+ /** @internal */
20
+ export function Config(argv, configFile, hash, packageJSON, tsconfigFilename, tsconfig) {
13
21
  let fileStem = path.basename(configFile.entry).replace(/\.[^.]+$/, '');
14
22
  if (configFile.out.name && !argv.opts['--watch'])
15
23
  fileStem = configFile.out.name;
@@ -35,7 +43,8 @@ export function Config(argv, configFile, hash, packageJSON) {
35
43
  init: configFile.init,
36
44
  dirname: configFile.dirname,
37
45
  filename: configFile.filename,
38
- tsconfig: path.resolve(configFile.dirname, argv.opts['--tsconfig'] ?? 'tsconfig.json'),
46
+ tsconfigFilename,
47
+ conditions: tsconfig.compilerOptions?.customConditions ?? [],
39
48
  minify: argv.opts['--minify'] ?? false,
40
49
  oneFile: argv.opts['--one-file'] ?? false,
41
50
  watch: argv.opts['--watch'] ?? false,
@@ -47,4 +56,26 @@ export function Config(argv, configFile, hash, packageJSON) {
47
56
  argv
48
57
  };
49
58
  }
59
+ async function readTSConfig(filename) {
60
+ let str;
61
+ try {
62
+ str = await readFile(filename, 'utf8');
63
+ }
64
+ catch (err) {
65
+ throw Error(`tsconfig ${filename} unreadable`, { cause: err });
66
+ }
67
+ return parseTSConfig(str, filename);
68
+ }
69
+ /** @internal */
70
+ export function parseTSConfig(jsonc, filename) {
71
+ const stripped = jsonc
72
+ .replace(/("(?:\\.|[^"\\])*")|\/\/[^\r\n]*/g, (_match, group0) => group0 ?? '')
73
+ .replace(/,(\s*[}\]])/g, '$1'); // trailing commas.
74
+ try {
75
+ return JSON.parse(stripped);
76
+ }
77
+ catch (err) {
78
+ throw Error(`tsconfig ${filename} unparseable`, { cause: err });
79
+ }
80
+ }
50
81
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../tools/types/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../tools/types/config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -21,7 +21,10 @@
21
21
  "node": ">=24.0"
22
22
  },
23
23
  "exports": {
24
- ".": "./dist/src/index.js"
24
+ ".": {
25
+ "dev": "./src/index.ts",
26
+ "default": "./dist/src/index.js"
27
+ }
25
28
  },
26
29
  "files": [
27
30
  "dist/",
@@ -39,7 +42,7 @@
39
42
  "publishConfig": {
40
43
  "access": "public"
41
44
  },
42
- "published": "20260102",
45
+ "published": "20260103",
43
46
  "repository": {
44
47
  "type": "git",
45
48
  "url": "git+https://github.com/oidoid/void.git"
@@ -57,5 +60,5 @@
57
60
  "version": "npm pkg set published=$(date +%Y%m%d) && npm run clean && npm test"
58
61
  },
59
62
  "type": "module",
60
- "version": "0.1.2"
63
+ "version": "0.1.4"
61
64
  }
package/readme.md CHANGED
@@ -15,6 +15,25 @@ npm install --save @oidoid/void
15
15
 
16
16
  ## Development
17
17
 
18
+ ### Local Development
19
+
20
+ 1. clone void as a sibling directory of the game.
21
+ 2. `npm link ../void` from the game.
22
+ 3. add `customConditions` to the root `tsconfig` for esbuild and a void reference for tsc. Eg:
23
+
24
+ ```jsonc
25
+ {
26
+ "extends": "./tsconfig.prod.json",
27
+ "compilerOptions": {
28
+ "customConditions": ["dev"],
29
+ },
30
+ "references": [{"path": "../void"}]
31
+ }
32
+ ```
33
+
34
+ it's possible to use `"paths": {"@oidoid/void": ["../void/src"]}` instead of or in addition to `customConditions`.
35
+ 4. for unit tests, run with `NODE_OPTIONS=--conditions=development`.
36
+
18
37
  ### Declaration Merging
19
38
 
20
39
  to avoid threading template parameters throughout all code, declaration merging is used for the following: