@sanity/plugin-kit 1.1.0-ecosystem-preset.5 → 1.1.0-ecosystem-preset.7

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 (44) hide show
  1. package/lib/package.json +5 -5
  2. package/lib/src/actions/init.js +0 -8
  3. package/lib/src/actions/init.js.map +1 -1
  4. package/lib/src/actions/verify/validations.d.ts +1 -0
  5. package/lib/src/actions/verify/validations.js +38 -15
  6. package/lib/src/actions/verify/validations.js.map +1 -1
  7. package/lib/src/actions/verify-package.js +1 -0
  8. package/lib/src/actions/verify-package.js.map +1 -1
  9. package/lib/src/actions/verify-studio.js.map +1 -1
  10. package/lib/src/configs/banned-packages.d.ts +2 -0
  11. package/lib/src/configs/{merged-packages.js → banned-packages.js} +3 -2
  12. package/lib/src/configs/{merged-packages.js.map → banned-packages.js.map} +1 -1
  13. package/lib/src/configs/forced-package-versions.d.ts +10 -0
  14. package/lib/src/configs/forced-package-versions.js +15 -0
  15. package/lib/src/configs/forced-package-versions.js.map +1 -0
  16. package/lib/src/dependencies/import-linter.js +2 -2
  17. package/lib/src/npm/package.js +26 -7
  18. package/lib/src/npm/package.js.map +1 -1
  19. package/lib/src/presets/presets.js +1 -1
  20. package/lib/src/presets/presets.js.map +1 -1
  21. package/lib/src/presets/semver-workflow.d.ts +2 -0
  22. package/lib/src/presets/semver-workflow.js +86 -6
  23. package/lib/src/presets/semver-workflow.js.map +1 -1
  24. package/lib/test/semver-workflow.test.d.ts +1 -0
  25. package/lib/test/semver-workflow.test.js +42 -0
  26. package/lib/test/semver-workflow.test.js.map +1 -0
  27. package/lib/test/verify-package.test.js +1 -1
  28. package/lib/test/verify-package.test.js.map +1 -1
  29. package/package.json +5 -5
  30. package/src/actions/init.ts +1 -16
  31. package/src/actions/verify/validations.ts +48 -13
  32. package/src/actions/verify-package.ts +3 -1
  33. package/src/actions/verify-studio.ts +5 -1
  34. package/src/configs/{merged-packages.ts → banned-packages.ts} +2 -0
  35. package/src/configs/forced-package-versions.ts +12 -0
  36. package/src/dependencies/import-linter.ts +1 -1
  37. package/src/npm/package.ts +41 -12
  38. package/src/presets/presets.ts +1 -1
  39. package/src/presets/semver-workflow.ts +89 -6
  40. package/lib/src/actions/verify.d.ts +0 -0
  41. package/lib/src/actions/verify.js +0 -330
  42. package/lib/src/actions/verify.js.map +0 -1
  43. package/lib/src/configs/merged-packages.d.ts +0 -1
  44. 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
- You must configure branch-config in the following files manually:
55
- - .release.json
56
- - .github/workflows/main.yml
58
+ semantic-release preset injected.
57
59
 
