ts-repo-utils 10.1.6 → 10.1.8
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 +2 -2
- package/dist/cmd/assert-repo-is-clean.mjs +3 -3
- package/dist/cmd/assert-repo-is-clean.mjs.map +1 -1
- package/dist/cmd/check-should-run-type-checks.mjs +3 -3
- package/dist/cmd/check-should-run-type-checks.mjs.map +1 -1
- package/dist/cmd/format-diff-from.mjs +3 -3
- package/dist/cmd/format-diff-from.mjs.map +1 -1
- package/dist/cmd/format-uncommitted.mjs +3 -3
- package/dist/cmd/format-uncommitted.mjs.map +1 -1
- package/dist/cmd/gen-index-ts.mjs +4 -4
- package/dist/cmd/gen-index-ts.mjs.map +1 -1
- package/dist/functions/assert-ext.mjs +6 -6
- package/dist/functions/assert-ext.mjs.map +1 -1
- package/dist/functions/assert-path-exists.d.mts.map +1 -1
- package/dist/functions/assert-path-exists.mjs +4 -3
- package/dist/functions/assert-path-exists.mjs.map +1 -1
- package/dist/functions/assert-repo-is-clean.mjs +1 -1
- package/dist/functions/assert-repo-is-clean.mjs.map +1 -1
- package/dist/functions/create-result-assert.mjs +1 -1
- package/dist/functions/create-result-assert.mjs.map +1 -1
- package/dist/functions/exec-async.d.mts.map +1 -1
- package/dist/functions/exec-async.mjs +2 -2
- package/dist/functions/exec-async.mjs.map +1 -1
- package/dist/functions/format.d.mts.map +1 -1
- package/dist/functions/format.mjs +20 -21
- package/dist/functions/format.mjs.map +1 -1
- package/dist/functions/gen-index.mjs +4 -4
- package/dist/functions/gen-index.mjs.map +1 -1
- package/dist/functions/glob.d.mts +3 -3
- package/dist/functions/glob.d.mts.map +1 -1
- package/dist/functions/glob.mjs.map +1 -1
- package/dist/functions/workspace-utils/execute-parallel.d.mts.map +1 -1
- package/dist/functions/workspace-utils/execute-parallel.mjs +26 -29
- package/dist/functions/workspace-utils/execute-parallel.mjs.map +1 -1
- package/dist/functions/workspace-utils/get-workspace-packages.d.mts +0 -1
- package/dist/functions/workspace-utils/get-workspace-packages.d.mts.map +1 -1
- package/dist/functions/workspace-utils/get-workspace-packages.mjs +2 -4
- package/dist/functions/workspace-utils/get-workspace-packages.mjs.map +1 -1
- package/dist/functions/workspace-utils/run-cmd-in-parallel.d.mts +0 -1
- package/dist/functions/workspace-utils/run-cmd-in-parallel.d.mts.map +1 -1
- package/dist/functions/workspace-utils/run-cmd-in-parallel.mjs +2 -3
- package/dist/functions/workspace-utils/run-cmd-in-parallel.mjs.map +1 -1
- package/dist/functions/workspace-utils/run-cmd-in-stages.d.mts +0 -1
- package/dist/functions/workspace-utils/run-cmd-in-stages.d.mts.map +1 -1
- package/dist/functions/workspace-utils/run-cmd-in-stages.mjs +2 -3
- package/dist/functions/workspace-utils/run-cmd-in-stages.mjs.map +1 -1
- package/package.json +35 -35
- package/src/cmd/assert-repo-is-clean.mts +3 -2
- package/src/cmd/check-should-run-type-checks.mts +3 -2
- package/src/cmd/format-diff-from.mts +3 -3
- package/src/cmd/format-uncommitted.mts +3 -3
- package/src/cmd/gen-index-ts.mts +5 -5
- package/src/functions/assert-ext.mts +8 -9
- package/src/functions/assert-path-exists.mts +6 -4
- package/src/functions/assert-repo-is-clean.mts +1 -1
- package/src/functions/create-result-assert.mts +1 -1
- package/src/functions/diff.test.mts +7 -7
- package/src/functions/exec-async.mts +4 -5
- package/src/functions/exec-async.test.mts +7 -4
- package/src/functions/format.mts +27 -29
- package/src/functions/gen-index.mts +4 -4
- package/src/functions/glob.mts +3 -3
- package/src/functions/workspace-utils/execute-parallel.mts +35 -38
- package/src/functions/workspace-utils/get-workspace-packages.mts +9 -8
- package/src/functions/workspace-utils/run-cmd-in-parallel.mts +2 -4
- package/src/functions/workspace-utils/run-cmd-in-stages.mts +2 -4
- package/src/functions/workspace-utils/run-cmd-in-stages.test.mts +9 -9
package/README.md
CHANGED
|
@@ -778,13 +778,13 @@ console.log(packages.map((pkg) => pkg.name));
|
|
|
778
778
|
**Return Type:**
|
|
779
779
|
|
|
780
780
|
```tsx
|
|
781
|
-
import { type JsonValue } from 'ts-type-forge';
|
|
781
|
+
import { type JsonValue, type ReadonlyRecord } from 'ts-type-forge';
|
|
782
782
|
|
|
783
783
|
type Package = Readonly<{
|
|
784
784
|
name: string;
|
|
785
785
|
path: string;
|
|
786
786
|
packageJson: JsonValue;
|
|
787
|
-
dependencies:
|
|
787
|
+
dependencies: ReadonlyRecord<string, string>;
|
|
788
788
|
}>;
|
|
789
789
|
```
|
|
790
790
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import * as cmd from 'cmd-ts';
|
|
3
|
+
import { Arr } from 'ts-data-forge';
|
|
3
4
|
import 'node:path';
|
|
4
|
-
import 'ts-data-forge';
|
|
5
5
|
import 'node:fs/promises';
|
|
6
6
|
import 'fast-glob';
|
|
7
7
|
import { assertRepoIsClean } from '../functions/assert-repo-is-clean.mjs';
|
|
@@ -14,7 +14,7 @@ import '@sindresorhus/is';
|
|
|
14
14
|
|
|
15
15
|
const cmdDef = cmd.command({
|
|
16
16
|
name: "assert-repo-is-clean-cli",
|
|
17
|
-
version: "10.1.
|
|
17
|
+
version: "10.1.8",
|
|
18
18
|
args: {
|
|
19
19
|
silent: cmd.flag({
|
|
20
20
|
long: "silent",
|
|
@@ -32,5 +32,5 @@ const cmdDef = cmd.command({
|
|
|
32
32
|
const main = async (args) => {
|
|
33
33
|
await assertRepoIsClean({ silent: args.silent });
|
|
34
34
|
};
|
|
35
|
-
await cmd.run(cmdDef, process.argv
|
|
35
|
+
await cmd.run(cmdDef, Arr.skip(process.argv, 2));
|
|
36
36
|
//# sourceMappingURL=assert-repo-is-clean.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert-repo-is-clean.mjs","sources":["../../src/cmd/assert-repo-is-clean.mts"],"sourcesContent":["#!/usr/bin/env node\n\nimport * as cmd from 'cmd-ts';\nimport { assertRepoIsClean } from '../functions/index.mjs';\n\nconst cmdDef = cmd.command({\n name: 'assert-repo-is-clean-cli',\n version: '10.1.
|
|
1
|
+
{"version":3,"file":"assert-repo-is-clean.mjs","sources":["../../src/cmd/assert-repo-is-clean.mts"],"sourcesContent":["#!/usr/bin/env node\n\nimport * as cmd from 'cmd-ts';\nimport { Arr } from 'ts-data-forge';\nimport { assertRepoIsClean } from '../functions/index.mjs';\n\nconst cmdDef = cmd.command({\n name: 'assert-repo-is-clean-cli',\n version: '10.1.8',\n args: {\n silent: cmd.flag({\n long: 'silent',\n type: cmd.optional(cmd.boolean),\n description: 'If true, suppresses output messages (default: false)',\n }),\n },\n handler: (args) => {\n main(args).catch((error: unknown) => {\n console.error('An error occurred:', error);\n\n process.exit(1);\n });\n },\n});\n\nconst main = async (args: Readonly<{ silent?: boolean }>): Promise<void> => {\n await assertRepoIsClean({ silent: args.silent });\n};\n\nawait cmd.run(cmdDef, Arr.skip(process.argv, 2));\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAMA,MAAM,MAAA,GAAS,IAAI,OAAA,CAAQ;AAAA,EACzB,IAAA,EAAM,0BAAA;AAAA,EACN,OAAA,EAAS,QAAA;AAAA,EACT,IAAA,EAAM;AAAA,IACJ,MAAA,EAAQ,IAAI,IAAA,CAAK;AAAA,MACf,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,GAAA,CAAI,QAAA,CAAS,GAAA,CAAI,OAAO,CAAA;AAAA,MAC9B,WAAA,EAAa;AAAA,KACd;AAAA,GACH;AAAA,EACA,OAAA,EAAS,CAAC,IAAA,KAAS;AACjB,IAAA,IAAA,CAAK,IAAI,CAAA,CAAE,KAAA,CAAM,CAAC,KAAA,KAAmB;AACnC,MAAA,OAAA,CAAQ,KAAA,CAAM,sBAAsB,KAAK,CAAA;AAEzC,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB,CAAC,CAAA;AAAA,EACH;AACF,CAAC,CAAA;AAED,MAAM,IAAA,GAAO,OAAO,IAAA,KAAwD;AAC1E,EAAA,MAAM,iBAAA,CAAkB,EAAE,MAAA,EAAQ,IAAA,CAAK,QAAQ,CAAA;AACjD,CAAA;AAEA,MAAM,GAAA,CAAI,IAAI,MAAA,EAAQ,GAAA,CAAI,KAAK,OAAA,CAAQ,IAAA,EAAM,CAAC,CAAC,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import * as cmd from 'cmd-ts';
|
|
3
|
+
import { Arr } from 'ts-data-forge';
|
|
3
4
|
import 'node:path';
|
|
4
|
-
import 'ts-data-forge';
|
|
5
5
|
import 'node:fs/promises';
|
|
6
6
|
import 'fast-glob';
|
|
7
7
|
import 'node:child_process';
|
|
@@ -14,7 +14,7 @@ import '@sindresorhus/is';
|
|
|
14
14
|
|
|
15
15
|
const cmdDef = cmd.command({
|
|
16
16
|
name: "check-should-run-type-checks-cli",
|
|
17
|
-
version: "10.1.
|
|
17
|
+
version: "10.1.8",
|
|
18
18
|
args: {
|
|
19
19
|
pathsIgnore: cmd.multioption({
|
|
20
20
|
long: "paths-ignore",
|
|
@@ -40,5 +40,5 @@ const main = async (args) => {
|
|
|
40
40
|
baseBranch: args.baseBranch
|
|
41
41
|
});
|
|
42
42
|
};
|
|
43
|
-
await cmd.run(cmdDef, process.argv
|
|
43
|
+
await cmd.run(cmdDef, Arr.skip(process.argv, 2));
|
|
44
44
|
//# sourceMappingURL=check-should-run-type-checks.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-should-run-type-checks.mjs","sources":["../../src/cmd/check-should-run-type-checks.mts"],"sourcesContent":["#!/usr/bin/env node\n\nimport * as cmd from 'cmd-ts';\nimport { checkShouldRunTypeChecks } from '../functions/index.mjs';\n\nconst cmdDef = cmd.command({\n name: 'check-should-run-type-checks-cli',\n version: '10.1.
|
|
1
|
+
{"version":3,"file":"check-should-run-type-checks.mjs","sources":["../../src/cmd/check-should-run-type-checks.mts"],"sourcesContent":["#!/usr/bin/env node\n\nimport * as cmd from 'cmd-ts';\nimport { Arr } from 'ts-data-forge';\nimport { checkShouldRunTypeChecks } from '../functions/index.mjs';\n\nconst cmdDef = cmd.command({\n name: 'check-should-run-type-checks-cli',\n version: '10.1.8',\n args: {\n pathsIgnore: cmd.multioption({\n long: 'paths-ignore',\n type: cmd.optional(cmd.array(cmd.string)),\n description:\n 'Patterns to ignore when checking if type checks should run. Supports exact file matches, directory prefixes (ending with \"/\"), and file extensions (starting with \"**.\")',\n }),\n baseBranch: cmd.option({\n long: 'base-branch',\n type: cmd.optional(cmd.string),\n description:\n 'Base branch to compare against for determining changed files. Defaults to \"origin/main\"',\n }),\n },\n handler: (args) => {\n main(args).catch((error: unknown) => {\n console.error('An error occurred:', error);\n\n process.exit(1);\n });\n },\n});\n\nconst main = async (\n args: Readonly<{\n pathsIgnore?: readonly string[];\n baseBranch?: string;\n }>,\n): Promise<void> => {\n await checkShouldRunTypeChecks({\n pathsIgnore: args.pathsIgnore,\n baseBranch: args.baseBranch,\n });\n};\n\nawait cmd.run(cmdDef, Arr.skip(process.argv, 2));\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAMA,MAAM,MAAA,GAAS,IAAI,OAAA,CAAQ;AAAA,EACzB,IAAA,EAAM,kCAAA;AAAA,EACN,OAAA,EAAS,QAAA;AAAA,EACT,IAAA,EAAM;AAAA,IACJ,WAAA,EAAa,IAAI,WAAA,CAAY;AAAA,MAC3B,IAAA,EAAM,cAAA;AAAA,MACN,MAAM,GAAA,CAAI,QAAA,CAAS,IAAI,KAAA,CAAM,GAAA,CAAI,MAAM,CAAC,CAAA;AAAA,MACxC,WAAA,EACE;AAAA,KACH,CAAA;AAAA,IACD,UAAA,EAAY,IAAI,MAAA,CAAO;AAAA,MACrB,IAAA,EAAM,aAAA;AAAA,MACN,IAAA,EAAM,GAAA,CAAI,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA;AAAA,MAC7B,WAAA,EACE;AAAA,KACH;AAAA,GACH;AAAA,EACA,OAAA,EAAS,CAAC,IAAA,KAAS;AACjB,IAAA,IAAA,CAAK,IAAI,CAAA,CAAE,KAAA,CAAM,CAAC,KAAA,KAAmB;AACnC,MAAA,OAAA,CAAQ,KAAA,CAAM,sBAAsB,KAAK,CAAA;AAEzC,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB,CAAC,CAAA;AAAA,EACH;AACF,CAAC,CAAA;AAED,MAAM,IAAA,GAAO,OACX,IAAA,KAIkB;AAClB,EAAA,MAAM,wBAAA,CAAyB;AAAA,IAC7B,aAAa,IAAA,CAAK,WAAA;AAAA,IAClB,YAAY,IAAA,CAAK;AAAA,GAClB,CAAA;AACH,CAAA;AAEA,MAAM,GAAA,CAAI,IAAI,MAAA,EAAQ,GAAA,CAAI,KAAK,OAAA,CAAQ,IAAA,EAAM,CAAC,CAAC,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import * as cmd from 'cmd-ts';
|
|
3
|
-
import { Result } from 'ts-data-forge';
|
|
3
|
+
import { Result, Arr } from 'ts-data-forge';
|
|
4
4
|
import 'node:path';
|
|
5
5
|
import 'node:fs/promises';
|
|
6
6
|
import 'fast-glob';
|
|
@@ -13,7 +13,7 @@ import '@sindresorhus/is';
|
|
|
13
13
|
|
|
14
14
|
const cmdDef = cmd.command({
|
|
15
15
|
name: "format-diff-from-cli",
|
|
16
|
-
version: "10.1.
|
|
16
|
+
version: "10.1.8",
|
|
17
17
|
args: {
|
|
18
18
|
base: cmd.positional({
|
|
19
19
|
type: cmd.string,
|
|
@@ -79,5 +79,5 @@ const main = async (args) => {
|
|
|
79
79
|
process.exit(1);
|
|
80
80
|
}
|
|
81
81
|
};
|
|
82
|
-
await cmd.run(cmdDef, process.argv
|
|
82
|
+
await cmd.run(cmdDef, Arr.skip(process.argv, 2));
|
|
83
83
|
//# sourceMappingURL=format-diff-from.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-diff-from.mjs","sources":["../../src/cmd/format-diff-from.mts"],"sourcesContent":["#!/usr/bin/env node\n\nimport * as cmd from 'cmd-ts';\nimport { Result } from 'ts-data-forge';\nimport { formatDiffFrom } from '../functions/index.mjs';\n\nconst cmdDef = cmd.command({\n name: 'format-diff-from-cli',\n version: '10.1.
|
|
1
|
+
{"version":3,"file":"format-diff-from.mjs","sources":["../../src/cmd/format-diff-from.mts"],"sourcesContent":["#!/usr/bin/env node\n\nimport * as cmd from 'cmd-ts';\nimport { Arr, Result } from 'ts-data-forge';\nimport { formatDiffFrom } from '../functions/index.mjs';\n\nconst cmdDef = cmd.command({\n name: 'format-diff-from-cli',\n version: '10.1.8',\n args: {\n base: cmd.positional({\n type: cmd.string,\n displayName: 'base',\n description: 'Base branch name or commit hash to compare against',\n }),\n excludeUntracked: cmd.flag({\n long: 'exclude-untracked',\n type: cmd.optional(cmd.boolean),\n description:\n 'Exclude untracked files in addition to diff files (default: false)',\n }),\n excludeModified: cmd.flag({\n long: 'exclude-modified',\n type: cmd.optional(cmd.boolean),\n description:\n 'Exclude modified files in addition to diff files (default: false)',\n }),\n excludeStaged: cmd.flag({\n long: 'exclude-staged',\n type: cmd.optional(cmd.boolean),\n description:\n 'Exclude staged files in addition to diff files (default: false)',\n }),\n ignoreUnknown: cmd.flag({\n long: 'ignore-unknown',\n type: cmd.optional(cmd.boolean),\n description: 'Ignore unknown files (default: true)',\n }),\n silent: cmd.flag({\n long: 'silent',\n type: cmd.optional(cmd.boolean),\n description: 'If true, suppresses output messages (default: false)',\n }),\n cwd: cmd.option({\n long: 'cwd',\n type: cmd.optional(cmd.string),\n description:\n 'If provided, only files within this directory are formatted. Relative paths are resolved against the current working directory (process.cwd()), not the git repository root.',\n }),\n },\n handler: (args) => {\n main({\n base: args.base,\n excludeUntracked: args.excludeUntracked ?? false,\n excludeModified: args.excludeModified ?? false,\n excludeStaged: args.excludeStaged ?? false,\n ignoreUnknown: args.ignoreUnknown ?? true,\n silent: args.silent ?? false,\n cwd: args.cwd,\n }).catch((error: unknown) => {\n console.error('An error occurred:', error);\n\n process.exit(1);\n });\n },\n});\n\nconst main = async (\n args: Readonly<{\n base: string;\n excludeUntracked: boolean;\n excludeModified: boolean;\n excludeStaged: boolean;\n ignoreUnknown: boolean;\n silent: boolean;\n cwd: string | undefined;\n }>,\n): Promise<void> => {\n const result = await formatDiffFrom(args.base, {\n includeUntracked: !args.excludeUntracked,\n includeModified: !args.excludeModified,\n includeStaged: !args.excludeStaged,\n ignoreUnknown: args.ignoreUnknown,\n silent: args.silent,\n cwd: args.cwd,\n });\n\n if (Result.isErr(result)) {\n process.exit(1);\n }\n};\n\nawait cmd.run(cmdDef, Arr.skip(process.argv, 2));\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import * as cmd from 'cmd-ts';
|
|
3
|
-
import { Result } from 'ts-data-forge';
|
|
3
|
+
import { Result, Arr } from 'ts-data-forge';
|
|
4
4
|
import 'node:path';
|
|
5
5
|
import 'node:fs/promises';
|
|
6
6
|
import 'fast-glob';
|
|
@@ -13,7 +13,7 @@ import '@sindresorhus/is';
|
|
|
13
13
|
|
|
14
14
|
const cmdDef = cmd.command({
|
|
15
15
|
name: "format-uncommitted-cli",
|
|
16
|
-
version: "10.1.
|
|
16
|
+
version: "10.1.8",
|
|
17
17
|
args: {
|
|
18
18
|
excludeUntracked: cmd.flag({
|
|
19
19
|
long: "exclude-untracked",
|
|
@@ -73,5 +73,5 @@ const main = async (args) => {
|
|
|
73
73
|
process.exit(1);
|
|
74
74
|
}
|
|
75
75
|
};
|
|
76
|
-
await cmd.run(cmdDef, process.argv
|
|
76
|
+
await cmd.run(cmdDef, Arr.skip(process.argv, 2));
|
|
77
77
|
//# sourceMappingURL=format-uncommitted.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-uncommitted.mjs","sources":["../../src/cmd/format-uncommitted.mts"],"sourcesContent":["#!/usr/bin/env node\n\nimport * as cmd from 'cmd-ts';\nimport { Result } from 'ts-data-forge';\nimport { formatUncommittedFiles } from '../functions/index.mjs';\n\nconst cmdDef = cmd.command({\n name: 'format-uncommitted-cli',\n version: '10.1.
|
|
1
|
+
{"version":3,"file":"format-uncommitted.mjs","sources":["../../src/cmd/format-uncommitted.mts"],"sourcesContent":["#!/usr/bin/env node\n\nimport * as cmd from 'cmd-ts';\nimport { Arr, Result } from 'ts-data-forge';\nimport { formatUncommittedFiles } from '../functions/index.mjs';\n\nconst cmdDef = cmd.command({\n name: 'format-uncommitted-cli',\n version: '10.1.8',\n args: {\n excludeUntracked: cmd.flag({\n long: 'exclude-untracked',\n type: cmd.optional(cmd.boolean),\n description:\n 'Exclude untracked files in addition to diff files (default: false)',\n }),\n excludeModified: cmd.flag({\n long: 'exclude-modified',\n type: cmd.optional(cmd.boolean),\n description:\n 'Exclude modified files in addition to diff files (default: false)',\n }),\n excludeStaged: cmd.flag({\n long: 'exclude-staged',\n type: cmd.optional(cmd.boolean),\n description:\n 'Exclude staged files in addition to diff files (default: false)',\n }),\n ignoreUnknown: cmd.flag({\n long: 'ignore-unknown',\n type: cmd.optional(cmd.boolean),\n description: 'Ignore unknown files (default: true)',\n }),\n silent: cmd.flag({\n long: 'silent',\n type: cmd.optional(cmd.boolean),\n description: 'If true, suppresses output messages (default: false)',\n }),\n cwd: cmd.option({\n long: 'cwd',\n type: cmd.optional(cmd.string),\n description:\n 'If provided, only files within this directory are formatted. Relative paths are resolved against the current working directory (process.cwd()), not the git repository root.',\n }),\n },\n handler: (args) => {\n main({\n excludeUntracked: args.excludeUntracked ?? false,\n excludeModified: args.excludeModified ?? false,\n excludeStaged: args.excludeStaged ?? false,\n ignoreUnknown: args.ignoreUnknown ?? true,\n silent: args.silent ?? false,\n cwd: args.cwd,\n }).catch((error: unknown) => {\n console.error('An error occurred:', error);\n\n process.exit(1);\n });\n },\n});\n\nconst main = async (\n args: Readonly<{\n excludeUntracked: boolean;\n excludeModified: boolean;\n excludeStaged: boolean;\n ignoreUnknown: boolean;\n silent: boolean;\n cwd: string | undefined;\n }>,\n): Promise<void> => {\n const result = await formatUncommittedFiles({\n untracked: !args.excludeUntracked,\n modified: !args.excludeModified,\n staged: !args.excludeStaged,\n ignoreUnknown: args.ignoreUnknown,\n silent: args.silent,\n cwd: args.cwd,\n });\n\n if (Result.isErr(result)) {\n process.exit(1);\n }\n};\n\nawait cmd.run(cmdDef, Arr.skip(process.argv, 2));\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import * as cmd from 'cmd-ts';
|
|
3
|
-
import 'ts-data-forge';
|
|
3
|
+
import { Arr } from 'ts-data-forge';
|
|
4
4
|
import 'node:path';
|
|
5
5
|
import 'node:fs/promises';
|
|
6
6
|
import 'fast-glob';
|
|
@@ -24,7 +24,7 @@ const nonEmptyArray = (t, commandName) => cmd.extendType(
|
|
|
24
24
|
cmd.array(t),
|
|
25
25
|
{
|
|
26
26
|
from: (arr) => {
|
|
27
|
-
if (arr
|
|
27
|
+
if (Arr.isEmpty(arr)) {
|
|
28
28
|
throw new Error(
|
|
29
29
|
`No value provided for --${commandName}. At least one value is required.`
|
|
30
30
|
);
|
|
@@ -35,7 +35,7 @@ const nonEmptyArray = (t, commandName) => cmd.extendType(
|
|
|
35
35
|
);
|
|
36
36
|
const cmdDef = cmd.command({
|
|
37
37
|
name: "gen-index-ts-cli",
|
|
38
|
-
version: "10.1.
|
|
38
|
+
version: "10.1.8",
|
|
39
39
|
args: {
|
|
40
40
|
// required args
|
|
41
41
|
targetDirectory: cmd.positional({
|
|
@@ -120,5 +120,5 @@ const main = async ({
|
|
|
120
120
|
minDepth
|
|
121
121
|
});
|
|
122
122
|
};
|
|
123
|
-
await cmd.run(cmdDef, process.argv
|
|
123
|
+
await cmd.run(cmdDef, Arr.skip(process.argv, 2));
|
|
124
124
|
//# sourceMappingURL=gen-index-ts.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gen-index-ts.mjs","sources":["../../src/cmd/gen-index-ts.mts"],"sourcesContent":["#!/usr/bin/env node\n\n/* transformer-ignore convert-to-readonly */\n\nimport * as cmd from 'cmd-ts';\n// eslint-disable-next-line import-x/no-internal-modules\nimport { type InputOf, type OutputOf } from 'cmd-ts/dist/esm/from.js';\nimport {
|
|
1
|
+
{"version":3,"file":"gen-index-ts.mjs","sources":["../../src/cmd/gen-index-ts.mts"],"sourcesContent":["#!/usr/bin/env node\n\n/* transformer-ignore convert-to-readonly */\n\nimport * as cmd from 'cmd-ts';\nimport { Arr, expectType } from 'ts-data-forge';\n// eslint-disable-next-line import-x/no-internal-modules, import-x/extensions\nimport { type InputOf, type OutputOf } from 'cmd-ts/dist/esm/from.js';\nimport { type NonEmptyArray } from 'ts-type-forge';\nimport { genIndex } from '../functions/index.mjs';\n\ntype Ext = `.${string}`;\n\nconst extensionType = cmd.extendType(cmd.string, {\n from: (s) => {\n if (!s.startsWith('.')) {\n throw new Error(`ext should start with '.'`);\n }\n\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n return Promise.resolve(s as Ext);\n },\n});\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst nonEmptyArray = <T extends cmd.Type<any, any>>(\n t: T,\n commandName: string,\n): cmd.Type<readonly InputOf<T>[], NonEmptyArray<OutputOf<T>>> =>\n cmd.extendType(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n cmd.array(t) as cmd.Type<readonly InputOf<T>[], OutputOf<T>[]>,\n {\n from: (arr) => {\n if (Arr.isEmpty(arr)) {\n throw new Error(\n `No value provided for --${commandName}. At least one value is required.`,\n );\n }\n\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n return Promise.resolve(arr as unknown as NonEmptyArray<OutputOf<T>>);\n },\n },\n );\n\nconst cmdDef = cmd.command({\n name: 'gen-index-ts-cli',\n version: '10.1.8',\n args: {\n // required args\n targetDirectory: cmd.positional({\n type: cmd.string,\n displayName: 'target-directory',\n description:\n 'Directory where the index file will be generated (Comma-separated list can be used)',\n }),\n\n targetExtensions: cmd.multioption({\n long: 'target-ext',\n type: nonEmptyArray(extensionType, 'target-ext'),\n description: 'File extensions to include in the index file',\n }),\n indexFileExtension: cmd.option({\n long: 'index-ext',\n type: extensionType,\n description: 'Extension of the index file to be generated',\n }),\n exportStatementExtension: cmd.option({\n long: 'export-ext',\n type: cmd.union([\n extensionType,\n cmd.extendType(cmd.string, {\n from: (s) => {\n if (s !== 'none') {\n throw new Error(\n `export-ext should be 'none' or a valid extension`,\n );\n }\n\n return Promise.resolve('none' as const);\n },\n }),\n ]),\n description: 'Extension of the export statements in the index file',\n }),\n\n // optional args\n exclude: cmd.multioption({\n long: 'exclude',\n type: cmd.optional(cmd.array(cmd.string)),\n description:\n 'Glob patterns of files to exclude from the index file (e.g., \"*.d.mts\", \"*.test.mts\")',\n }),\n formatCommand: cmd.option({\n long: 'fmt',\n type: cmd.optional(cmd.string),\n description:\n 'Command to format after generating the index file (e.g., \"npm run fmt\")',\n }),\n silent: cmd.flag({\n long: 'silent',\n type: cmd.optional(cmd.boolean),\n description: 'If true, suppresses output messages (default: false)',\n }),\n minDepth: cmd.option({\n long: 'min-depth',\n type: cmd.optional(cmd.number),\n description: 'Minimum depth to start generating index files (default: 0)',\n }),\n },\n handler: (args) => {\n expectType<typeof args.targetDirectory, string>('=');\n\n expectType<typeof args.targetExtensions, NonEmptyArray<Ext>>('=');\n\n expectType<typeof args.exportStatementExtension, Ext | 'none'>('=');\n\n expectType<typeof args.indexFileExtension, Ext>('=');\n\n expectType<typeof args.exclude, string[] | undefined>('=');\n\n expectType<typeof args.formatCommand, string | undefined>('=');\n\n expectType<typeof args.silent, boolean | undefined>('=');\n\n expectType<typeof args.minDepth, number | undefined>('=');\n\n main(args).catch((error: unknown) => {\n console.error('An error occurred:', error);\n\n process.exit(1);\n });\n },\n});\n\nconst main = async ({\n targetDirectory,\n targetExtensions,\n exportStatementExtension,\n indexFileExtension,\n exclude,\n formatCommand,\n silent,\n minDepth,\n}: Readonly<{\n targetDirectory: string;\n targetExtensions: readonly Ext[];\n exportStatementExtension: Ext | 'none';\n indexFileExtension: Ext;\n exclude?: readonly string[] | undefined;\n formatCommand?: string | undefined;\n silent?: boolean | undefined;\n minDepth?: number | undefined;\n}>): Promise<void> => {\n await genIndex({\n targetDirectory: targetDirectory.includes(',')\n ? targetDirectory.split(',').map((dir) => dir.trim())\n : targetDirectory,\n exportStatementExtension,\n targetExtensions,\n exclude,\n indexFileExtension,\n formatCommand,\n silent,\n minDepth,\n });\n};\n\nawait cmd.run(cmdDef, Arr.skip(process.argv, 2));\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as path from 'node:path';
|
|
2
|
-
import { isString,
|
|
2
|
+
import { isString, Arr, Result } from 'ts-data-forge';
|
|
3
3
|
import { assertPathExists } from './assert-path-exists.mjs';
|
|
4
4
|
import { createResultAssert } from './create-result-assert.mjs';
|
|
5
5
|
import { glob } from './glob.mjs';
|
|
@@ -20,7 +20,7 @@ const checkExt = async (config) => {
|
|
|
20
20
|
})
|
|
21
21
|
);
|
|
22
22
|
const allIncorrectFiles = results.flat();
|
|
23
|
-
if (allIncorrectFiles
|
|
23
|
+
if (Arr.isEmpty(allIncorrectFiles)) {
|
|
24
24
|
return Result.ok(void 0);
|
|
25
25
|
}
|
|
26
26
|
const message = [
|
|
@@ -37,10 +37,10 @@ const checkExt = async (config) => {
|
|
|
37
37
|
const assertExt = createResultAssert({
|
|
38
38
|
run: checkExt,
|
|
39
39
|
onError: (error) => {
|
|
40
|
-
console.
|
|
40
|
+
console.info(error.message);
|
|
41
41
|
},
|
|
42
42
|
onSuccess: () => {
|
|
43
|
-
console.
|
|
43
|
+
console.info("\u2713 All files have correct extensions");
|
|
44
44
|
}
|
|
45
45
|
});
|
|
46
46
|
const getFilesWithIncorrectExtension = async (dir, expectedExtensions, ignorePatterns) => {
|
|
@@ -60,7 +60,7 @@ const getFilesWithIncorrectExtension = async (dir, expectedExtensions, ignorePat
|
|
|
60
60
|
}
|
|
61
61
|
const files = filesResult.value;
|
|
62
62
|
return files.filter(
|
|
63
|
-
(file) =>
|
|
63
|
+
(file) => expectedExtensions.every((ext) => !file.endsWith(ext))
|
|
64
64
|
);
|
|
65
65
|
};
|
|
66
66
|
const describeExpectedExtensions = (config) => {
|
|
@@ -76,7 +76,7 @@ const describeExpectedExtensions = (config) => {
|
|
|
76
76
|
({ extKey }) => extKey
|
|
77
77
|
);
|
|
78
78
|
const messageParts = Array.from(extensionGroups.entries(), ([ext, dirs]) => {
|
|
79
|
-
const dirList =
|
|
79
|
+
const dirList = Arr.isFixedLengthArray(1, dirs) ? dirs[0].relativePath : dirs.map((d) => d.relativePath).join(", ");
|
|
80
80
|
return `${dirList} should have ${ext} extension`;
|
|
81
81
|
});
|
|
82
82
|
return `All files in ${messageParts.join(" and ")}.`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert-ext.mjs","sources":["../../src/functions/assert-ext.mts"],"sourcesContent":["import * as path from 'node:path';\nimport { Arr, type IMap, isString, Result } from 'ts-data-forge';\nimport { type DeepReadonly } from 'ts-type-forge';\nimport { assertPathExists } from './assert-path-exists.mjs';\nimport { createResultAssert } from './create-result-assert.mjs';\nimport { glob } from './glob.mjs';\n\n/** Configuration for directory extension checking. */\nexport type CheckExtConfig = DeepReadonly<{\n /** Array of directory paths and their expected extensions */\n directories: {\n /** Directory path to check */\n path: string;\n\n /**\n * Expected file extension(s) (including the dot). Can be a single extension\n * or an array of valid extensions\n */\n extension: `.${string}` | `.${string}`[];\n\n /**\n * Optional glob patterns to ignore (defaults to ['tsconfig.json'])\n */\n ignorePatterns?: string[];\n }[];\n}>;\n\nexport type CheckExtError = Readonly<{\n message: string;\n files: readonly string[];\n}>;\n\n/**\n * Validates that all files in specified directories have the correct\n * extensions.\n *\n * @param config - Configuration specifying directories and expected extensions.\n * @returns Result.ok when all files pass, otherwise Result.err with details.\n */\nexport const checkExt = async (\n config: CheckExtConfig,\n): Promise<Result<undefined, CheckExtError>> => {\n // Check all directories in parallel\n const results = await Promise.all(\n config.directories.map(async ({ path: dir, extension, ignorePatterns }) => {\n try {\n return await getFilesWithIncorrectExtension(\n dir,\n isString(extension) ? [extension] : extension,\n ignorePatterns,\n );\n } catch (error) {\n console.error(`Failed to check directory ${dir}: ${String(error)}`);\n\n return [];\n }\n }),\n );\n\n // Collect all incorrect files\n const allIncorrectFiles: readonly string[] = results.flat();\n\n if (allIncorrectFiles
|
|
1
|
+
{"version":3,"file":"assert-ext.mjs","sources":["../../src/functions/assert-ext.mts"],"sourcesContent":["import * as path from 'node:path';\nimport { Arr, type IMap, isString, Result } from 'ts-data-forge';\nimport { type DeepReadonly } from 'ts-type-forge';\nimport { assertPathExists } from './assert-path-exists.mjs';\nimport { createResultAssert } from './create-result-assert.mjs';\nimport { glob } from './glob.mjs';\n\n/** Configuration for directory extension checking. */\nexport type CheckExtConfig = DeepReadonly<{\n /** Array of directory paths and their expected extensions */\n directories: {\n /** Directory path to check */\n path: string;\n\n /**\n * Expected file extension(s) (including the dot). Can be a single extension\n * or an array of valid extensions\n */\n extension: `.${string}` | `.${string}`[];\n\n /**\n * Optional glob patterns to ignore (defaults to ['tsconfig.json'])\n */\n ignorePatterns?: string[];\n }[];\n}>;\n\nexport type CheckExtError = Readonly<{\n message: string;\n files: readonly string[];\n}>;\n\n/**\n * Validates that all files in specified directories have the correct\n * extensions.\n *\n * @param config - Configuration specifying directories and expected extensions.\n * @returns Result.ok when all files pass, otherwise Result.err with details.\n */\nexport const checkExt = async (\n config: CheckExtConfig,\n): Promise<Result<undefined, CheckExtError>> => {\n // Check all directories in parallel\n const results = await Promise.all(\n config.directories.map(async ({ path: dir, extension, ignorePatterns }) => {\n try {\n return await getFilesWithIncorrectExtension(\n dir,\n isString(extension) ? [extension] : extension,\n ignorePatterns,\n );\n } catch (error) {\n console.error(`Failed to check directory ${dir}: ${String(error)}`);\n\n return [];\n }\n }),\n );\n\n // Collect all incorrect files\n const allIncorrectFiles: readonly string[] = results.flat();\n\n if (Arr.isEmpty(allIncorrectFiles)) {\n return Result.ok(undefined);\n }\n\n const message = [\n 'Files with incorrect extensions found:',\n ...allIncorrectFiles.map((file) => ` - ${file}`),\n '',\n describeExpectedExtensions(config),\n ].join('\\n');\n\n return Result.err({\n message,\n files: allIncorrectFiles,\n });\n};\n\n/**\n * Validates that all files in specified directories have the correct\n * extensions. Exits with code 1 if any files have incorrect extensions.\n *\n * @param config - Configuration specifying directories and expected extensions.\n */\nexport const assertExt = createResultAssert<\n CheckExtConfig,\n undefined,\n CheckExtError\n>({\n run: checkExt,\n onError: (error) => {\n console.info(error.message);\n },\n onSuccess: () => {\n console.info('✓ All files have correct extensions');\n },\n});\n\n/**\n * Checks if all files in a directory have the expected extension.\n *\n * @param dir - The directory to check.\n * @param expectedExtensions - The expected file extensions.\n * @param ignorePatterns - Optional glob patterns to ignore.\n * @returns Array of files with incorrect extensions.\n */\nconst getFilesWithIncorrectExtension = async (\n dir: string,\n expectedExtensions: readonly string[],\n ignorePatterns?: readonly string[],\n): Promise<readonly string[]> => {\n await assertPathExists(dir, 'Directory');\n\n const defaultIgnorePatterns = ['tsconfig.json'] as const;\n\n const finalIgnorePatterns = ignorePatterns ?? defaultIgnorePatterns;\n\n // Convert relative patterns to absolute paths for the glob ignore option\n const absoluteIgnorePatterns = finalIgnorePatterns.map((pattern) =>\n path.isAbsolute(pattern) ? pattern : `${dir}/${pattern}`,\n );\n\n const filesResult = await glob(`${dir}/**/*`, {\n ignore: absoluteIgnorePatterns,\n });\n\n if (Result.isErr(filesResult)) {\n throw new Error(\n `Failed to glob files in ${dir}: ${String(filesResult.value)}`,\n );\n }\n\n const files = filesResult.value;\n\n return files.filter((file) =>\n expectedExtensions.every((ext) => !file.endsWith(ext)),\n );\n};\n\nconst describeExpectedExtensions = (config: CheckExtConfig): string => {\n // Group directories by extension for a cleaner message\n const extensionGroups: IMap<\n string,\n readonly Readonly<{\n relativePath: string;\n extKey: string;\n }>[]\n > = Arr.groupBy(\n config.directories.map(({ path: dirPath, extension }) => {\n const relativePath = path.relative(process.cwd(), dirPath);\n\n const extKey = isString(extension) ? extension : extension.join(' or ');\n\n return {\n relativePath,\n extKey,\n };\n }),\n ({ extKey }) => extKey,\n );\n\n // Generate message parts for each extension\n const messageParts = Array.from(extensionGroups.entries(), ([ext, dirs]) => {\n const dirList = Arr.isFixedLengthArray(1, dirs)\n ? dirs[0].relativePath\n : dirs.map((d) => d.relativePath).join(', ');\n\n return `${dirList} should have ${ext} extension`;\n });\n\n return `All files in ${messageParts.join(' and ')}.`;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert-path-exists.d.mts","sourceRoot":"","sources":["../../src/functions/assert-path-exists.mts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,UAAU,aAAoB,MAAM,KAAG,OAAO,CAAC,OAAO,CAQlE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,aACjB,MAAM,2BAEf,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"assert-path-exists.d.mts","sourceRoot":"","sources":["../../src/functions/assert-path-exists.mts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,UAAU,aAAoB,MAAM,KAAG,OAAO,CAAC,OAAO,CAQlE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,aACjB,MAAM,2BAEf,OAAO,CAAC,IAAI,CAQd,CAAC"}
|
|
@@ -9,10 +9,11 @@ const pathExists = async (filePath) => {
|
|
|
9
9
|
}
|
|
10
10
|
};
|
|
11
11
|
const assertPathExists = async (filePath, description = "Path") => {
|
|
12
|
-
if (
|
|
13
|
-
|
|
14
|
-
process.exit(1);
|
|
12
|
+
if (await pathExists(filePath)) {
|
|
13
|
+
return;
|
|
15
14
|
}
|
|
15
|
+
console.info(`${description} does not exist: ${filePath}`);
|
|
16
|
+
process.exit(1);
|
|
16
17
|
};
|
|
17
18
|
|
|
18
19
|
export { assertPathExists, pathExists };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert-path-exists.mjs","sources":["../../src/functions/assert-path-exists.mts"],"sourcesContent":["import * as fs from 'node:fs/promises';\n\n/**\n * Checks if a file or directory exists.\n *\n * @param filePath - The path to check.\n * @returns True if the path exists.\n */\nexport const pathExists = async (filePath: string): Promise<boolean> => {\n try {\n await fs.access(filePath);\n\n return true;\n } catch {\n return false;\n }\n};\n\n/**\n * Validates that a path exists and exits with code 1 if it doesn't.\n *\n * @param filePath - The path to validate.\n * @param description - Description for error message (defaults to 'Path').\n */\nexport const assertPathExists = async (\n filePath: string,\n description = 'Path',\n): Promise<void> => {\n if (
|
|
1
|
+
{"version":3,"file":"assert-path-exists.mjs","sources":["../../src/functions/assert-path-exists.mts"],"sourcesContent":["import * as fs from 'node:fs/promises';\n\n/**\n * Checks if a file or directory exists.\n *\n * @param filePath - The path to check.\n * @returns True if the path exists.\n */\nexport const pathExists = async (filePath: string): Promise<boolean> => {\n try {\n await fs.access(filePath);\n\n return true;\n } catch {\n return false;\n }\n};\n\n/**\n * Validates that a path exists and exits with code 1 if it doesn't.\n *\n * @param filePath - The path to validate.\n * @param description - Description for error message (defaults to 'Path').\n */\nexport const assertPathExists = async (\n filePath: string,\n description = 'Path',\n): Promise<void> => {\n if (await pathExists(filePath)) {\n return;\n }\n\n console.info(`${description} does not exist: ${filePath}`);\n\n process.exit(1);\n};\n"],"names":[],"mappings":";;AAQO,MAAM,UAAA,GAAa,OAAO,QAAA,KAAuC;AACtE,EAAA,IAAI;AACF,IAAA,MAAM,EAAA,CAAG,OAAO,QAAQ,CAAA;AAExB,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAQO,MAAM,gBAAA,GAAmB,OAC9B,QAAA,EACA,WAAA,GAAc,MAAA,KACI;AAClB,EAAA,IAAI,MAAM,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC9B,IAAA;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,EAAG,WAAW,CAAA,iBAAA,EAAoB,QAAQ,CAAA,CAAE,CAAA;AAEzD,EAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAChB;;;;"}
|
|
@@ -11,7 +11,7 @@ const repoIsDirty = async (options) => {
|
|
|
11
11
|
const assertRepoIsClean = async (options) => {
|
|
12
12
|
const silent = options?.silent ?? false;
|
|
13
13
|
const conditionalEcho = silent ? () => {
|
|
14
|
-
} : console.
|
|
14
|
+
} : console.info;
|
|
15
15
|
const gitStatusResult = await getGitStatus({ silent });
|
|
16
16
|
if (Result.isErr(gitStatusResult)) {
|
|
17
17
|
conditionalEcho(gitStatusResult.value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert-repo-is-clean.mjs","sources":["../../src/functions/assert-repo-is-clean.mts"],"sourcesContent":["import { Result } from 'ts-data-forge';\nimport { $ } from './exec-async.mjs';\n\n/**\n * Checks if the repository has uncommitted changes.\n *\n * @returns True if the repo is dirty, false otherwise.\n * @throws Error if git command fails.\n */\nexport const repoIsDirty = async (\n options?: Readonly<{ silent?: boolean }>,\n): Promise<boolean> => {\n const status = await getGitStatus({ silent: options?.silent ?? false });\n\n if (Result.isErr(status)) {\n throw new Error(`Failed to get git status: ${status.value}`);\n }\n\n return status.value.isDirty;\n};\n\n/**\n * Checks if the repository is clean and exits with code 1 if it is dirty. Shows\n * git status and diff output before exiting.\n */\nexport const assertRepoIsClean = async (\n options?: Readonly<{ silent?: boolean }>,\n): Promise<void> => {\n const silent = options?.silent ?? false;\n\n const conditionalEcho = silent ? () => {} : console.
|
|
1
|
+
{"version":3,"file":"assert-repo-is-clean.mjs","sources":["../../src/functions/assert-repo-is-clean.mts"],"sourcesContent":["import { Result } from 'ts-data-forge';\nimport { $ } from './exec-async.mjs';\n\n/**\n * Checks if the repository has uncommitted changes.\n *\n * @returns True if the repo is dirty, false otherwise.\n * @throws Error if git command fails.\n */\nexport const repoIsDirty = async (\n options?: Readonly<{ silent?: boolean }>,\n): Promise<boolean> => {\n const status = await getGitStatus({ silent: options?.silent ?? false });\n\n if (Result.isErr(status)) {\n throw new Error(`Failed to get git status: ${status.value}`);\n }\n\n return status.value.isDirty;\n};\n\n/**\n * Checks if the repository is clean and exits with code 1 if it is dirty. Shows\n * git status and diff output before exiting.\n */\nexport const assertRepoIsClean = async (\n options?: Readonly<{ silent?: boolean }>,\n): Promise<void> => {\n const silent = options?.silent ?? false;\n\n const conditionalEcho = silent ? () => {} : console.info;\n\n const gitStatusResult = await getGitStatus({ silent });\n\n if (Result.isErr(gitStatusResult)) {\n conditionalEcho(gitStatusResult.value);\n\n return;\n }\n\n const gitStatus = gitStatusResult.value;\n\n if (!gitStatus.isDirty) {\n conditionalEcho('Repo is clean\\n');\n\n return;\n }\n\n conditionalEcho('Repo is dirty\\n');\n\n conditionalEcho('Changed files:\\n');\n\n conditionalEcho(gitStatus.stdout);\n\n // Show files not tracked by git and unstaged changes\n const addResult = await $('git add -N .', { silent });\n\n if (Result.isErr(addResult)) {\n conditionalEcho('Warning: Failed to add untracked files for diff\\n');\n }\n\n const diffResult = await $('git diff', { silent });\n\n if (Result.isErr(diffResult)) {\n conditionalEcho('Warning: Failed to show diff\\n');\n }\n\n process.exit(1);\n};\n\n/**\n * Gets the git status of the repository.\n *\n * @returns An object containing status information.\n */\nconst getGitStatus = async (\n options?: Readonly<{ silent?: boolean }>,\n): Promise<\n Result<\n Readonly<{\n isDirty: boolean;\n stdout: string;\n }>,\n string\n >\n> => {\n const res = await $('git status --porcelain', {\n silent: options?.silent ?? false,\n });\n\n if (Result.isErr(res)) {\n return Result.err(`Failed to get git status: ${res.value.message}`);\n }\n\n const { stdout } = res.value;\n\n return Result.ok({\n isDirty: stdout.trim() !== '',\n stdout,\n });\n};\n"],"names":[],"mappings":";;;AASO,MAAM,WAAA,GAAc,OACzB,OAAA,KACqB;AACrB,EAAA,MAAM,MAAA,GAAS,MAAM,YAAA,CAAa,EAAE,QAAQ,OAAA,EAAS,MAAA,IAAU,OAAO,CAAA;AAEtE,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,EAAG;AACxB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,MAAA,CAAO,KAAK,CAAA,CAAE,CAAA;AAAA,EAC7D;AAEA,EAAA,OAAO,OAAO,KAAA,CAAM,OAAA;AACtB;AAMO,MAAM,iBAAA,GAAoB,OAC/B,OAAA,KACkB;AAClB,EAAA,MAAM,MAAA,GAAS,SAAS,MAAA,IAAU,KAAA;AAElC,EAAA,MAAM,eAAA,GAAkB,SAAS,MAAM;AAAA,EAAC,IAAI,OAAA,CAAQ,IAAA;AAEpD,EAAA,MAAM,eAAA,GAAkB,MAAM,YAAA,CAAa,EAAE,QAAQ,CAAA;AAErD,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,eAAe,CAAA,EAAG;AACjC,IAAA,eAAA,CAAgB,gBAAgB,KAAK,CAAA;AAErC,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,YAAY,eAAA,CAAgB,KAAA;AAElC,EAAA,IAAI,CAAC,UAAU,OAAA,EAAS;AACtB,IAAA,eAAA,CAAgB,iBAAiB,CAAA;AAEjC,IAAA;AAAA,EACF;AAEA,EAAA,eAAA,CAAgB,iBAAiB,CAAA;AAEjC,EAAA,eAAA,CAAgB,kBAAkB,CAAA;AAElC,EAAA,eAAA,CAAgB,UAAU,MAAM,CAAA;AAGhC,EAAA,MAAM,YAAY,MAAM,CAAA,CAAE,cAAA,EAAgB,EAAE,QAAQ,CAAA;AAEpD,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,SAAS,CAAA,EAAG;AAC3B,IAAA,eAAA,CAAgB,mDAAmD,CAAA;AAAA,EACrE;AAEA,EAAA,MAAM,aAAa,MAAM,CAAA,CAAE,UAAA,EAAY,EAAE,QAAQ,CAAA;AAEjD,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,UAAU,CAAA,EAAG;AAC5B,IAAA,eAAA,CAAgB,gCAAgC,CAAA;AAAA,EAClD;AAEA,EAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAChB;AAOA,MAAM,YAAA,GAAe,OACnB,OAAA,KASG;AACH,EAAA,MAAM,GAAA,GAAM,MAAM,CAAA,CAAE,wBAAA,EAA0B;AAAA,IAC5C,MAAA,EAAQ,SAAS,MAAA,IAAU;AAAA,GAC5B,CAAA;AAED,EAAA,IAAI,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,EAAG;AACrB,IAAA,OAAO,OAAO,GAAA,CAAI,CAAA,0BAAA,EAA6B,GAAA,CAAI,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,EACpE;AAEA,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,GAAA,CAAI,KAAA;AAEvB,EAAA,OAAO,OAAO,EAAA,CAAG;AAAA,IACf,OAAA,EAAS,MAAA,CAAO,IAAA,EAAK,KAAM,EAAA;AAAA,IAC3B;AAAA,GACD,CAAA;AACH,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-result-assert.mjs","sources":["../../src/functions/create-result-assert.mts"],"sourcesContent":["import { hasKey, isRecord, isString, Result } from 'ts-data-forge';\n\ntype ResultProducer<TConfig, TOk, TErr> = (\n config: TConfig,\n) => Promise<Result<TOk, TErr>>;\n\nexport type CreateResultAssertOptions<Config, Ok, Err> = Readonly<{\n run: ResultProducer<Config, Ok, Err>;\n onSuccess?: (value: Ok, config: Config) => void | Promise<void>;\n onError?: (error: Err, config: Config) => void | Promise<void>;\n exitCode?: number;\n}>;\n\n/**\n * Converts a function that returns a Result into an assert-style variant that\n * exits the process when the Result is Err. This is useful for building CLI\n * commands that should stop execution on failure but remain composable when a\n * Result is preferred.\n */\nexport const createResultAssert = <Config, Ok, Err>({\n run,\n onSuccess,\n onError,\n exitCode = 1,\n}: CreateResultAssertOptions<Config, Ok, Err>): ((\n config: Config,\n) => Promise<Ok>) => {\n const defaultOnError = (error: Err): void => {\n if (\n isRecord(error) &&\n hasKey(error, 'message') &&\n isString(error.message)\n ) {\n console.
|
|
1
|
+
{"version":3,"file":"create-result-assert.mjs","sources":["../../src/functions/create-result-assert.mts"],"sourcesContent":["import { hasKey, isRecord, isString, Result } from 'ts-data-forge';\n\ntype ResultProducer<TConfig, TOk, TErr> = (\n config: TConfig,\n) => Promise<Result<TOk, TErr>>;\n\nexport type CreateResultAssertOptions<Config, Ok, Err> = Readonly<{\n run: ResultProducer<Config, Ok, Err>;\n onSuccess?: (value: Ok, config: Config) => void | Promise<void>;\n onError?: (error: Err, config: Config) => void | Promise<void>;\n exitCode?: number;\n}>;\n\n/**\n * Converts a function that returns a Result into an assert-style variant that\n * exits the process when the Result is Err. This is useful for building CLI\n * commands that should stop execution on failure but remain composable when a\n * Result is preferred.\n */\nexport const createResultAssert = <Config, Ok, Err>({\n run,\n onSuccess,\n onError,\n exitCode = 1,\n}: CreateResultAssertOptions<Config, Ok, Err>): ((\n config: Config,\n) => Promise<Ok>) => {\n const defaultOnError = (error: Err): void => {\n if (\n isRecord(error) &&\n hasKey(error, 'message') &&\n isString(error.message)\n ) {\n console.info(error.message);\n } else {\n console.error(error);\n }\n };\n\n return async (config: Config): Promise<Ok> => {\n const result = await run(config);\n\n if (Result.isErr(result)) {\n if (onError !== undefined) {\n await onError(result.value, config);\n } else {\n defaultOnError(result.value);\n }\n\n process.exit(exitCode);\n }\n\n if (onSuccess !== undefined) {\n await onSuccess(result.value, config);\n }\n\n return result.value;\n };\n};\n"],"names":[],"mappings":";;AAmBO,MAAM,qBAAqB,CAAkB;AAAA,EAClD,GAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAEqB;AACnB,EAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAqB;AAC3C,IAAA,IACE,QAAA,CAAS,KAAK,CAAA,IACd,MAAA,CAAO,KAAA,EAAO,SAAS,CAAA,IACvB,QAAA,CAAS,KAAA,CAAM,OAAO,CAAA,EACtB;AACA,MAAA,OAAA,CAAQ,IAAA,CAAK,MAAM,OAAO,CAAA;AAAA,IAC5B,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,IACrB;AAAA,EACF,CAAA;AAEA,EAAA,OAAO,OAAO,MAAA,KAAgC;AAC5C,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAAI,MAAM,CAAA;AAE/B,IAAA,IAAI,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,EAAG;AACxB,MAAA,IAAI,YAAY,MAAA,EAAW;AACzB,QAAA,MAAM,OAAA,CAAQ,MAAA,CAAO,KAAA,EAAO,MAAM,CAAA;AAAA,MACpC,CAAA,MAAO;AACL,QAAA,cAAA,CAAe,OAAO,KAAK,CAAA;AAAA,MAC7B;AAEA,MAAA,OAAA,CAAQ,KAAK,QAAQ,CAAA;AAAA,IACvB;AAEA,IAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,MAAA,MAAM,SAAA,CAAU,MAAA,CAAO,KAAA,EAAO,MAAM,CAAA;AAAA,IACtC;AAEA,IAAA,OAAO,MAAA,CAAO,KAAA;AAAA,EAChB,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-async.d.mts","sourceRoot":"","sources":["../../src/functions/exec-async.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,KAAK,iBAAiB,GAAG,QAAQ,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC,CAAC;AAEH,KAAK,6BAA6B,GAChC,YAAY,CAAC,6BAA6B,GAAG,iBAAiB,CAAC;AAEjE,KAAK,6BAA6B,GAChC,YAAY,CAAC,6BAA6B,GAAG,iBAAiB,CAAC;AAKjE,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,GAAG,iBAAiB,CAAC;AAEvE,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CACxD,QAAQ,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,EAClC,YAAY,CAAC,aAAa,CAC3B,CAAC;AAEF;;;;;;GAMG;AAEH,wBAAgB,CAAC,CACf,OAAO,EAAE,MAAM,EAEf,OAAO,CAAC,EAAE,6BAA6B,GACtC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/B,wBAAgB,CAAC,CACf,OAAO,EAAE,MAAM,EAEf,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/B,wBAAgB,CAAC,CACf,QAAQ,
|
|
1
|
+
{"version":3,"file":"exec-async.d.mts","sourceRoot":"","sources":["../../src/functions/exec-async.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,KAAK,iBAAiB,GAAG,QAAQ,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC,CAAC;AAEH,KAAK,6BAA6B,GAChC,YAAY,CAAC,6BAA6B,GAAG,iBAAiB,CAAC;AAEjE,KAAK,6BAA6B,GAChC,YAAY,CAAC,6BAA6B,GAAG,iBAAiB,CAAC;AAKjE,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,GAAG,iBAAiB,CAAC;AAEvE,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CACxD,QAAQ,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,EAClC,YAAY,CAAC,aAAa,CAC3B,CAAC;AAEF;;;;;;GAMG;AAEH,wBAAgB,CAAC,CACf,OAAO,EAAE,MAAM,EAEf,OAAO,CAAC,EAAE,6BAA6B,GACtC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/B,wBAAgB,CAAC,CACf,OAAO,EAAE,MAAM,EAEf,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/B,wBAAgB,CAAC,CACf,QAAQ,SACN,6BAA6B,GAAG,6BAA6B,GAAG,SAAS,GACzE,SAAS,EAEX,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,QAAQ,GACjB,OAAO,CACR,UAAU,CAAC,QAAQ,SAAS,6BAA6B,GAAG,MAAM,GAAG,MAAM,CAAC,CAC7E,CAAC"}
|
|
@@ -5,13 +5,13 @@ function $(command, options) {
|
|
|
5
5
|
const { silent = false, ...restOptions } = options ?? {};
|
|
6
6
|
const normalizedOptions = restOptions;
|
|
7
7
|
if (!silent) {
|
|
8
|
-
console.
|
|
8
|
+
console.info(`$ ${command}`);
|
|
9
9
|
}
|
|
10
10
|
return new Promise((resolve) => {
|
|
11
11
|
const handleResult = (error, stdout, stderr) => {
|
|
12
12
|
if (!silent) {
|
|
13
13
|
if (!isEmpty(stdout)) {
|
|
14
|
-
console.
|
|
14
|
+
console.info(stdout);
|
|
15
15
|
}
|
|
16
16
|
if (!isEmpty(stderr)) {
|
|
17
17
|
console.error(stderr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-async.mjs","sources":["../../src/functions/exec-async.mts"],"sourcesContent":["import * as childProcess from 'node:child_process';\nimport { Result } from 'ts-data-forge';\n\ntype ExecOptionsCustom = Readonly<{\n silent?: boolean;\n}>;\n\ntype ExecOptionsWithStringEncoding =\n childProcess.ExecOptionsWithStringEncoding & ExecOptionsCustom;\n\ntype ExecOptionsWithBufferEncoding =\n childProcess.ExecOptionsWithBufferEncoding & ExecOptionsCustom;\n\ntype NormalizedExecOptions = childProcess.ExecOptions &\n Readonly<{ encoding?: BufferEncoding | 'buffer' | null }>;\n\nexport type ExecOptions = childProcess.ExecOptions & ExecOptionsCustom;\n\nexport type ExecResult<T extends string | Buffer> = Result<\n Readonly<{ stdout: T; stderr: T }>,\n childProcess.ExecException\n>;\n\n/**\n * Executes a shell command asynchronously.\n *\n * @param command - The command to execute.\n * @param options - Optional configuration for command execution.\n * @returns A promise that resolves with the command result.\n */\n\nexport function $(\n command: string,\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n options?: ExecOptionsWithStringEncoding,\n): Promise<ExecResult<string>>;\n\nexport function $(\n command: string,\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n options: ExecOptionsWithBufferEncoding,\n): Promise<ExecResult<Buffer>>;\n\nexport function $<\n TOptions extends\n
|
|
1
|
+
{"version":3,"file":"exec-async.mjs","sources":["../../src/functions/exec-async.mts"],"sourcesContent":["import * as childProcess from 'node:child_process';\nimport { Result } from 'ts-data-forge';\n\ntype ExecOptionsCustom = Readonly<{\n silent?: boolean;\n}>;\n\ntype ExecOptionsWithStringEncoding =\n childProcess.ExecOptionsWithStringEncoding & ExecOptionsCustom;\n\ntype ExecOptionsWithBufferEncoding =\n childProcess.ExecOptionsWithBufferEncoding & ExecOptionsCustom;\n\ntype NormalizedExecOptions = childProcess.ExecOptions &\n Readonly<{ encoding?: BufferEncoding | 'buffer' | null }>;\n\nexport type ExecOptions = childProcess.ExecOptions & ExecOptionsCustom;\n\nexport type ExecResult<T extends string | Buffer> = Result<\n Readonly<{ stdout: T; stderr: T }>,\n childProcess.ExecException\n>;\n\n/**\n * Executes a shell command asynchronously.\n *\n * @param command - The command to execute.\n * @param options - Optional configuration for command execution.\n * @returns A promise that resolves with the command result.\n */\n\nexport function $(\n command: string,\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n options?: ExecOptionsWithStringEncoding,\n): Promise<ExecResult<string>>;\n\nexport function $(\n command: string,\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n options: ExecOptionsWithBufferEncoding,\n): Promise<ExecResult<Buffer>>;\n\nexport function $<\n TOptions extends\n ExecOptionsWithBufferEncoding | ExecOptionsWithStringEncoding | undefined =\n undefined,\n>(\n command: string,\n options?: TOptions,\n): Promise<\n ExecResult<TOptions extends ExecOptionsWithBufferEncoding ? Buffer : string>\n>;\n\nexport function $(\n command: string,\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n options?: ExecOptionsWithStringEncoding | ExecOptionsWithBufferEncoding,\n): Promise<ExecResult<string | Buffer>> {\n const { silent = false, ...restOptions } = options ?? {};\n\n const normalizedOptions: NormalizedExecOptions = restOptions;\n\n if (!silent) {\n console.info(`$ ${command}`);\n }\n\n return new Promise((resolve) => {\n const handleResult = <T extends string | Buffer>(\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n error: childProcess.ExecException | null,\n stdout: T,\n stderr: T,\n ): void => {\n if (!silent) {\n if (!isEmpty(stdout)) {\n console.info(stdout);\n }\n\n if (!isEmpty(stderr)) {\n console.error(stderr);\n }\n }\n\n if (error !== null) {\n resolve(Result.err(error));\n\n return;\n }\n\n resolve(\n Result.ok<Readonly<{ stdout: T; stderr: T }>>({ stdout, stderr }),\n );\n };\n\n const encoding = normalizedOptions.encoding;\n\n if (encoding === 'buffer' || encoding === null) {\n // eslint-disable-next-line security/detect-child-process\n childProcess.exec(\n command,\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n normalizedOptions as childProcess.ExecOptionsWithBufferEncoding,\n (error, stdout, stderr) => {\n handleResult(error, stdout, stderr);\n },\n );\n\n return;\n }\n\n // eslint-disable-next-line security/detect-child-process\n childProcess.exec(\n command,\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n normalizedOptions as childProcess.ExecOptionsWithStringEncoding,\n (error, stdout, stderr) => {\n handleResult(error, stdout, stderr);\n },\n );\n });\n}\n\n// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\nconst isEmpty = (value: string | Buffer): boolean =>\n typeof value === 'string' ? value === '' : value.length === 0;\n"],"names":[],"mappings":";;;AAsDO,SAAS,CAAA,CACd,SAEA,OAAA,EACsC;AACtC,EAAA,MAAM,EAAE,MAAA,GAAS,KAAA,EAAO,GAAG,WAAA,EAAY,GAAI,WAAW,EAAC;AAEvD,EAAA,MAAM,iBAAA,GAA2C,WAAA;AAEjD,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAAA;AAAA,EAC7B;AAEA,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC9B,IAAA,MAAM,YAAA,GAAe,CAEnB,KAAA,EACA,MAAA,EACA,MAAA,KACS;AACT,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,IAAI,CAAC,OAAA,CAAQ,MAAM,CAAA,EAAG;AACpB,UAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,QACrB;AAEA,QAAA,IAAI,CAAC,OAAA,CAAQ,MAAM,CAAA,EAAG;AACpB,UAAA,OAAA,CAAQ,MAAM,MAAM,CAAA;AAAA,QACtB;AAAA,MACF;AAEA,MAAA,IAAI,UAAU,IAAA,EAAM;AAClB,QAAA,OAAA,CAAQ,MAAA,CAAO,GAAA,CAAI,KAAK,CAAC,CAAA;AAEzB,QAAA;AAAA,MACF;AAEA,MAAA,OAAA;AAAA,QACE,MAAA,CAAO,EAAA,CAAuC,EAAE,MAAA,EAAQ,QAAQ;AAAA,OAClE;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,WAAW,iBAAA,CAAkB,QAAA;AAEnC,IAAA,IAAI,QAAA,KAAa,QAAA,IAAY,QAAA,KAAa,IAAA,EAAM;AAE9C,MAAA,YAAA,CAAa,IAAA;AAAA,QACX,OAAA;AAAA;AAAA,QAEA,iBAAA;AAAA,QACA,CAAC,KAAA,EAAO,MAAA,EAAQ,MAAA,KAAW;AACzB,UAAA,YAAA,CAAa,KAAA,EAAO,QAAQ,MAAM,CAAA;AAAA,QACpC;AAAA,OACF;AAEA,MAAA;AAAA,IACF;AAGA,IAAA,YAAA,CAAa,IAAA;AAAA,MACX,OAAA;AAAA;AAAA,MAEA,iBAAA;AAAA,MACA,CAAC,KAAA,EAAO,MAAA,EAAQ,MAAA,KAAW;AACzB,QAAA,YAAA,CAAa,KAAA,EAAO,QAAQ,MAAM,CAAA;AAAA,MACpC;AAAA,KACF;AAAA,EACF,CAAC,CAAA;AACH;AAGA,MAAM,OAAA,GAAU,CAAC,KAAA,KACf,OAAO,UAAU,QAAA,GAAW,KAAA,KAAU,EAAA,GAAK,KAAA,CAAM,MAAA,KAAW,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.mts","sourceRoot":"","sources":["../../src/functions/format.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,EAA6B,MAAM,EAAE,MAAM,eAAe,CAAC;AAWlE;;;;GAIG;AACH,eAAO,MAAM,WAAW,UACf,SAAS,MAAM,EAAE,YACd,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;IACjD,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC,KACD,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"format.d.mts","sourceRoot":"","sources":["../../src/functions/format.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,EAA6B,MAAM,EAAE,MAAM,eAAe,CAAC;AAWlE;;;;GAIG;AACH,eAAO,MAAM,WAAW,UACf,SAAS,MAAM,EAAE,YACd,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;IACjD,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC,KACD,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC,CAoI/C,CAAC;AA+DF;;;;GAIG;AACH,eAAO,MAAM,eAAe,aAChB,MAAM,YACN,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;CAClD,CAAC,KACD,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAmCpC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,aACvB,QAAQ,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC,KACD,OAAO,CACR,MAAM,CACJ,SAAS,EACT,aAAa,GAAG,QAAQ,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,OAAO,EAAE,CACnE,CAgEF,CAAC;AA4BF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,SACnB,MAAM,YACF,QAAQ,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;IACjD;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC,KACD,OAAO,CACR,MAAM,CACJ,SAAS,EACP,aAAa,GACb,QAAQ,CAAC;IACP,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,GACF,SAAS,OAAO,EAAE,CACrB,CA2FF,CAAC"}
|