@sanity/plugin-kit 1.1.0-ecosystem-preset.5 → 1.1.0-ecosystem-preset.6
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/lib/package.json +5 -5
- package/lib/src/actions/init.js +9 -2
- package/lib/src/actions/init.js.map +1 -1
- package/lib/src/actions/verify/validations.d.ts +1 -0
- package/lib/src/actions/verify/validations.js +38 -15
- package/lib/src/actions/verify/validations.js.map +1 -1
- package/lib/src/actions/verify-package.js +1 -0
- package/lib/src/actions/verify-package.js.map +1 -1
- package/lib/src/actions/verify-studio.js.map +1 -1
- package/lib/src/configs/banned-packages.d.ts +2 -0
- package/lib/src/configs/{merged-packages.js → banned-packages.js} +3 -2
- package/lib/src/configs/{merged-packages.js.map → banned-packages.js.map} +1 -1
- package/lib/src/configs/forced-package-versions.d.ts +10 -0
- package/lib/src/configs/forced-package-versions.js +15 -0
- package/lib/src/configs/forced-package-versions.js.map +1 -0
- package/lib/src/dependencies/import-linter.js +2 -2
- package/lib/src/npm/package.js +24 -7
- package/lib/src/npm/package.js.map +1 -1
- package/lib/src/presets/presets.js +1 -1
- package/lib/src/presets/presets.js.map +1 -1
- package/lib/src/presets/semver-workflow.d.ts +2 -0
- package/lib/src/presets/semver-workflow.js +86 -6
- package/lib/src/presets/semver-workflow.js.map +1 -1
- package/lib/test/semver-workflow.test.d.ts +1 -0
- package/lib/test/semver-workflow.test.js +42 -0
- package/lib/test/semver-workflow.test.js.map +1 -0
- package/lib/test/verify-package.test.js +1 -1
- package/lib/test/verify-package.test.js.map +1 -1
- package/package.json +5 -5
- package/src/actions/init.ts +9 -2
- package/src/actions/verify/validations.ts +48 -13
- package/src/actions/verify-package.ts +3 -1
- package/src/actions/verify-studio.ts +5 -1
- package/src/configs/{merged-packages.ts → banned-packages.ts} +2 -0
- package/src/configs/forced-package-versions.ts +12 -0
- package/src/dependencies/import-linter.ts +1 -1
- package/src/npm/package.ts +30 -10
- package/src/presets/presets.ts +1 -1
- package/src/presets/semver-workflow.ts +89 -6
- package/lib/src/actions/verify.d.ts +0 -0
- package/lib/src/actions/verify.js +0 -330
- package/lib/src/actions/verify.js.map +0 -1
- package/lib/src/configs/merged-packages.d.ts +0 -1
- package/src/actions/verify.ts +0 -328
|
@@ -12,13 +12,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.semverWorkflowPreset = void 0;
|
|
15
|
+
exports.readmeBaseurl = exports.semverWorkflowPreset = void 0;
|
|
16
16
|
const inject_1 = require("../actions/inject");
|
|
17
17
|
const resolveLatestVersions_1 = require("../npm/resolveLatestVersions");
|
|
18
18
|
const package_1 = require("../npm/package");
|
|
19
19
|
const log_1 = __importDefault(require("../util/log"));
|
|
20
20
|
const outdent_1 = __importDefault(require("outdent"));
|
|
21
21
|
const chalk_1 = __importDefault(require("chalk"));
|
|
22
|
+
const path_1 = __importDefault(require("path"));
|
|
23
|
+
const files_1 = require("../util/files");
|
|
24
|
+
const errorToUndefined_1 = require("../util/errorToUndefined");
|
|
22
25
|
exports.semverWorkflowPreset = {
|
|
23
26
|
name: 'semver-workflow',
|
|
24
27
|
description: 'Files and dependencies for conventional-commits, github workflow and semantic-release.',
|
|
@@ -30,6 +33,7 @@ function applyPreset(options) {
|
|
|
30
33
|
yield (0, inject_1.writeAssets)(semverWorkflowFiles(), options);
|
|
31
34
|
yield addPrepareScript(options);
|
|
32
35
|
yield addDevDependencies(options);
|
|
36
|
+
yield updateReadme(options);
|
|
33
37
|
});
|
|
34
38
|
}
|
|
35
39
|
function addPrepareScript(options) {
|
|
@@ -51,15 +55,81 @@ function addDevDependencies(options) {
|
|
|
51
55
|
yield (0, package_1.writePackageJsonDirect)(newPkg, options);
|
|
52
56
|
log_1.default.info('Updated devDependencies.');
|
|
53
57
|
log_1.default.info(chalk_1.default.green((0, outdent_1.default) `
|
|
54
|
-
|
|
55
|
-
- .release.json
|
|
56
|
-
- .github/workflows/main.yml
|
|
58
|
+
semantic-release preset injected.
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
Please confer
|
|
61
|
+
https://github.com/sanity-io/plugin-kit/blob/main/docs/presets.md#semver-workflow
|
|
62
|
+
to finalize configuration for this preset.
|
|
60
63
|
`.trim()));
|
|
61
64
|
});
|
|
62
65
|
}
|
|
66
|
+
function updateReadme(options) {
|
|
67
|
+
var _a;
|
|
68
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
const { basePath } = options;
|
|
70
|
+
const readmePath = path_1.default.join(basePath, 'README.md');
|
|
71
|
+
const readme = (_a = (yield (0, files_1.readFile)(readmePath, 'utf8').catch(errorToUndefined_1.errorToUndefined))) !== null && _a !== void 0 ? _a : '';
|
|
72
|
+
const { v3Banner, installUsage, developFooter } = yield readmeSnippets(options);
|
|
73
|
+
const updatedReadme = [v3Banner, installUsage, readme, developFooter].filter(Boolean).join('\n\n');
|
|
74
|
+
yield (0, files_1.writeFile)(readmePath, updatedReadme, { encoding: 'utf8' });
|
|
75
|
+
log_1.default.info('Updated README. Please review the changes.');
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function readmeSnippets(options) {
|
|
79
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
const pkg = yield (0, package_1.getPackage)(options);
|
|
81
|
+
const bestEffortUrl = readmeBaseurl(pkg);
|
|
82
|
+
const v3Banner = (0, outdent_1.default) `
|
|
83
|
+
> **NOTE**
|
|
84
|
+
>
|
|
85
|
+
> This is the **Sanity Studio v3 version** of ${pkg.name}.
|
|
86
|
+
>
|
|
87
|
+
> For the v2 version, please refer to the [v2-branch](${bestEffortUrl}).
|
|
88
|
+
`;
|
|
89
|
+
const installUsage = (0, outdent_1.default) `
|
|
90
|
+
## Installation
|
|
91
|
+
|
|
92
|
+
\`\`\`
|
|
93
|
+
npm install --save ${pkg.name}@studio-v3
|
|
94
|
+
\`\`\`
|
|
95
|
+
|
|
96
|
+
or
|
|
97
|
+
|
|
98
|
+
\`\`\`
|
|
99
|
+
yarn add ${pkg.name}@studio-v3
|
|
100
|
+
\`\`\`
|
|
101
|
+
|
|
102
|
+
## Usage
|
|
103
|
+
|
|
104
|
+
<TODO: Show usage here>
|
|
105
|
+
`;
|
|
106
|
+
const developFooter = (0, outdent_1.default) `
|
|
107
|
+
## License
|
|
108
|
+
|
|
109
|
+
MIT-licensed. See LICENSE.
|
|
110
|
+
|
|
111
|
+
## Develop & test
|
|
112
|
+
|
|
113
|
+
This plugin uses [@sanity/plugin-kit](https://github.com/sanity-io/plugin-kit)
|
|
114
|
+
with default configuration for build & watch scripts.
|
|
115
|
+
|
|
116
|
+
See [Testing a plugin in Sanity Studio](https://github.com/sanity-io/plugin-kit#testing-a-plugin-in-sanity-studio)
|
|
117
|
+
on how to run this plugin with hotreload in the studio.
|
|
118
|
+
|
|
119
|
+
### Release new version
|
|
120
|
+
|
|
121
|
+
Run ["CI & Release" workflow](${bestEffortUrl}/actions/workflows/main.yml).
|
|
122
|
+
Make sure to select the main branch and check "Release new version".
|
|
123
|
+
|
|
124
|
+
Semantic release will only release on configured branches, so it is safe to run release on any branch.
|
|
125
|
+
`;
|
|
126
|
+
return {
|
|
127
|
+
v3Banner,
|
|
128
|
+
installUsage,
|
|
129
|
+
developFooter,
|
|
130
|
+
};
|
|
131
|
+
});
|
|
132
|
+
}
|
|
63
133
|
function semverWorkflowFiles() {
|
|
64
134
|
return [
|
|
65
135
|
{ from: ['.github', 'workflows', 'main.yml'], to: ['.github', 'workflows', 'main.yml'] },
|
|
@@ -81,4 +151,14 @@ function semverWorkflowDependencies() {
|
|
|
81
151
|
]);
|
|
82
152
|
});
|
|
83
153
|
}
|
|
154
|
+
function readmeBaseurl(pkg) {
|
|
155
|
+
var _a, _b, _c;
|
|
156
|
+
return ((_c = (_b = (_a = pkg.repository) === null || _a === void 0 ? void 0 : _a.url) !== null && _b !== void 0 ? _b : pkg.homepage) !== null && _c !== void 0 ? _c : 'TODO')
|
|
157
|
+
.replaceAll(/.+:\/\//g, 'https://')
|
|
158
|
+
.replaceAll(/\.git/g, '')
|
|
159
|
+
.replaceAll(/git@github.com\//g, 'github.com/')
|
|
160
|
+
.replaceAll(/git@github.com:/g, 'https://github.com/')
|
|
161
|
+
.replaceAll(/#.+/g, '');
|
|
162
|
+
}
|
|
163
|
+
exports.readmeBaseurl = readmeBaseurl;
|
|
84
164
|
//# sourceMappingURL=semver-workflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semver-workflow.js","sourceRoot":"","sources":["../../../src/presets/semver-workflow.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8CAAoE;AACpE,wEAAkE;AAElE,
|
|
1
|
+
{"version":3,"file":"semver-workflow.js","sourceRoot":"","sources":["../../../src/presets/semver-workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const tap_1 = __importDefault(require("tap"));
|
|
16
|
+
const semver_workflow_1 = require("../src/presets/semver-workflow");
|
|
17
|
+
tap_1.default.test('readmeBaseUrl', (t) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
const testCases = [
|
|
19
|
+
{
|
|
20
|
+
pkg: { repository: { url: 'git+https://github.com/sanity-io/sanity.git' } },
|
|
21
|
+
expectedUrl: 'https://github.com/sanity-io/sanity',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
pkg: { repository: { url: 'git+ssh://git@github.com/sanity-io/plugin-kit.git' } },
|
|
25
|
+
expectedUrl: 'https://github.com/sanity-io/plugin-kit',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
pkg: { repository: { url: 'git@github.com:sanity-io/sanity-plugin-cloudinary.git' } },
|
|
29
|
+
expectedUrl: 'https://github.com/sanity-io/sanity-plugin-cloudinary',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
pkg: { repository: { url: 'git+https://github.com/sanity-io/sanity-plugin.git' } },
|
|
33
|
+
expectedUrl: 'https://github.com/sanity-io/sanity-plugin',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
pkg: { homepage: 'https://github.com/sanity-io/plugin-with-readme#readme' },
|
|
37
|
+
expectedUrl: 'https://github.com/sanity-io/plugin-with-readme',
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
testCases.forEach(({ pkg, expectedUrl }) => t.equal((0, semver_workflow_1.readmeBaseurl)(pkg), expectedUrl));
|
|
41
|
+
}));
|
|
42
|
+
//# sourceMappingURL=semver-workflow.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semver-workflow.test.js","sourceRoot":"","sources":["../../test/semver-workflow.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8CAAqB;AACrB,oEAA4D;AAG5D,aAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAO,CAAC,EAAE,EAAE;IACpC,MAAM,SAAS,GAA8C;QAC3D;YACE,GAAG,EAAE,EAAC,UAAU,EAAE,EAAC,GAAG,EAAE,6CAA6C,EAAC,EAAC;YACvE,WAAW,EAAE,qCAAqC;SACnD;QACD;YACE,GAAG,EAAE,EAAC,UAAU,EAAE,EAAC,GAAG,EAAE,mDAAmD,EAAC,EAAC;YAC7E,WAAW,EAAE,yCAAyC;SACvD;QACD;YACE,GAAG,EAAE,EAAC,UAAU,EAAE,EAAC,GAAG,EAAE,uDAAuD,EAAC,EAAC;YACjF,WAAW,EAAE,uDAAuD;SACrE;QACD;YACE,GAAG,EAAE,EAAC,UAAU,EAAE,EAAC,GAAG,EAAE,oDAAoD,EAAC,EAAC;YAC9E,WAAW,EAAE,4CAA4C;SAC1D;QACD;YACE,GAAG,EAAE,EAAC,QAAQ,EAAE,wDAAwD,EAAC;YACzE,WAAW,EAAE,iDAAiD;SAC/D;KACF,CAAA;IAED,SAAS,CAAC,OAAO,CAAC,CAAC,EAAC,GAAG,EAAE,WAAW,EAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAA,+BAAa,EAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAA;AACrF,CAAC,CAAA,CAAC,CAAA"}
|
|
@@ -66,7 +66,7 @@ tap_1.default.test('plugin-kit verify-studio in fresh v2 studio', (t) => __await
|
|
|
66
66
|
command: ({ fixtureDir }) => (0, fixture_utils_1.runCliCommand)('verify-studio', [fixtureDir]),
|
|
67
67
|
assert: ({ result: { stdout, stderr } }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
68
68
|
// to regenerate the snapshot, in root dir run:
|
|
69
|
-
// tap test/verify-
|
|
69
|
+
// tap test/verify-package.test.ts --snapshot
|
|
70
70
|
const redactFilePaths = cleanupOutput(stderr, /[\S]+verify-package\/fresh-v2-movie-studio\//g);
|
|
71
71
|
t.matchSnapshot(redactFilePaths, 'stderr should match snapshot');
|
|
72
72
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-package.test.js","sourceRoot":"","sources":["../../test/verify-package.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"verify-package.test.js","sourceRoot":"","sources":["../../test/verify-package.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanity/plugin-kit",
|
|
3
|
-
"version": "1.1.0-ecosystem-preset.
|
|
3
|
+
"version": "1.1.0-ecosystem-preset.6",
|
|
4
4
|
"description": "Enhanced Sanity.io plugin development experience",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"clean": "rimraf lib",
|
|
@@ -97,17 +97,17 @@
|
|
|
97
97
|
"@typescript-eslint/parser": "^5.34.0",
|
|
98
98
|
"eslint": "^8.22.0",
|
|
99
99
|
"eslint-config-prettier": "^8.5.0",
|
|
100
|
-
"eslint-config-sanity": "^
|
|
100
|
+
"eslint-config-sanity": "^6.0.0",
|
|
101
101
|
"eslint-plugin-prettier": "^4.2.1",
|
|
102
|
+
"husky": "^8.0.1",
|
|
102
103
|
"fs-extra": "^10.1.0",
|
|
103
|
-
"husky": "^7.0.4",
|
|
104
104
|
"json5": "^2.2.1",
|
|
105
|
-
"lint-staged": "^
|
|
105
|
+
"lint-staged": "^13.0.3",
|
|
106
106
|
"parcel": "^2.7.0",
|
|
107
107
|
"prettier": "^2.7.1",
|
|
108
108
|
"readdirp": "^3.6.0",
|
|
109
109
|
"rimraf": "^3.0.2",
|
|
110
|
-
"sanity": "3.0.0-dev-preview.
|
|
110
|
+
"sanity": "3.0.0-dev-preview.22",
|
|
111
111
|
"sinon": "^14.0.0",
|
|
112
112
|
"tap": "^16.3.0",
|
|
113
113
|
"ts-node": "^10.9.1",
|
package/src/actions/init.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {TypedFlags} from 'meow'
|
|
|
7
7
|
import {getPackage} from '../npm/package'
|
|
8
8
|
import {defaultSourceJs, defaultSourceTs} from '../configs/default-source'
|
|
9
9
|
import {incompatiblePluginPackage} from '../constants'
|
|
10
|
+
import {forcedPackageVersions} from '../configs/forced-package-versions'
|
|
10
11
|
|
|
11
12
|
export const initFlags = {
|
|
12
13
|
...sharedFlags,
|
|
@@ -68,8 +69,14 @@ export type InitFlags = TypedFlags<typeof initFlags>
|
|
|
68
69
|
|
|
69
70
|
const defaultDependencies = [incompatiblePluginPackage]
|
|
70
71
|
|
|
71
|
-
const defaultDevDependencies = {
|
|
72
|
-
|
|
72
|
+
const defaultDevDependencies = {
|
|
73
|
+
react: forcedPackageVersions.react,
|
|
74
|
+
sanity: forcedPackageVersions.sanity,
|
|
75
|
+
}
|
|
76
|
+
const defaultPeerDependencies = {
|
|
77
|
+
react: forcedPackageVersions.react,
|
|
78
|
+
sanity: forcedPackageVersions.sanity,
|
|
79
|
+
}
|
|
73
80
|
|
|
74
81
|
export interface InitOptions {
|
|
75
82
|
basePath: string
|
|
@@ -4,11 +4,12 @@ import validateNpmPackageName from 'validate-npm-package-name'
|
|
|
4
4
|
// @ts-expect-error missing types
|
|
5
5
|
import findBabelConfig from 'find-babel-config'
|
|
6
6
|
import {incompatiblePluginPackage, urls} from '../../constants'
|
|
7
|
-
import {mergedPackages} from '../../configs/
|
|
7
|
+
import {deprecatedDevDeps, mergedPackages} from '../../configs/banned-packages'
|
|
8
8
|
import path from 'path'
|
|
9
9
|
import {fileExists, readFileContent, readJson5File} from '../../util/files'
|
|
10
10
|
import chalk from 'chalk'
|
|
11
11
|
import {CompilerOptions, PackageJson, SanityStudioJson, SanityV2Json, TsConfig} from './types'
|
|
12
|
+
import {Value} from 'p-any'
|
|
12
13
|
|
|
13
14
|
export const expectedScripts = {
|
|
14
15
|
prebuild: `plugin-kit verify-package --silent`,
|
|
@@ -89,6 +90,10 @@ export function validateModule(packageJson: PackageJson): string[] {
|
|
|
89
90
|
`.trimStart()
|
|
90
91
|
)
|
|
91
92
|
}
|
|
93
|
+
|
|
94
|
+
if (packageJson.typings) {
|
|
95
|
+
errors.push(outdent`Found typings field in package.json. Use types instead.`)
|
|
96
|
+
}
|
|
92
97
|
return errors
|
|
93
98
|
}
|
|
94
99
|
|
|
@@ -188,6 +193,25 @@ export function validateSanityDependencies(packageJson: PackageJson): string[] {
|
|
|
188
193
|
return []
|
|
189
194
|
}
|
|
190
195
|
|
|
196
|
+
export function validateDeprecatedDependencies(packageJson: PackageJson): string[] {
|
|
197
|
+
const {dependencies, devDependencies, peerDependencies} = packageJson
|
|
198
|
+
const allDependencies = {...dependencies, ...devDependencies, ...peerDependencies}
|
|
199
|
+
|
|
200
|
+
const illegalDeps = Object.keys(allDependencies).filter((dep) => deprecatedDevDeps.includes(dep))
|
|
201
|
+
const deps = new Set<string>(illegalDeps)
|
|
202
|
+
const unique = [...deps.values()]
|
|
203
|
+
if (unique.length) {
|
|
204
|
+
return [
|
|
205
|
+
outdent`
|
|
206
|
+
package.json contains deprecated dependencies that should be removed:
|
|
207
|
+
- ${unique.join('\n- ')}
|
|
208
|
+
`.trimStart(),
|
|
209
|
+
]
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return []
|
|
213
|
+
}
|
|
214
|
+
|
|
191
215
|
export async function validateRollupConfig({basePath}: {basePath: string}) {
|
|
192
216
|
const configpath = path.normalize(path.join(basePath, 'rollup.config.js'))
|
|
193
217
|
|
|
@@ -220,18 +244,25 @@ export async function validateBabelConfig({basePath}: {basePath: string}) {
|
|
|
220
244
|
}
|
|
221
245
|
|
|
222
246
|
export async function validateStudioConfig({basePath}: {basePath: string}): Promise<string[]> {
|
|
223
|
-
const
|
|
247
|
+
const suffixes = ['ts', 'js', 'tsx', 'jsx']
|
|
248
|
+
const withSuffix = (fileBases: string[]): string[] =>
|
|
249
|
+
fileBases.flatMap((file) => suffixes.map((suffix) => `${file}.${suffix}`))
|
|
250
|
+
|
|
251
|
+
const filenames = withSuffix(['sanity.config', 'sanity.cli'])
|
|
224
252
|
|
|
225
|
-
const files
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
253
|
+
const files: Record<string, boolean | undefined> = {}
|
|
254
|
+
|
|
255
|
+
for (const filename of filenames) {
|
|
256
|
+
const filepath = path.normalize(path.join(basePath, filename))
|
|
257
|
+
files[filename] = await fileExists(filepath)
|
|
258
|
+
}
|
|
230
259
|
|
|
231
260
|
const sanityJson = await readJson5File<SanityStudioJson>({basePath, filename: 'sanity.json'})
|
|
232
261
|
|
|
233
|
-
const
|
|
234
|
-
|
|
262
|
+
const hasConfigFile = (fileBase: string) =>
|
|
263
|
+
withSuffix([fileBase]).some((filename) => files[filename])
|
|
264
|
+
const hasCliConfig = hasConfigFile('sanity.cli')
|
|
265
|
+
const hasStudioConfig = hasConfigFile('sanity.config')
|
|
235
266
|
|
|
236
267
|
const errors: string[] = []
|
|
237
268
|
|
|
@@ -257,7 +288,9 @@ export async function validateStudioConfig({basePath}: {basePath: string}): Prom
|
|
|
257
288
|
if (!hasCliConfig) {
|
|
258
289
|
errors.push(
|
|
259
290
|
outdent`
|
|
260
|
-
sanity.cli.
|
|
291
|
+
sanity.cli.(${suffixes.join(
|
|
292
|
+
' | '
|
|
293
|
+
)}) missing. Please create a file named sanity.cli.ts with the following content:
|
|
261
294
|
|
|
262
295
|
${chalk.green(
|
|
263
296
|
outdent`
|
|
@@ -281,12 +314,14 @@ export async function validateStudioConfig({basePath}: {basePath: string}): Prom
|
|
|
281
314
|
if (!hasStudioConfig) {
|
|
282
315
|
errors.push(
|
|
283
316
|
outdent`
|
|
284
|
-
sanity.config.
|
|
317
|
+
sanity.config.(${suffixes.join(
|
|
318
|
+
' | '
|
|
319
|
+
)}) missing. At a minimum sanity.config.ts should contain:
|
|
285
320
|
|
|
286
321
|
${chalk
|
|
287
322
|
.green(
|
|
288
323
|
outdent`
|
|
289
|
-
import { createConfig
|
|
324
|
+
import { createConfig } from "sanity"
|
|
290
325
|
import { deskTool } from "sanity/desk"
|
|
291
326
|
|
|
292
327
|
export default createConfig({
|
|
@@ -315,7 +350,7 @@ export async function validateStudioConfig({basePath}: {basePath: string}): Prom
|
|
|
315
350
|
)
|
|
316
351
|
}
|
|
317
352
|
|
|
318
|
-
return [errors.join(`\n\n---\n\n`)]
|
|
353
|
+
return errors.length ? [errors.join(`\n\n---\n\n`)] : []
|
|
319
354
|
}
|
|
320
355
|
|
|
321
356
|
export async function validatePluginSanityJson({
|
|
@@ -18,9 +18,10 @@ import {
|
|
|
18
18
|
validateParcelDependency,
|
|
19
19
|
validatePluginSanityJson,
|
|
20
20
|
validateRollupConfig,
|
|
21
|
-
|
|
21
|
+
validateDeprecatedDependencies,
|
|
22
22
|
validateScripts,
|
|
23
23
|
validateTsConfig,
|
|
24
|
+
validateSanityDependencies,
|
|
24
25
|
} from './verify/validations'
|
|
25
26
|
import {PackageJson, TsConfig} from './verify/types'
|
|
26
27
|
import chalk from 'chalk'
|
|
@@ -49,6 +50,7 @@ export async function verifyPackage({basePath, flags}: {basePath: string; flags:
|
|
|
49
50
|
await validation('babelConfig', async () => validateBabelConfig({basePath}))
|
|
50
51
|
|
|
51
52
|
await validation('dependencies', async () => validateSanityDependencies(packageJson))
|
|
53
|
+
await validation('dependencies', async () => validateDeprecatedDependencies(packageJson))
|
|
52
54
|
await validation('eslintImports', async () => validateImports({basePath}))
|
|
53
55
|
|
|
54
56
|
if (errors.length) {
|
|
@@ -12,7 +12,11 @@ import {
|
|
|
12
12
|
VerifyPackageConfig,
|
|
13
13
|
} from './verify/verify-common'
|
|
14
14
|
import {PackageJson, TsConfig} from './verify/types'
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
validateDeprecatedDependencies,
|
|
17
|
+
validateSanityDependencies,
|
|
18
|
+
validateStudioConfig,
|
|
19
|
+
} from './verify/validations'
|
|
16
20
|
|
|
17
21
|
export async function verifyStudio({basePath, flags}: {basePath: string; flags: VerifyFlags}) {
|
|
18
22
|
let errors: string[] = []
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const forcedPackageVersions = {
|
|
2
|
+
react: '^18.0.0',
|
|
3
|
+
'@types/react': '^18.0.0',
|
|
4
|
+
'react-dom': '^18.0.0',
|
|
5
|
+
'@types/react-dom': '^18.0.0',
|
|
6
|
+
sanity: 'dev-preview || 3.0.0-dev-preview.22',
|
|
7
|
+
'sanity-ui': '^1.0.0-beta.31',
|
|
8
|
+
|
|
9
|
+
//TODO delete both of these when we ditch parcel
|
|
10
|
+
parcel: '~2.6.0',
|
|
11
|
+
typescript: '~4.7.0',
|
|
12
|
+
} as const
|
package/src/npm/package.ts
CHANGED
|
@@ -13,6 +13,7 @@ import {cliName} from '../constants'
|
|
|
13
13
|
import {InjectOptions, PackageData} from '../actions/inject'
|
|
14
14
|
import {expectedScripts} from '../actions/verify/validations'
|
|
15
15
|
import {PackageJson} from '../actions/verify/types'
|
|
16
|
+
import {forcedPackageVersions} from '../configs/forced-package-versions'
|
|
16
17
|
|
|
17
18
|
const readFile = util.promisify(fs.readFile)
|
|
18
19
|
|
|
@@ -223,13 +224,17 @@ export async function writePackageJson(data: PackageData, options: InjectOptions
|
|
|
223
224
|
}
|
|
224
225
|
|
|
225
226
|
log.debug('Resolving latest versions for %s', newDevDependencies.join(', '))
|
|
226
|
-
const dependencies = {...(prev.dependencies || {}), ...(addDeps || {})}
|
|
227
|
-
const devDependencies = {
|
|
227
|
+
const dependencies = forceDependencyVersions({...(prev.dependencies || {}), ...(addDeps || {})})
|
|
228
|
+
const devDependencies = forceDependencyVersions({
|
|
228
229
|
...(addDevDeps || {}),
|
|
229
230
|
...(prev.devDependencies || {}),
|
|
230
231
|
...(await resolveLatestVersions(newDevDependencies)),
|
|
231
|
-
}
|
|
232
|
-
|
|
232
|
+
})
|
|
233
|
+
console.log(devDependencies)
|
|
234
|
+
const peerDependencies = forceDependencyVersions({
|
|
235
|
+
...(prev.peerDependencies || {}),
|
|
236
|
+
...(addPeers || {}),
|
|
237
|
+
})
|
|
233
238
|
|
|
234
239
|
const alwaysOnTop = {
|
|
235
240
|
name: pluginName,
|
|
@@ -241,6 +246,9 @@ export async function writePackageJson(data: PackageData, options: InjectOptions
|
|
|
241
246
|
|
|
242
247
|
const manifest: PackageJson = {
|
|
243
248
|
...alwaysOnTop,
|
|
249
|
+
// Use already configured values by default
|
|
250
|
+
...(prev || {}),
|
|
251
|
+
// but we override these to enforce standardization
|
|
244
252
|
source: flags.typescript ? './src/index.ts' : './src/index.js',
|
|
245
253
|
main: './lib/cjs/index.js',
|
|
246
254
|
module: './lib/esm/index.js',
|
|
@@ -252,14 +260,11 @@ export async function writePackageJson(data: PackageData, options: InjectOptions
|
|
|
252
260
|
},
|
|
253
261
|
},
|
|
254
262
|
files: ['src', 'lib', 'v2-incompatible.js', 'sanity.json'],
|
|
255
|
-
scripts: {},
|
|
256
|
-
repository: {},
|
|
257
263
|
engines: {
|
|
258
264
|
node: '>=14.0.0',
|
|
259
265
|
},
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
...(prev || {}),
|
|
266
|
+
scripts: {...prev.scripts},
|
|
267
|
+
repository: {...prev.repository},
|
|
263
268
|
|
|
264
269
|
// We're de-declaring properties because of key order in package.json
|
|
265
270
|
...alwaysOnTop,
|
|
@@ -272,6 +277,9 @@ export async function writePackageJson(data: PackageData, options: InjectOptions
|
|
|
272
277
|
...urlsFromOrigin(gitOrigin),
|
|
273
278
|
}
|
|
274
279
|
|
|
280
|
+
// we use types, not typings
|
|
281
|
+
delete manifest.typings
|
|
282
|
+
|
|
275
283
|
const differs = JSON.stringify(prev) !== JSON.stringify(manifest)
|
|
276
284
|
log.debug('Does manifest differ? %s', differs ? 'yes' : 'no')
|
|
277
285
|
if (differs) {
|
|
@@ -313,7 +321,7 @@ export function addScript(cmd: string, existing: string) {
|
|
|
313
321
|
return existing
|
|
314
322
|
}
|
|
315
323
|
|
|
316
|
-
return
|
|
324
|
+
return cmd
|
|
317
325
|
}
|
|
318
326
|
|
|
319
327
|
export async function addPackageJsonScripts(
|
|
@@ -362,3 +370,15 @@ export function sortKeys<T extends Record<string, unknown>>(unordered: T): T {
|
|
|
362
370
|
return obj
|
|
363
371
|
}, {} as T)
|
|
364
372
|
}
|
|
373
|
+
|
|
374
|
+
function forceDependencyVersions(deps: Record<string, string>): Record<string, string> {
|
|
375
|
+
const entries = Object.entries(deps).map((entry) => {
|
|
376
|
+
const [pkg] = entry
|
|
377
|
+
const forceVersion = forcedPackageVersions[pkg as keyof typeof forcedPackageVersions]
|
|
378
|
+
if (forceVersion) {
|
|
379
|
+
return [pkg, forceVersion]
|
|
380
|
+
}
|
|
381
|
+
return entry
|
|
382
|
+
})
|
|
383
|
+
return Object.fromEntries(entries)
|
|
384
|
+
}
|
package/src/presets/presets.ts
CHANGED
|
@@ -9,7 +9,7 @@ export interface Preset {
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
const presets: Preset[] = [semverWorkflowPreset, renovatePreset]
|
|
12
|
-
const presetNames = presets.map((p) => p
|
|
12
|
+
const presetNames = presets.map((p) => p?.name)
|
|
13
13
|
|
|
14
14
|
export function presetHelpList(padStart: number) {
|
|
15
15
|
return presets
|