58
- You should remove the --dry-run from main.yml only after you have tested the workflow,
59
- and the semantic-release job reports the version number you expect.
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,4CAOuB;AACvB,sDAA6B;AAC7B,sDAA6B;AAC7B,kDAAyB;AAEZ,QAAA,oBAAoB,GAAW;IAC1C,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,wFAAwF;IAC1F,KAAK,EAAE,WAAW;CACnB,CAAA;AAED,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,GAAW,EAAE,GAAG,IAAc,EAAE,EAAE,CAAC,KAAK,IAAI,aAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;AAEhG,SAAe,WAAW,CAAC,OAAsB;;QAC/C,MAAM,IAAA,oBAAW,EAAC,mBAAmB,EAAE,EAAE,OAAO,CAAC,CAAA;QACjD,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAC/B,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC;CAAA;AAED,SAAe,gBAAgB,CAAC,OAAsB;;QACpD,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAA;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAA,+BAAqB,EAAC,GAAG,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;YACrE,OAAO,CAAC,OAAO,GAAG,IAAA,mBAAS,EAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;YAC7D,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,EAAE,sCAAsC,CAAC,CAAA;IACxD,CAAC;CAAA;AAED,SAAe,kBAAkB,CAAC,OAAsB;;QACtD,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAA;QACrC,MAAM,OAAO,GAAG,IAAA,kBAAQ,kCACnB,GAAG,CAAC,eAAe,GACnB,CAAC,MAAM,0BAA0B,EAAE,CAAC,EACvC,CAAA;QACF,MAAM,MAAM,qBAAO,GAAG,CAAC,CAAA;QACvB,MAAM,CAAC,eAAe,GAAG,OAAO,CAAA;QAChC,MAAM,IAAA,gCAAsB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC7C,aAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QAEpC,aAAG,CAAC,IAAI,CACN,eAAK,CAAC,KAAK,CACT,IAAA,iBAAO,EAAA;;;;;;;GAOV,CAAC,IAAI,EAAE,CACL,CACF,CAAA;IACH,CAAC;CAAA;AAED,SAAS,mBAAmB;IAC1B,OAAO;QACL,EAAC,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,EAAC;QACtF,EAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAC;QAC9D,EAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAC;QAC9D,EAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,iBAAiB,EAAC;QAClD,EAAC,IAAI,EAAE,CAAC,wBAAwB,CAAC,EAAE,EAAE,EAAE,sBAAsB,EAAC;QAC9D,EAAC,IAAI,EAAE,CAAC,yBAAyB,CAAC,EAAE,EAAE,EAAE,uBAAuB,EAAC;KACjE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iCACb,MAAM,KACT,IAAI,EAAE,CAAC,iBAAiB,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IACzC,CAAC,CAAA;AACL,CAAC;AAED,SAAe,0BAA0B;;QACvC,OAAO,IAAA,6CAAqB,EAAC;YAC3B,iBAAiB;YACjB,iCAAiC;YACjC,iCAAiC;YACjC,OAAO;YACP,aAAa;SACd,CAAC,CAAA;IACJ,CAAC;CAAA"}
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-packag'e.test.ts --snapshot
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.5",
3
+ "version": "1.1.0-ecosystem-preset.7",
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": "^5.1.0",
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": "^12.5.0",
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.15",
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",
@@ -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,
@@ -66,11 +67,6 @@ export const initFlags = {
66
67
 
67
68
  export type InitFlags = TypedFlags<typeof initFlags>
68
69
 
69
- const defaultDependencies = [incompatiblePluginPackage]
70
-
71
- const defaultDevDependencies = {react: '^17.0.0 || ^18.0.0', sanity: '^3.0.0-dev-preview.15'}
72
- const defaultPeerDependencies = {react: '^17.0.0 || ^18.0.0', sanity: 'dev-preview'}
73
-
74
70
  export interface InitOptions {
75
71
  basePath: string
76
72
  flags: InitFlags
@@ -81,17 +77,6 @@ export async function init(options: InitOptions) {
81
77
  let devDependencies = {}
82
78
  let peerDependencies = {}
83
79
 
84
- dependencies = {...dependencies, ...(await resolveLatestVersions(defaultDependencies))}
85
- devDependencies = {
86
- ...devDependencies,
87
- ...defaultDevDependencies,
88
- ...(await resolveLatestVersions(['rimraf'])),
89
- }
90
- peerDependencies = {
91
- ...peerDependencies,
92
- ...defaultPeerDependencies,
93
- }
94
-
95
80
  await inject({
96
81
  ...options,
97
82
  requireUserConfirmation: !options.flags.force,
@@ -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/merged-packages'
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 filenames = ['sanity.config.ts', 'sanity.config.js', 'sanity.cli.ts', 'sanity.cli.js']
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 = await filenames.reduce(async (record, filename) => {
226
- // @ts-expect-error it works though
227
- record[filename] = await readFileContent({basePath, filename})
228
- return record
229
- }, Promise.resolve({} as Record<string, string | undefined>))
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 hasCliConfig = files['sanity.cli.ts'] || files['sanity.cli.js']
234
- const hasStudioConfig = files['sanity.config.ts'] || files['sanity.config.js']
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.ts (or .js) missing. Please create a file named sanity.cli.ts with the following content:
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.ts (or .js) missing. At a minimum sanity.config.ts should contain:
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, createPlugin } from "sanity"
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
- validateSanityDependencies,
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 {validateSanityDependencies, validateStudioConfig} from './verify/validations'
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[] = []
@@ -17,3 +17,5 @@ export const mergedPackages = [
17
17
  '@sanity/structure',
18
18
  '@sanity/studio-hints',
19
19
  ].sort()
20
+
21
+ export const deprecatedDevDeps = ['tsdx', 'sanipack']
@@ -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
@@ -1,5 +1,5 @@
1
1
  import log from '../util/log'
2
- import {mergedPackages} from '../configs/merged-packages'
2
+ import {mergedPackages} from '../configs/banned-packages'
3
3
  import {urls} from '../constants'
4
4
  import {ESLint} from 'eslint'
5
5
  import path from 'path'
@@ -9,10 +9,16 @@ import {getPaths, ManifestOptions} from '../sanity/manifest'
9
9
  import {resolveLatestVersions} from './resolveLatestVersions'
10
10
  import {hasSourceEquivalent, writeJsonFile} from '../util/files'
11
11
  import log from '../util/log'
12
- import {cliName} from '../constants'
12
+ import {cliName, incompatiblePluginPackage} 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'
17
+
18
+ const defaultDependencies = [incompatiblePluginPackage]
19
+
20
+ const defaultDevDependencies = ['rimraf', 'react', 'sanity']
21
+ const defaultPeerDependencies = ['react', 'sanity']
16
22
 
17
23
  const readFile = util.promisify(fs.readFile)
18
24
 
@@ -223,13 +229,21 @@ export async function writePackageJson(data: PackageData, options: InjectOptions
223
229
  }
224
230
 
225
231
  log.debug('Resolving latest versions for %s', newDevDependencies.join(', '))
226
- const dependencies = {...(prev.dependencies || {}), ...(addDeps || {})}
227
- const devDependencies = {
232
+ const dependencies = forceDependencyVersions({
233
+ ...(prev.dependencies || {}),
234
+ ...(addDeps || {}),
235
+ ...(await resolveLatestVersions(defaultDependencies)),
236
+ })
237
+ const devDependencies = forceDependencyVersions({
228
238
  ...(addDevDeps || {}),
229
239
  ...(prev.devDependencies || {}),
230
- ...(await resolveLatestVersions(newDevDependencies)),
231
- }
232
- const peerDependencies = {...(prev.peerDependencies || {}), ...(addPeers || {})}
240
+ ...(await resolveLatestVersions([...newDevDependencies, ...defaultDevDependencies])),
241
+ })
242
+ const peerDependencies = forceDependencyVersions({
243
+ ...(prev.peerDependencies || {}),
244
+ ...(addPeers || {}),
245
+ ...(await resolveLatestVersions(defaultPeerDependencies)),
246
+ })
233
247
 
234
248
  const alwaysOnTop = {
235
249
  name: pluginName,
@@ -241,6 +255,9 @@ export async function writePackageJson(data: PackageData, options: InjectOptions
241
255
 
242
256
  const manifest: PackageJson = {
243
257
  ...alwaysOnTop,
258
+ // Use already configured values by default
259
+ ...(prev || {}),
260
+ // but we override these to enforce standardization
244
261
  source: flags.typescript ? './src/index.ts' : './src/index.js',
245
262
  main: './lib/cjs/index.js',
246
263
  module: './lib/esm/index.js',
@@ -252,14 +269,11 @@ export async function writePackageJson(data: PackageData, options: InjectOptions
252
269
  },
253
270
  },
254
271
  files: ['src', 'lib', 'v2-incompatible.js', 'sanity.json'],
255
- scripts: {},
256
- repository: {},
257
272
  engines: {
258
273
  node: '>=14.0.0',
259
274
  },
260
-
261
- // Use already configured values by default
262
- ...(prev || {}),
275
+ scripts: {...prev.scripts},
276
+ repository: {...prev.repository},
263
277
 
264
278
  // We're de-declaring properties because of key order in package.json
265
279
  ...alwaysOnTop,
@@ -272,6 +286,9 @@ export async function writePackageJson(data: PackageData, options: InjectOptions
272
286
  ...urlsFromOrigin(gitOrigin),
273
287
  }
274
288
 
289
+ // we use types, not typings
290
+ delete manifest.typings
291
+
275
292
  const differs = JSON.stringify(prev) !== JSON.stringify(manifest)
276
293
  log.debug('Does manifest differ? %s', differs ? 'yes' : 'no')
277
294
  if (differs) {
@@ -313,7 +330,7 @@ export function addScript(cmd: string, existing: string) {
313
330
  return existing
314
331
  }
315
332
 
316
- return existing ? `${existing} && ${cmd}` : cmd
333
+ return cmd
317
334
  }
318
335
 
319
336
  export async function addPackageJsonScripts(
@@ -362,3 +379,15 @@ export function sortKeys<T extends Record<string, unknown>>(unordered: T): T {
362
379
  return obj
363
380
  }, {} as T)
364
381
  }
382
+
383
+ function forceDependencyVersions(deps: Record<string, string>): Record<string, string> {
384
+ const entries = Object.entries(deps).map((entry) => {
385
+ const [pkg] = entry
386
+ const forceVersion = forcedPackageVersions[pkg as keyof typeof forcedPackageVersions]
387
+ if (forceVersion) {
388
+ return [pkg, forceVersion]
389
+ }
390
+ return entry
391
+ })
392
+ return Object.fromEntries(entries)
393
+ }
@@ -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.name)
12
+ const presetNames = presets.map((p) => p?.name)
13
13
 
14
14
  export function presetHelpList(padStart: number) {
15
15
  return presets