typesync 0.13.3 → 0.13.5-0

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.
Files changed (57) hide show
  1. package/README.md +23 -25
  2. package/bin/typesync +2 -2
  3. package/{lib → dist}/cli-util.d.ts +17 -17
  4. package/{lib → dist}/cli.d.ts +2 -2
  5. package/dist/cli.js +297 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/config-service.d.ts +11 -0
  8. package/dist/globber.d.ts +15 -0
  9. package/dist/index.d.ts +4 -0
  10. package/dist/index.js +3 -0
  11. package/dist/package-json-file-service.d.ts +15 -0
  12. package/dist/package-source.d.ts +25 -0
  13. package/dist/type-syncer-C_rkDNfx.js +320 -0
  14. package/dist/type-syncer-C_rkDNfx.js.map +1 -0
  15. package/dist/type-syncer.d.ts +13 -0
  16. package/dist/types.d.ts +103 -0
  17. package/dist/util.d.ts +53 -0
  18. package/dist/versioning.d.ts +14 -0
  19. package/dist/workspace-resolver.d.ts +75 -0
  20. package/package.json +33 -53
  21. package/lib/cli-util.js +0 -74
  22. package/lib/cli-util.js.map +0 -1
  23. package/lib/cli.js +0 -145
  24. package/lib/cli.js.map +0 -1
  25. package/lib/config-service.d.ts +0 -11
  26. package/lib/config-service.js +0 -61
  27. package/lib/config-service.js.map +0 -1
  28. package/lib/fs-utils.js +0 -28
  29. package/lib/fs-utils.js.map +0 -1
  30. package/lib/globber.d.ts +0 -15
  31. package/lib/globber.js +0 -43
  32. package/lib/globber.js.map +0 -1
  33. package/lib/index.d.ts +0 -4
  34. package/lib/index.js +0 -21
  35. package/lib/index.js.map +0 -1
  36. package/lib/package-json-file-service.d.ts +0 -15
  37. package/lib/package-json-file-service.js +0 -48
  38. package/lib/package-json-file-service.js.map +0 -1
  39. package/lib/package-source.d.ts +0 -25
  40. package/lib/package-source.js +0 -49
  41. package/lib/package-source.js.map +0 -1
  42. package/lib/type-syncer.d.ts +0 -13
  43. package/lib/type-syncer.js +0 -237
  44. package/lib/type-syncer.js.map +0 -1
  45. package/lib/types.d.ts +0 -103
  46. package/lib/types.js +0 -14
  47. package/lib/types.js.map +0 -1
  48. package/lib/util.d.ts +0 -53
  49. package/lib/util.js +0 -142
  50. package/lib/util.js.map +0 -1
  51. package/lib/versioning.d.ts +0 -14
  52. package/lib/versioning.js +0 -48
  53. package/lib/versioning.js.map +0 -1
  54. package/lib/workspace-resolver.d.ts +0 -79
  55. package/lib/workspace-resolver.js +0 -70
  56. package/lib/workspace-resolver.js.map +0 -1
  57. /package/{lib → dist}/fs-utils.d.ts +0 -0
