@sanity/plugin-kit 1.1.0-ecosystem-preset.4 → 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.
Files changed (45) hide show
  1. package/assets/inject/semver-workflow/.github/workflows/main.yml +1 -1
  2. package/lib/package.json +5 -5
  3. package/lib/src/actions/init.js +9 -2
  4. package/lib/src/actions/init.js.map +1 -1
  5. package/lib/src/actions/verify/validations.d.ts +1 -0
  6. package/lib/src/actions/verify/validations.js +38 -15
  7. package/lib/src/actions/verify/validations.js.map +1 -1
  8. package/lib/src/actions/verify-package.js +1 -0
  9. package/lib/src/actions/verify-package.js.map +1 -1
  10. package/lib/src/actions/verify-studio.js.map +1 -1
  11. package/lib/src/configs/banned-packages.d.ts +2 -0
  12. package/lib/src/configs/{merged-packages.js → banned-packages.js} +3 -2
  13. package/lib/src/configs/{merged-packages.js.map → banned-packages.js.map} +1 -1
  14. package/lib/src/configs/forced-package-versions.d.ts +10 -0
  15. package/lib/src/configs/forced-package-versions.js +15 -0
  16. package/lib/src/configs/forced-package-versions.js.map +1 -0
  17. package/lib/src/dependencies/import-linter.js +2 -2
  18. package/lib/src/npm/package.js +24 -7
  19. package/lib/src/npm/package.js.map +1 -1
  20. package/lib/src/presets/presets.js +1 -1
  21. package/lib/src/presets/presets.js.map +1 -1
  22. package/lib/src/presets/semver-workflow.d.ts +2 -0
  23. package/lib/src/presets/semver-workflow.js +87 -4
  24. package/lib/src/presets/semver-workflow.js.map +1 -1
  25. package/lib/test/semver-workflow.test.d.ts +1 -0
  26. package/lib/test/semver-workflow.test.js +42 -0
  27. package/lib/test/semver-workflow.test.js.map +1 -0
  28. package/lib/test/verify-package.test.js +1 -1
  29. package/lib/test/verify-package.test.js.map +1 -1
  30. package/package.json +5 -5
  31. package/src/actions/init.ts +9 -2
  32. package/src/actions/verify/validations.ts +48 -13
  33. package/src/actions/verify-package.ts +3 -1
  34. package/src/actions/verify-studio.ts +5 -1
  35. package/src/configs/{merged-packages.ts → banned-packages.ts} +2 -0
  36. package/src/configs/forced-package-versions.ts +12 -0
  37. package/src/dependencies/import-linter.ts +1 -1
  38. package/src/npm/package.ts +30 -10
  39. package/src/presets/presets.ts +1 -1
  40. package/src/presets/semver-workflow.ts +90 -4
  41. package/lib/src/actions/verify.d.ts +0 -0
  42. package/lib/src/actions/verify.js +0 -330
  43. package/lib/src/actions/verify.js.map +0 -1
  44. package/lib/src/configs/merged-packages.d.ts +0 -1
  45. 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,12 +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.
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.
57
63
  `.trim()));
58
64
  });
59
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
+ }
60
133
  function semverWorkflowFiles() {
61
134
  return [
62
135
  { from: ['.github', 'workflows', 'main.yml'], to: ['.github', 'workflows', 'main.yml'] },
@@ -78,4 +151,14 @@ function semverWorkflowDependencies() {
78
151
  ]);
79
152
  });
80
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;
81
164
  //# sourceMappingURL=semver-workflow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"semver-workflow.js","sourceRoot":"","sources":["../../../src/presets/semver-workflow.ts"],"names":[],"mappings":"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"}
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":";;;;;;;;;;;;;;AAAA,8CAAqB;AACrB,mDAA0D;AAC1D,uEAA+E;AAE/E,aAAG,CAAC,IAAI,CAAC,8DAA8D,EAAE,CAAO,CAAC,EAAE,EAAE;IACnF,MAAM,IAAA,2BAAW,EAAC;QAChB,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,IAAA,6BAAa,EAAC,gBAAgB,EAAE,CAAC,UAAU,CAAC,CAAC;QACxE,MAAM,EAAE,CAAO,EAAC,MAAM,EAAE,EAAC,MAAM,EAAC,EAAC,EAAE,EAAE;YACnC,MAAM,eAAe,GAAG,aAAa,CACnC,MAAM,EACN,gDAAgD,CACjD,CAAA;YAED,+CAA+C;YAC/C,6CAA6C;YAC7C,CAAC,CAAC,aAAa,CAAC,eAAe,EAAE,8BAA8B,CAAC,CAAA;YAEhE,iGAAiG;YACjG,iFAAiF;YACjF,MAAM,CAAC,IAAI,CAAC,2CAA2B,CAAC;iBACrC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;iBACvD,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACpB,MAAM,UAAU,GAAG,IAAI,QAAQ,UAAU,CAAA;gBACzC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,UAAU,YAAY,CAAC,CAAA;YAC7E,CAAC,CAAC,CAAA;QACN,CAAC,CAAA;KACF,CAAC,CAAA;AACJ,CAAC,CAAA,CAAC,CAAA;AAEF,aAAG,CAAC,IAAI,CAAC,yCAAyC,EAAE,CAAO,CAAC,EAAE,EAAE;IAC9D,MAAM,IAAA,2BAAW,EAAC;QAChB,WAAW,EAAE,sBAAsB;QACnC,OAAO,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,IAAA,6BAAa,EAAC,gBAAgB,EAAE,CAAC,UAAU,CAAC,CAAC;QACxE,MAAM,EAAE,CAAO,EAAC,MAAM,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,EAAC,EAAE,EAAE;YAC3C,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,wBAAwB,CAAC,CAAA;YAE7C,+CAA+C;YAC/C,6CAA6C;YAC7C,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAA;YAC9E,CAAC,CAAC,aAAa,CAAC,eAAe,EAAE,8BAA8B,CAAC,CAAA;QAClE,CAAC,CAAA;KACF,CAAC,CAAA;AACJ,CAAC,CAAA,CAAC,CAAA;AAEF,aAAG,CAAC,IAAI,CAAC,iEAAiE,EAAE,CAAO,CAAC,EAAE,EAAE;IACtF,MAAM,IAAA,2BAAW,EAAC;QAChB,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,IAAA,6BAAa,EAAC,gBAAgB,EAAE,CAAC,UAAU,CAAC,CAAC;QACxE,MAAM,EAAE,CAAO,EAAC,MAAM,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,EAAE,SAAS,EAAC,EAAE,EAAE;YACtD,+CAA+C;YAC/C,6CAA6C;YAC7C,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,EAAE,wCAAwC,CAAC,CAAA;YACvF,CAAC,CAAC,aAAa,CAAC,eAAe,EAAE,8BAA8B,CAAC,CAAA;QAClE,CAAC,CAAA;KACF,CAAC,CAAA;AACJ,CAAC,CAAA,CAAC,CAAA;AAEF,aAAG,CAAC,IAAI,CAAC,6CAA6C,EAAE,CAAO,CAAC,EAAE,EAAE;IAClE,MAAM,IAAA,2BAAW,EAAC;QAChB,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,IAAA,6BAAa,EAAC,eAAe,EAAE,CAAC,UAAU,CAAC,CAAC;QACvE,MAAM,EAAE,CAAO,EAAC,MAAM,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,EAAC,EAAE,EAAE;YAC3C,+CAA+C;YAC/C,8CAA8C;YAC9C,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,EAAE,+CAA+C,CAAC,CAAA;YAC9F,CAAC,CAAC,aAAa,CAAC,eAAe,EAAE,8BAA8B,CAAC,CAAA;QAClE,CAAC,CAAA;KACF,CAAC,CAAA;AACJ,CAAC,CAAA,CAAC,CAAA;AAEF,SAAS,aAAa,CAAC,GAAW,EAAE,WAAmB;IACrD,OAAO,GAAG;SACP,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC;SAC7B,OAAO,CAAC,yBAAyB,EAAE,oBAAoB,CAAC;SACxD,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAC5B,CAAC"}
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.4",
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": "^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,
@@ -68,8 +69,14 @@ export type InitFlags = TypedFlags<typeof initFlags>
68
69
 
69
70
  const defaultDependencies = [incompatiblePluginPackage]
70
71
 
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'}
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/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'
@@ -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
- const peerDependencies = {...(prev.peerDependencies || {}), ...(addPeers || {})}
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
- // Use already configured values by default
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 existing ? `${existing} && ${cmd}` : cmd
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
+ }
@@ -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