package/package.json CHANGED
@@ -1,30 +1,35 @@
1
1
  {
2
2
  "name": "typesync",
3
- "version": "0.13.3",
3
+ "version": "0.13.5-0",
4
+ "type": "module",
4
5
  "description": "Install missing TypeScript typings for your dependencies.",
5
6
  "engines": {
6
- "node": ">=16.0.0"
7
+ "node": "^18.20.0 || ^20.10.0 || >=22.0.0"
7
8
  },
8
9
  "files": [
9
- "lib",
10
+ "dist",
10
11
  "bin"
11
12
  ],
12
13
  "bin": {
13
14
  "typesync": "./bin/typesync"
14
15
  },
15
- "main": "lib/index.js",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/index.d.ts",
19
+ "default": "./dist/index.js"
20
+ }
21
+ },
16
22
  "scripts": {
17
- "clean": "rimraf lib",
18
- "test": "jest",
19
- "lint": "eslint --fix 'src/**/*.ts' && tsc --noEmit && npm run format",
23
+ "test": "vitest run",
24
+ "test:watch": "vitest --ui",
25
+ "lint": "eslint --fix && tsc && npm run format",
20
26
  "format": "prettier --write 'src/**/*.ts'",
21
27
  "lint:watch": "nodemon --exec npm run lint -e ts,js",
22
- "cover": "jest --coverage",
23
- "build": "npm run clean && tsc -p tsconfig.build.json --sourceMap --declaration",
28
+ "build": "tsdown",
24
29
  "run-cli": "npm run build && node bin/typesync",
25
30
  "run-cli:dry": "npm run run-cli -- --dry",
26
31
  "precommit": "lint-staged",
27
- "do:publish": "npm run lint && npm run cover && npm run build && npm publish",
32
+ "do:publish": "npm run lint && npm run test && npm run build && npm publish",
28
33
  "release:patch": "npm version patch && npm run do:publish && git push --follow-tags",
29
34
  "release:minor": "npm version minor && npm run do:publish && git push --follow-tags",
30
35
  "release:prerelease": "npm version prerelease && npm run do:publish && git push --follow-tags"
@@ -48,57 +53,32 @@
48
53
  "homepage": "https://github.com/jeffijoe/typesync#readme",
49
54
  "dependencies": {
50
55
  "awilix": "^10.0.2",
51
- "chalk": "^4.1.2",
56
+ "chalk": "^5.3.0",
52
57
  "cosmiconfig": "^9.0.0",
53
- "detect-indent": "^6.0.0",
54
- "glob": "^10.4.2",
58
+ "detect-indent": "^7.0.1",
55
59
  "js-yaml": "^4.1.0",
56
60
  "npm-registry-fetch": "^17.1.0",
57
- "ora": "^5.1.0",
58
- "semver": "^7.6.2"
61
+ "ora": "^8.1.1",
62
+ "semver": "^7.6.2",
63
+ "tinyglobby": "^0.2.10"
59
64
  },
60
65
  "devDependencies": {
61
- "@types/jest": "^29.5.12",
66
+ "@eslint/js": "^9.16.0",
62
67
  "@types/js-yaml": "~4.0.9 || ~4.1.0",
63
- "@types/node": "~16.18.102",
64
- "@types/npm-registry-fetch": "^8.0.7",
65
- "@types/semver": "^7.5.8",
66
- "@typescript-eslint/eslint-plugin": "^7.15.0",
67
- "@typescript-eslint/parser": "^7.15.0",
68
- "eslint": "^8.51.0",
69
- "eslint-config-prettier": "^9.0.0",
70
- "jest": "^29.7.0",
68
+ "@types/node": "~18.19.67",
69
+ "@types/npm-registry-fetch": "^8.0.7 || ~17.1.0",
70
+ "@types/semver": "~7.5.8 || ~7.6.0",
71
+ "@vitest/coverage-v8": "^2.1.6",
72
+ "@vitest/ui": "^2.1.6",
73
+ "eslint": "^9.16.0",
74
+ "globals": "^15.12.0",
71
75
  "nodemon": "^3.1.4",
76
+ "oxc-transform": "^0.38.0",
72
77
  "prettier": "^3.3.2",
73
- "rimraf": "^5.0.7",
74
- "ts-jest": "^29.1.5",
75
- "typescript": "^5.5.3"
76
- },
77
- "jest": {
78
- "testEnvironment": "node",
79
- "collectCoverageFrom": [
80
- "src/**",
81
- "!src/cli-util.ts",
82
- "!src/index.ts",
83
- "!src/cli.ts",
84
- "!src/fakes.ts",
85
- "!src/types.ts"
86
- ],
87
- "coveragePathIgnorePatterns": [
88
- "/node_modules/"
89
- ],
90
- "transform": {
91
- ".(ts|tsx)": "ts-jest"
92
- },
93
- "testRegex": "(/__tests__/.*\\.(test|spec))\\.(ts|tsx|js)$",
94
- "testPathIgnorePatterns": [
95
- "/lib/"
96
- ],
97
- "moduleFileExtensions": [
98
- "ts",
99
- "tsx",
100
- "js"
101
- ]
78
+ "tsdown": "^0.3.1",
79
+ "typescript": "^5.5.3",
80
+ "typescript-eslint": "^8.16.0",
81
+ "vitest": "^2.1.6"
102
82
  },
103
83
  "packageManager": "npm@8.19.4"
104
84
  }
package/lib/cli-util.js DELETED
@@ -1,74 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.log = log;
7
- exports.success = success;
8
- exports.error = error;
9
- exports.spinWhile = spinWhile;
10
- exports.parseArguments = parseArguments;
11
- const chalk_1 = __importDefault(require("chalk"));
12
- const ora_1 = __importDefault(require("ora"));
13
- /**
14
- * Like regular console.log, but better.
15
- * @param message
16
- */
17
- function log(message) {
18
- console.log(`${chalk_1.default.white('»')} ${chalk_1.default.gray(message)}`);
19
- }
20
- /**
21
- * Makes success feel even sweeter.
22
- * @param text
23
- */
24
- function success(text) {
25
- console.log(`${chalk_1.default.green('✔')} ${chalk_1.default.white(text)}`);
26
- }
27
- /**
28
- * Logs an error all pretty.
29
- * @param err
30
- */
31
- function error(err) {
32
- const msg = err instanceof Error ? err.message : err;
33
- const stack = err instanceof Error ? `\nStack:\n${err.stack}` : '';
34
- console.log(`${chalk_1.default.red('✖')} ${chalk_1.default.bgRed(chalk_1.default.white(msg))}${stack}`);
35
- }
36
- /**
37
- * Spins while doing work. Stops when done.
38
- * @param text
39
- * @param fn
40
- */
41
- async function spinWhile(text, fn) {
42
- const spinner = (0, ora_1.default)(' ' + chalk_1.default.gray(text)).start();
43
- try {
44
- return await fn();
45
- }
46
- finally {
47
- spinner.stop();
48
- }
49
- }
50
- /**
51
- * Super simple argument parser.
52
- * @param argv
53
- */
54
- function parseArguments(argv) {
55
- const flags = {};
56
- const args = [];
57
- for (const arg of argv) {
58
- if (arg.startsWith('--')) {
59
- if (arg.includes('=')) {
60
- const idx = arg.indexOf('=');
61
- const afterEq = arg.substring(idx + 1);
62
- flags[arg.substring(2, idx)] = afterEq;
63
- }
64
- else {
65
- flags[arg.substring(2)] = true;
66
- }
67
- }
68
- else {
69
- args.push(arg);
70
- }
71
- }
72
- return { flags, args };
73
- }
74
- //# sourceMappingURL=cli-util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-util.js","sourceRoot":"","sources":["../src/cli-util.ts"],"names":[],"mappings":";;;;;AAQA,kBAEC;AAMD,0BAEC;AAMD,sBAIC;AAOD,8BAOC;AAMD,wCAiBC;AAjED,kDAAyB;AACzB,8CAAqB;AAGrB;;;GAGG;AACH,SAAgB,GAAG,CAAC,OAAe;IACjC,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AAC5D,CAAC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC1D,CAAC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,GAAmB;IACvC,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IACpD,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAClE,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAA;AAC5E,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,SAAS,CAAI,IAAY,EAAE,EAAoB;IACnE,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,GAAG,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;IACnD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAA;IACnB,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,IAAI,EAAE,CAAA;IAChB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,IAAmB;IAChD,MAAM,KAAK,GAA2B,EAAE,CAAA;IACxC,MAAM,IAAI,GAAkB,EAAE,CAAA;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;gBACtC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;YACxC,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;YAChC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC"}
package/lib/cli.js DELETED
@@ -1,145 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.startCli = startCli;
30
- const path = __importStar(require("node:path"));
31
- const awilix_1 = require("awilix");
32
- const chalk_1 = __importDefault(require("chalk"));
33
- const C = __importStar(require("./cli-util"));
34
- const config_service_1 = require("./config-service");
35
- const globber_1 = require("./globber");
36
- const package_json_file_service_1 = require("./package-json-file-service");
37
- const package_source_1 = require("./package-source");
38
- const type_syncer_1 = require("./type-syncer");
39
- const workspace_resolver_1 = require("./workspace-resolver");
40
- const fsUtils = __importStar(require("./fs-utils"));
41
- /**
42
- * Starts the TypeSync CLI.
43
- */
44
- async function startCli() {
45
- try {
46
- // Awilix is a dependency injection container.
47
- const container = (0, awilix_1.createContainer)({
48
- injectionMode: awilix_1.InjectionMode.CLASSIC,
49
- }).register({
50
- packageJSONService: (0, awilix_1.asFunction)(package_json_file_service_1.createPackageJSONFileService).singleton(),
51
- workspaceResolverService: (0, awilix_1.asFunction)(() => (0, workspace_resolver_1.createWorkspaceResolverService)(fsUtils)).singleton(),
52
- packageSource: (0, awilix_1.asFunction)(package_source_1.createPackageSource).singleton(),
53
- configService: (0, awilix_1.asFunction)(config_service_1.createConfigService).singleton(),
54
- globber: (0, awilix_1.asFunction)(globber_1.createGlobber).singleton(),
55
- typeSyncer: (0, awilix_1.asFunction)(type_syncer_1.createTypeSyncer),
56
- });
57
- await run(container.resolve('typeSyncer'));
58
- }
59
- catch (err) {
60
- C.error(err);
61
- process.exitCode = 1;
62
- }
63
- }
64
- /**
65
- * Actual CLI runner. Uses the `syncer` instance to sync.
66
- * @param syncer
67
- */
68
- async function run(syncer) {
69
- const { args, flags } = C.parseArguments(process.argv.slice(2));
70
- const [filePath = 'package.json'] = args;
71
- if (flags.help) {
72
- printHelp();
73
- return;
74
- }
75
- C.log((0, chalk_1.default) `TypeSync v{white ${require('../package.json').version}}`);
76
- if (flags.dry) {
77
- C.log('—— DRY RUN — will not modify file ——');
78
- }
79
- const result = await C.spinWhile(`Syncing type definitions in ${chalk_1.default.cyan(filePath)}...`, () => syncer.sync(filePath, flags));
80
- const syncedFilesOutput = result.syncedFiles
81
- .map(renderSyncedFile)
82
- .join('\n\n');
83
- const totals = result.syncedFiles
84
- .map((f) => ({
85
- newTypings: f.newTypings.length,
86
- }))
87
- .reduce((accum, next) => ({
88
- newTypings: accum.newTypings + next.newTypings,
89
- }), { newTypings: 0 });
90
- const syncMessage = (0, chalk_1.default) `\n\n${syncedFilesOutput}\n\n✨ Run {green typesync} again without the {gray --dry} flag to update your {gray package.json}.`;
91
- if (flags.dry === 'fail' && totals.newTypings > 0) {
92
- C.error('Typings changed; check failed.');
93
- C.log(syncMessage);
94
- process.exitCode = 1;
95
- return;
96
- }
97
- C.success(totals.newTypings === 0
98
- ? `No new typings to add, looks like you're all synced up!`
99
- : flags.dry
100
- ? (0, chalk_1.default) `${totals.newTypings.toString()} new typings can be added.${syncMessage}`
101
- : (0, chalk_1.default) `${totals.newTypings.toString()} new typings added.\n\n${syncedFilesOutput}\n\n✨ Go ahead and run {green npm install}, {green yarn}, or {green pnpm i} to install the packages that were added.`);
102
- }
103
- /**
104
- * Renders a type definition.
105
- * @param typeDef
106
- * @param isLast
107
- */
108
- function renderTypeDef(typeDef, isLast) {
109
- const treeNode = isLast ? '└─' : '├─';
110
- return (0, chalk_1.default) `${treeNode} ${(0, chalk_1.default) `{green.bold +}`} {gray @types/}${(0, chalk_1.default) `{bold.blue ${typeDef.typingsName}}`}`;
111
- }
112
- /**
113
- * Renders a synced file.
114
- *
115
- * @param file
116
- */
117
- function renderSyncedFile(file) {
118
- const badge = file.newTypings.length === 0
119
- ? (0, chalk_1.default) `{blue.bold (no new typings added)}`
120
- : (0, chalk_1.default) `{green.bold (${file.newTypings.length.toString()} new typings added)}`;
121
- const dirName = path.basename(path.dirname(path.resolve(file.filePath)));
122
- const title = (0, chalk_1.default) `📦 ${file.package.name ?? dirName} {gray.italic — ${file.filePath}} ${badge}`;
123
- const nl = '\n';
124
- const combined = [...file.newTypings.map((t) => ({ ...t, action: 'add' }))];
125
- const rendered = title +
126
- nl +
127
- combined
128
- .map((t) => renderTypeDef(t, combined[combined.length - 1] === t))
129
- .join(nl);
130
- return rendered;
131
- }
132
- /**
133
- * Prints the help text.
134
- */
135
- function printHelp() {
136
- console.log((0, chalk_1.default) `
137
- {blue.bold typesync} - adds missing TypeScript definitions to package.json
138
-
139
- Options
140
- {magenta.bold --dry} dry run, won't save the package.json
141
- {magenta.bold --ignoredeps=<deps|dev|peer|optional>} ignores dependencies in the specified sections (comma separate for multiple). Example: {magenta ignoredeps=dev,peer}
142
- {magenta.bold --help} shows this help menu
143
- `.trim());
144
- }
145
- //# sourceMappingURL=cli.js.map
package/lib/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { type ICLIArguments, type ISyncOptions } from './types';
2
- /**
3
- * Config Service.
4
- */
5
- export interface IConfigService {
6
- /**
7
- * Get typesync config.
8
- */
9
- readConfig(filePath: string, flags: ICLIArguments['flags']): Promise<ISyncOptions>;
10
- }
11
- export declare function createConfigService(): IConfigService;
@@ -1,61 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.createConfigService = createConfigService;
27
- const path = __importStar(require("node:path"));
28
- const cosmiconfig_1 = require("cosmiconfig");
29
- const types_1 = require("./types");
30
- const util_1 = require("./util");
31
- const explorer = (0, cosmiconfig_1.cosmiconfig)('typesync');
32
- function createConfigService() {
33
- return {
34
- readConfig: async (filePath, flags) => {
35
- const fileConfig = await explorer
36
- .search(path.dirname(filePath))
37
- .then(/* istanbul ignore next */ (result) => result?.config ?? {});
38
- const cliConfig = readCliConfig(flags);
39
- return { ...(0, util_1.shrinkObject)(fileConfig), ...(0, util_1.shrinkObject)(cliConfig) };
40
- },
41
- };
42
- }
43
- function readCliConfig(flags) {
44
- const readValues = (key, validator) => {
45
- const values = flags[key];
46
- return typeof values === 'string'
47
- ? values
48
- .split(',')
49
- .filter((value) => (validator ? validator(value) : true))
50
- : undefined;
51
- };
52
- return {
53
- ignoreDeps: readValues('ignoredeps', isIgnoreDepConfigValue),
54
- ignorePackages: readValues('ignorepackages'),
55
- ignoreProjects: readValues('ignoreprojects'),
56
- };
57
- }
58
- function isIgnoreDepConfigValue(value) {
59
- return Object.keys(types_1.IDependencySection).includes(value);
60
- }
61
- //# sourceMappingURL=config-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-service.js","sourceRoot":"","sources":["../src/config-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,kDAYC;AApCD,gDAAiC;AACjC,6CAAyC;AACzC,mCAIgB;AAChB,iCAAqC;AAerC,MAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC,UAAU,CAAC,CAAA;AAExC,SAAgB,mBAAmB;IACjC,OAAO;QACL,UAAU,EAAE,KAAK,EAAE,QAAgB,EAAE,KAA6B,EAAE,EAAE;YACpE,MAAM,UAAU,GAAiB,MAAM,QAAQ;iBAC5C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;iBAC9B,IAAI,CAAC,0BAA0B,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAA;YAEpE,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;YAEtC,OAAO,EAAE,GAAG,IAAA,mBAAY,EAAC,UAAU,CAAC,EAAE,GAAG,IAAA,mBAAY,EAAC,SAAS,CAAC,EAAE,CAAA;QACpE,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAA6B;IAClD,MAAM,UAAU,GAAG,CACjB,GAAW,EACX,SAAsC,EAChB,EAAE;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QACzB,OAAO,OAAO,MAAM,KAAK,QAAQ;YAC/B,CAAC,CAAC,MAAM;iBACH,KAAK,CAAC,GAAG,CAAC;iBACV,MAAM,CAAC,CAAC,KAAK,EAAc,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzE,CAAC,CAAC,SAAS,CAAA;IACf,CAAC,CAAA;IAED,OAAO;QACL,UAAU,EAAE,UAAU,CAAC,YAAY,EAAE,sBAAsB,CAAC;QAC5D,cAAc,EAAE,UAAU,CAAC,gBAAgB,CAAC;QAC5C,cAAc,EAAE,UAAU,CAAC,gBAAgB,CAAC;KAC7C,CAAA;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,0BAAkB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACxD,CAAC"}
package/lib/fs-utils.js DELETED
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readFileContents = readFileContents;
4
- const promises_1 = require("node:fs/promises");
5
- async function readFileContents(filePath) {
6
- await assertFile(filePath);
7
- return (0, promises_1.readFile)(filePath, 'utf-8');
8
- }
9
- async function assertFile(filePath) {
10
- if (!(await existsAsync(filePath))) {
11
- throw new Error(`${filePath} does not exist.`);
12
- }
13
- }
14
- async function existsAsync(filePath) {
15
- try {
16
- await (0, promises_1.stat)(filePath);
17
- return true;
18
- }
19
- catch (err) {
20
- /* istanbul ignore else */
21
- if (err.code === 'ENOENT') {
22
- return false;
23
- }
24
- /* istanbul ignore next */
25
- throw err;
26
- }
27
- }
28
- //# sourceMappingURL=fs-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":";;AAEA,4CAGC;AALD,+CAAiD;AAE1C,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC1B,OAAO,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AACpC,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,kBAAkB,CAAC,CAAA;IAChD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,QAAgB;IACzC,IAAI,CAAC;QACH,MAAM,IAAA,eAAI,EAAC,QAAQ,CAAC,CAAA;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0BAA0B;QAC1B,IAAK,GAAwB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,0BAA0B;QAC1B,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC"}
package/lib/globber.d.ts DELETED
@@ -1,15 +0,0 @@
1
- /**
2
- * Globber interface.
3
- */
4
- export interface IGlobber {
5
- /**
6
- * Globs for a filename.
7
- *
8
- * @param root
9
- */
10
- glob(root: string, filename: string): Promise<Array<string>>;
11
- }
12
- /**
13
- * Creates a globber.
14
- */
15
- export declare function createGlobber(): IGlobber;
package/lib/globber.js DELETED
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.createGlobber = createGlobber;
27
- const path = __importStar(require("node:path"));
28
- const glob_1 = require("glob");
29
- const util_1 = require("./util");
30
- /**
31
- * Creates a globber.
32
- */
33
- function createGlobber() {
34
- return {
35
- async glob(root, filename) {
36
- const source = await (0, glob_1.glob)(path.join(root, filename), {
37
- ignore: '**/node_modules/**',
38
- });
39
- return (0, util_1.uniq)(source);
40
- },
41
- };
42
- }
43
- //# sourceMappingURL=globber.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"globber.js","sourceRoot":"","sources":["../src/globber.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,sCAUC;AA7BD,gDAAiC;AACjC,+BAA2B;AAC3B,iCAA6B;AAc7B;;GAEG;AACH,SAAgB,aAAa;IAC3B,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,QAAQ;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;gBACnD,MAAM,EAAE,oBAAoB;aAC7B,CAAC,CAAA;YAEF,OAAO,IAAA,WAAI,EAAC,MAAM,CAAC,CAAA;QACrB,CAAC;KACF,CAAA;AACH,CAAC"}
package/lib/index.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export * from './config-service';
2
- export * from './package-source';
3
- export * from './type-syncer';
4
- export * from './types';
package/lib/index.js DELETED
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./config-service"), exports);
18
- __exportStar(require("./package-source"), exports);
19
- __exportStar(require("./type-syncer"), exports);
20
- __exportStar(require("./types"), exports);
21
- //# sourceMappingURL=index.js.map
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC;AAChC,mDAAgC;AAChC,gDAA6B;AAC7B,0CAAuB"}
@@ -1,15 +0,0 @@
1
- import { IPackageFile } from './types';
2
- /**
3
- * File service.
4
- */
5
- export interface IPackageJSONService {
6
- /**
7
- * Reads and parses JSON from the specified file. Path is relative to the current working directory.
8
- */
9
- readPackageFile(filePath: string): Promise<IPackageFile>;
10
- /**
11
- * Writes the JSON to the specified file.
12
- */
13
- writePackageFile(filePath: string, fileContents: IPackageFile): Promise<void>;
14
- }
15
- export declare function createPackageJSONFileService(): IPackageJSONService;
@@ -1,48 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.createPackageJSONFileService = createPackageJSONFileService;
30
- const fsp = __importStar(require("node:fs/promises"));
31
- const detect_indent_1 = __importDefault(require("detect-indent"));
32
- const fs_utils_1 = require("./fs-utils");
33
- function createPackageJSONFileService() {
34
- return {
35
- readPackageFile: async (filePath) => {
36
- const contents = await (0, fs_utils_1.readFileContents)(filePath);
37
- return JSON.parse(contents);
38
- },
39
- writePackageFile: async (filePath, fileContent) => {
40
- const contents = await (0, fs_utils_1.readFileContents)(filePath);
41
- const { indent } = (0, detect_indent_1.default)(contents);
42
- const trailingNewline = contents.length ? contents.endsWith('\n') : false;
43
- const data = JSON.stringify(fileContent, null, indent /* istanbul ignore next */ || ' ');
44
- await fsp.writeFile(filePath, data + (trailingNewline ? '\n' : ''));
45
- },
46
- };
47
- }
48
- //# sourceMappingURL=package-json-file-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-json-file-service.js","sourceRoot":"","sources":["../src/package-json-file-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,oEAkBC;AArCD,sDAAuC;AACvC,kEAAwC;AACxC,yCAA6C;AAiB7C,SAAgB,4BAA4B;IAC1C,OAAO;QACL,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAgB,EAAC,QAAQ,CAAC,CAAA;YACjD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAiB,CAAA;QAC7C,CAAC;QACD,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE;YAChD,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAgB,EAAC,QAAQ,CAAC,CAAA;YACjD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,uBAAY,EAAC,QAAQ,CAAC,CAAA;YACzC,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YACzE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CACzB,WAAW,EACX,IAAI,EACJ,MAAM,CAAC,0BAA0B,IAAI,IAAI,CAC1C,CAAA;YACD,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACrE,CAAC;KACF,CAAA;AACH,CAAC"}