@sanity/plugin-kit 0.0.1-studio-v3.1

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 (194) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +398 -0
  3. package/assets/splat/LICENSE +21 -0
  4. package/assets/splat/editorconfig +13 -0
  5. package/assets/splat/eslint.config.js +5 -0
  6. package/assets/splat/gitignore +55 -0
  7. package/assets/splat/npmignore +9 -0
  8. package/assets/splat/prettierrc.js +6 -0
  9. package/assets/splat/sanity.json +8 -0
  10. package/assets/splat/template-tsconfig.json +23 -0
  11. package/assets/splat/v2-incompatible.js.template +11 -0
  12. package/lib/package.json +127 -0
  13. package/lib/src/actions/init.d.ts +65 -0
  14. package/lib/src/actions/init.js +83 -0
  15. package/lib/src/actions/init.js.map +1 -0
  16. package/lib/src/actions/link-watch.d.ts +3 -0
  17. package/lib/src/actions/link-watch.js +69 -0
  18. package/lib/src/actions/link-watch.js.map +1 -0
  19. package/lib/src/actions/splat.d.ts +26 -0
  20. package/lib/src/actions/splat.js +296 -0
  21. package/lib/src/actions/splat.js.map +1 -0
  22. package/lib/src/actions/verify/types.d.ts +77 -0
  23. package/lib/src/actions/verify/types.js +3 -0
  24. package/lib/src/actions/verify/types.js.map +1 -0
  25. package/lib/src/actions/verify/validations.d.ts +28 -0
  26. package/lib/src/actions/verify/validations.js +379 -0
  27. package/lib/src/actions/verify/validations.js.map +1 -0
  28. package/lib/src/actions/verify/verify-common.d.ts +43 -0
  29. package/lib/src/actions/verify/verify-common.js +88 -0
  30. package/lib/src/actions/verify/verify-common.js.map +1 -0
  31. package/lib/src/actions/verify-package.d.ts +5 -0
  32. package/lib/src/actions/verify-package.js +72 -0
  33. package/lib/src/actions/verify-package.js.map +1 -0
  34. package/lib/src/actions/verify-studio.d.ts +5 -0
  35. package/lib/src/actions/verify-studio.js +55 -0
  36. package/lib/src/actions/verify-studio.js.map +1 -0
  37. package/lib/src/actions/verify.d.ts +0 -0
  38. package/lib/src/actions/verify.js +330 -0
  39. package/lib/src/actions/verify.js.map +1 -0
  40. package/lib/src/cli.d.ts +2 -0
  41. package/lib/src/cli.js +86 -0
  42. package/lib/src/cli.js.map +1 -0
  43. package/lib/src/cmds/index.d.ts +8 -0
  44. package/lib/src/cmds/index.js +12 -0
  45. package/lib/src/cmds/index.js.map +1 -0
  46. package/lib/src/cmds/init.d.ts +4 -0
  47. package/lib/src/cmds/init.js +90 -0
  48. package/lib/src/cmds/init.js.map +1 -0
  49. package/lib/src/cmds/link-watch.d.ts +4 -0
  50. package/lib/src/cmds/link-watch.js +49 -0
  51. package/lib/src/cmds/link-watch.js.map +1 -0
  52. package/lib/src/cmds/splat.d.ts +4 -0
  53. package/lib/src/cmds/splat.js +63 -0
  54. package/lib/src/cmds/splat.js.map +1 -0
  55. package/lib/src/cmds/verify-package.d.ts +4 -0
  56. package/lib/src/cmds/verify-package.js +38 -0
  57. package/lib/src/cmds/verify-package.js.map +1 -0
  58. package/lib/src/cmds/verify-studio.d.ts +4 -0
  59. package/lib/src/cmds/verify-studio.js +38 -0
  60. package/lib/src/cmds/verify-studio.js.map +1 -0
  61. package/lib/src/cmds/verify.d.ts +0 -0
  62. package/lib/src/cmds/verify.js +42 -0
  63. package/lib/src/cmds/verify.js.map +1 -0
  64. package/lib/src/cmds/version.d.ts +4 -0
  65. package/lib/src/cmds/version.js +55 -0
  66. package/lib/src/cmds/version.js.map +1 -0
  67. package/lib/src/configs/buildExtensions.d.ts +1 -0
  68. package/lib/src/configs/buildExtensions.js +5 -0
  69. package/lib/src/configs/buildExtensions.js.map +1 -0
  70. package/lib/src/configs/default-source.d.ts +3 -0
  71. package/lib/src/configs/default-source.js +70 -0
  72. package/lib/src/configs/default-source.js.map +1 -0
  73. package/lib/src/configs/merged-packages.d.ts +1 -0
  74. package/lib/src/configs/merged-packages.js +24 -0
  75. package/lib/src/configs/merged-packages.js.map +1 -0
  76. package/lib/src/configs/uselessFiles.d.ts +1 -0
  77. package/lib/src/configs/uselessFiles.js +33 -0
  78. package/lib/src/configs/uselessFiles.js.map +1 -0
  79. package/lib/src/constants.d.ts +11 -0
  80. package/lib/src/constants.js +15 -0
  81. package/lib/src/constants.js.map +1 -0
  82. package/lib/src/dependencies/find.d.ts +0 -0
  83. package/lib/src/dependencies/find.js +195 -0
  84. package/lib/src/dependencies/find.js.map +1 -0
  85. package/lib/src/dependencies/import-linter.d.ts +3 -0
  86. package/lib/src/dependencies/import-linter.js +112 -0
  87. package/lib/src/dependencies/import-linter.js.map +1 -0
  88. package/lib/src/index.d.ts +2 -0
  89. package/lib/src/index.js +6 -0
  90. package/lib/src/index.js.map +1 -0
  91. package/lib/src/npm/manager.d.ts +7 -0
  92. package/lib/src/npm/manager.js +62 -0
  93. package/lib/src/npm/manager.js.map +1 -0
  94. package/lib/src/npm/package.d.ts +8 -0
  95. package/lib/src/npm/package.js +288 -0
  96. package/lib/src/npm/package.js.map +1 -0
  97. package/lib/src/npm/publish.d.ts +1 -0
  98. package/lib/src/npm/publish.js +14 -0
  99. package/lib/src/npm/publish.js.map +1 -0
  100. package/lib/src/npm/resolveLatestVersions.d.ts +3 -0
  101. package/lib/src/npm/resolveLatestVersions.js +35 -0
  102. package/lib/src/npm/resolveLatestVersions.js.map +1 -0
  103. package/lib/src/sanity/manifest.d.ts +48 -0
  104. package/lib/src/sanity/manifest.js +263 -0
  105. package/lib/src/sanity/manifest.js.map +1 -0
  106. package/lib/src/sharedFlags.d.ts +15 -0
  107. package/lib/src/sharedFlags.js +17 -0
  108. package/lib/src/sharedFlags.js.map +1 -0
  109. package/lib/src/util/command-parser.d.ts +9 -0
  110. package/lib/src/util/command-parser.js +41 -0
  111. package/lib/src/util/command-parser.js.map +1 -0
  112. package/lib/src/util/errorToUndefined.d.ts +1 -0
  113. package/lib/src/util/errorToUndefined.js +11 -0
  114. package/lib/src/util/errorToUndefined.js.map +1 -0
  115. package/lib/src/util/files.d.ts +36 -0
  116. package/lib/src/util/files.js +253 -0
  117. package/lib/src/util/files.js.map +1 -0
  118. package/lib/src/util/log.d.ts +14 -0
  119. package/lib/src/util/log.js +36 -0
  120. package/lib/src/util/log.js.map +1 -0
  121. package/lib/src/util/prompt.d.ts +13 -0
  122. package/lib/src/util/prompt.js +75 -0
  123. package/lib/src/util/prompt.js.map +1 -0
  124. package/lib/src/util/readme.d.ts +5 -0
  125. package/lib/src/util/readme.js +73 -0
  126. package/lib/src/util/readme.js.map +1 -0
  127. package/lib/src/util/request.d.ts +1 -0
  128. package/lib/src/util/request.js +19 -0
  129. package/lib/src/util/request.js.map +1 -0
  130. package/lib/src/util/user.d.ts +10 -0
  131. package/lib/src/util/user.js +106 -0
  132. package/lib/src/util/user.js.map +1 -0
  133. package/lib/test/cli.test.d.ts +1 -0
  134. package/lib/test/cli.test.js +64 -0
  135. package/lib/test/cli.test.js.map +1 -0
  136. package/lib/test/fixture-utils.d.ts +25 -0
  137. package/lib/test/fixture-utils.js +67 -0
  138. package/lib/test/fixture-utils.js.map +1 -0
  139. package/lib/test/init-verify-build.test.d.ts +1 -0
  140. package/lib/test/init-verify-build.test.js +75 -0
  141. package/lib/test/init-verify-build.test.js.map +1 -0
  142. package/lib/test/init.test.d.ts +1 -0
  143. package/lib/test/init.test.js +137 -0
  144. package/lib/test/init.test.js.map +1 -0
  145. package/lib/test/run-test-command.d.ts +1 -0
  146. package/lib/test/run-test-command.js +6 -0
  147. package/lib/test/run-test-command.js.map +1 -0
  148. package/lib/test/verify-package.test.d.ts +1 -0
  149. package/lib/test/verify-package.test.js +81 -0
  150. package/lib/test/verify-package.test.js.map +1 -0
  151. package/lib/test/version.test.d.ts +1 -0
  152. package/lib/test/version.test.js +48 -0
  153. package/lib/test/version.test.js.map +1 -0
  154. package/package.json +127 -0
  155. package/src/actions/init.ts +104 -0
  156. package/src/actions/link-watch.ts +74 -0
  157. package/src/actions/splat.ts +366 -0
  158. package/src/actions/verify/types.ts +84 -0
  159. package/src/actions/verify/validations.ts +401 -0
  160. package/src/actions/verify/verify-common.ts +92 -0
  161. package/src/actions/verify-package.ts +87 -0
  162. package/src/actions/verify-studio.ts +55 -0
  163. package/src/actions/verify.ts +328 -0
  164. package/src/cli.ts +77 -0
  165. package/src/cmds/index.ts +9 -0
  166. package/src/cmds/init.ts +85 -0
  167. package/src/cmds/link-watch.ts +51 -0
  168. package/src/cmds/splat.ts +59 -0
  169. package/src/cmds/verify-package.ts +36 -0
  170. package/src/cmds/verify-studio.ts +36 -0
  171. package/src/cmds/verify.ts +40 -0
  172. package/src/cmds/version.ts +67 -0
  173. package/src/configs/buildExtensions.ts +1 -0
  174. package/src/configs/default-source.ts +68 -0
  175. package/src/configs/merged-packages.ts +20 -0
  176. package/src/configs/uselessFiles.ts +29 -0
  177. package/src/constants.ts +13 -0
  178. package/src/dependencies/find.ts +193 -0
  179. package/src/dependencies/import-linter.ts +103 -0
  180. package/src/index.ts +4 -0
  181. package/src/npm/manager.ts +44 -0
  182. package/src/npm/package.ts +370 -0
  183. package/src/npm/publish.ts +9 -0
  184. package/src/npm/resolveLatestVersions.ts +26 -0
  185. package/src/sanity/manifest.ts +340 -0
  186. package/src/sharedFlags.ts +14 -0
  187. package/src/util/command-parser.ts +31 -0
  188. package/src/util/errorToUndefined.ts +7 -0
  189. package/src/util/files.ts +249 -0
  190. package/src/util/log.ts +44 -0
  191. package/src/util/prompt.ts +70 -0
  192. package/src/util/readme.ts +72 -0
  193. package/src/util/request.ts +13 -0
  194. package/src/util/user.ts +110 -0
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ /*
3
+ import fs from 'fs'
4
+ import path from 'path'
5
+ import postcss from 'postcss'
6
+ import {discoverPathSync} from 'discover-path'
7
+ import traverse from '@babel/traverse'
8
+ import {parseSync} from '@babel/core'
9
+
10
+ export default {findDependencies}
11
+
12
+ const partReg = /^(all:part|part|config|sanity):/
13
+ const importReg = /^(?:"([^"]+)"|'([^']+)')$/
14
+ const composesReg = /^(.+?)\s+from\s+(?:"([^"]+)"|'([^']+)'|(global))$/
15
+
16
+ function findDependenciesFromFiles(files, seen = new Set<string>()): string[] {
17
+ const dependencies = new Set<string>()
18
+ files.forEach((file) => findDependencies(file, seen).forEach((dep) => dependencies.add(dep)))
19
+ return Array.from(dependencies)
20
+ }
21
+
22
+ function findDependenciesInCss(css, entryPath, processDependency) {
23
+ let ast
24
+ try {
25
+ ast = postcss.parse(css)
26
+ } catch (err: any) {
27
+ throw new Error(`Error parsing file (${entryPath}): ${err.message}`)
28
+ }
29
+
30
+ ast.walkDecls(/^composes/, (decl) => {
31
+ const matches = decl.value.match(composesReg)
32
+ if (!matches) {
33
+ return
34
+ }
35
+
36
+ const [, , doubleQuotePath, singleQuotePath] = matches
37
+ const importPath = doubleQuotePath || singleQuotePath
38
+ if (importPath) {
39
+ processDependency(importPath)
40
+ }
41
+ })
42
+
43
+ ast.walkAtRules('import', (rule) => {
44
+ const matches = rule.params.match(importReg)
45
+ if (!matches) {
46
+ return
47
+ }
48
+
49
+ const [, doubleQuotePath, singleQuotePath] = matches
50
+ const importPath = doubleQuotePath || singleQuotePath
51
+ if (importPath) {
52
+ processDependency(importPath)
53
+ }
54
+ })
55
+ }
56
+
57
+ interface Traverse {
58
+ node: {callee: {name: string}; source: {value: string}; arguments: {value: string}[]}
59
+ }
60
+
61
+ function findDependenciesInJs(
62
+ js: string,
63
+ entryPath: string,
64
+ processDependency: (val: string) => void
65
+ ) {
66
+ let ast
67
+ try {
68
+ ast = parseSync(js, {babelrc: false})
69
+ } catch (err: any) {
70
+ throw new Error(`Error parsing file (${entryPath}): ${err.message}`)
71
+ }
72
+
73
+ traverse(ast, {
74
+ ImportDeclaration({node}: Traverse) {
75
+ processDependency(node.source.value)
76
+ },
77
+
78
+ CallExpression({node}: Traverse) {
79
+ if (node.callee.name === 'require') {
80
+ processDependency(node.arguments[0].value)
81
+ }
82
+ },
83
+ })
84
+ }
85
+
86
+ export function findDependencies(entryPath: string, seen = new Set<string>()): string[] {
87
+ if (Array.isArray(entryPath)) {
88
+ return findDependenciesFromFiles(entryPath, seen)
89
+ }
90
+
91
+ seen.add(entryPath)
92
+
93
+ let content
94
+ try {
95
+ content = fs.readFileSync(entryPath, 'utf8')
96
+ } catch (err: any) {
97
+ throw new Error(`Error reading file (${entryPath}): ${err.message}`)
98
+ }
99
+
100
+ const dir = path.dirname(entryPath)
101
+ const dependencies = new Set<string>()
102
+
103
+ if (entryPath.endsWith('.css')) {
104
+ findDependenciesInCss(content, entryPath, processDependency)
105
+ } else {
106
+ findDependenciesInJs(content, entryPath, processDependency)
107
+ }
108
+
109
+ function processDependency(requirePath: string) {
110
+ if (typeof requirePath !== 'string') {
111
+ return
112
+ }
113
+
114
+ // Don't allow absolute requires
115
+ if (path.isAbsolute(requirePath)) {
116
+ throw new Error(
117
+ `Absolute paths cannot be used in require/import statements: ${entryPath} references path "${requirePath}"`
118
+ )
119
+ }
120
+
121
+ const isRelative = requirePath.startsWith('.')
122
+ const depPath = isRelative && resolveDependency(dir, requirePath, entryPath)
123
+
124
+ if (
125
+ depPath &&
126
+ ['.js', '.css', '.esm', '.mjs', '.jsx'].includes(path.extname(depPath)) &&
127
+ !seen.has(depPath)
128
+ ) {
129
+ // For relative javascript/css requires, recurse to find all depdendencies
130
+ findDependencies(depPath, seen).forEach((dep) => dependencies.add(dep))
131
+ return
132
+ }
133
+
134
+ if (isRelative) {
135
+ // Not JS? Skip it
136
+ return
137
+ }
138
+
139
+ // For parts, we want the entire path, as we might want to validate them
140
+ if (partReg.test(requirePath)) {
141
+ dependencies.add(requirePath)
142
+ return
143
+ }
144
+
145
+ // For modules, resolve the base module name, then add them
146
+ // eg: `codemirror/mode/javascript` => `codemirror`
147
+ // eg: `@sanity/base/foo/bar.js` => `@sanity/base`
148
+ const dep = requirePath.startsWith('@')
149
+ ? requirePath.replace(/^(@[^/]+\/[^/]+)(\/.*|$)/, '$1')
150
+ : requirePath.replace(/^([^/]+)(\/.*|$)/, '$1')
151
+
152
+ dependencies.add(dep)
153
+ }
154
+
155
+ return Array.from(dependencies)
156
+ }
157
+
158
+ function resolveDependency(fromDir: string, toPath: string, entryPath: string) {
159
+ const [querylessPath] = toPath.split('?', 1)
160
+
161
+ let depPath
162
+ try {
163
+ depPath = require.resolve(path.resolve(fromDir, querylessPath))
164
+ } catch (err) {
165
+ throw new Error(`Unable to resolve "${querylessPath}" from ${entryPath}`)
166
+ }
167
+
168
+ let actualPath
169
+ try {
170
+ actualPath = discoverPathSync(depPath)
171
+ } catch (err: any) {
172
+ const paths = (err.suggestions || []).map((suggested: string) =>
173
+ getDidYouMeanPath(querylessPath, suggested)
174
+ )
175
+ const didYouMean = paths ? `Did you mean:\n${paths.join('\n- ')}` : ''
176
+ throw new Error(`Unable to resolve "${querylessPath}" from ${entryPath}. ${didYouMean}`)
177
+ }
178
+
179
+ if (actualPath !== depPath) {
180
+ const didYouMean = getDidYouMeanPath(querylessPath, actualPath)
181
+ throw new Error(
182
+ `Unable to resolve "${querylessPath} from ${entryPath}. Did you mean "${didYouMean}"?`
183
+ )
184
+ }
185
+
186
+ return actualPath
187
+ }
188
+
189
+ function getDidYouMeanPath(wanted: string, suggested: string) {
190
+ const end = wanted.replace(/[./]+/, '')
191
+ const start = wanted.slice(0, 0 - end.length)
192
+ return `${start}${suggested.slice(0 - end.length)}`
193
+ }
194
+ */
195
+ //# sourceMappingURL=find.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/dependencies/find.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgME"}
@@ -0,0 +1,3 @@
1
+ export declare function validateImports({ basePath }: {
2
+ basePath: string;
3
+ }): Promise<string[]>;
@@ -0,0 +1,112 @@
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
+ exports.validateImports = void 0;
16
+ const log_1 = __importDefault(require("../util/log"));
17
+ const merged_packages_1 = require("../configs/merged-packages");
18
+ const constants_1 = require("../constants");
19
+ const eslint_1 = require("eslint");
20
+ const path_1 = __importDefault(require("path"));
21
+ const outdent_1 = __importDefault(require("outdent"));
22
+ const removedImportSuffix = `imports where removed in Sanity v3. Please refer to the migration guide: ${constants_1.urls.migrationGuideStudio}, or new API-reference docs: ${constants_1.urls.refDocs}`;
23
+ function validateImports({ basePath }) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ log_1.default.debug('Running ESLint with Sanity Studio import hints...');
26
+ const eslint = new eslint_1.ESLint({
27
+ cwd: basePath,
28
+ overrideConfig: {
29
+ ignorePatterns: ['node_modules'],
30
+ rules: {
31
+ 'no-restricted-imports': [
32
+ 'error',
33
+ {
34
+ patterns: [
35
+ ...merged_packages_1.mergedPackages.map((packageName) => ({
36
+ group: [`${packageName}*`],
37
+ message: `Use sanity instead of ${packageName}.`,
38
+ })),
39
+ {
40
+ group: ['config:*'],
41
+ message: `config: imports are no longer supported. Please see the new plugin API for alternatives: ${constants_1.urls.migrationGuideStudio}`,
42
+ },
43
+ {
44
+ group: ['part:*'],
45
+ message: `part: ${removedImportSuffix}`,
46
+ },
47
+ {
48
+ group: ['all:part:*'],
49
+ message: `all:part: ${removedImportSuffix}`,
50
+ },
51
+ {
52
+ group: ['sanity:*'],
53
+ message: `sanity: ${removedImportSuffix}`,
54
+ },
55
+ ],
56
+ },
57
+ ],
58
+ },
59
+ },
60
+ });
61
+ try {
62
+ const results = yield eslint.lintFiles([path_1.default.join(basePath, '**/*.{js,jsx,ts,tsx}')]);
63
+ const onlyImportErrors = results
64
+ .map((r) => {
65
+ const limitErrors = r.messages.filter((m) => m.ruleId === 'no-restricted-imports');
66
+ return Object.assign(Object.assign({}, r), { messages: limitErrors, errorCount: limitErrors.length });
67
+ })
68
+ .filter((r) => r.errorCount);
69
+ if (onlyImportErrors.length) {
70
+ const formatter = yield eslint.loadFormatter('stylish');
71
+ const resultText = yield formatter.format(onlyImportErrors);
72
+ const addtionalInfo = (0, outdent_1.default) `
73
+ ESLint detected Studio V2 imports that are no longer available.
74
+ It is recommended configure @sanity/eslint-config-no-v2-imports for ESLint.
75
+
76
+ Run:
77
+ npm install --save-dev @sanity/eslint-config-no-v2-imports
78
+
79
+ In .eslintrc add:
80
+ "extends": ["@sanity/no-v2-imports"]
81
+
82
+ This way, V2-imports can be identified directly in the IDE, or using eslint CLI.
83
+ For more, see ${constants_1.urls.linterPackage}
84
+
85
+ If the plugin package does not use eslint, disable this check.
86
+ `;
87
+ return [resultText + addtionalInfo];
88
+ }
89
+ }
90
+ catch (e) {
91
+ log_1.default.error('Failed to run eslint check', e);
92
+ return [
93
+ (0, outdent_1.default) `
94
+ Failed to run ESLint. Is ESLint configured?
95
+ It is recommended to install eslint-config-sanity and add 'sanity/upgrade-v2' to your eslint-extends config.
96
+
97
+ Run:
98
+ npm install --save-dev eslint-config-sanity
99
+
100
+ In .eslintrc add:
101
+ extends: ['sanity/upgrade-v2']
102
+
103
+ This way, V2-imports can be identified directly in the IDE, or using eslint CLI.
104
+ If the package does not use eslint, disable this check.
105
+ `,
106
+ ];
107
+ }
108
+ return [];
109
+ });
110
+ }
111
+ exports.validateImports = validateImports;
112
+ //# sourceMappingURL=import-linter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-linter.js","sourceRoot":"","sources":["../../../src/dependencies/import-linter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA6B;AAC7B,gEAAyD;AACzD,4CAAiC;AACjC,mCAA6B;AAC7B,gDAAuB;AACvB,sDAA6B;AAE7B,MAAM,mBAAmB,GAAG,4EAA4E,gBAAI,CAAC,oBAAoB,gCAAgC,gBAAI,CAAC,OAAO,EAAE,CAAA;AAE/K,SAAsB,eAAe,CAAC,EAAC,QAAQ,EAAqB;;QAClE,aAAG,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;QAC9D,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC;YACxB,GAAG,EAAE,QAAQ;YACb,cAAc,EAAE;gBACd,cAAc,EAAE,CAAC,cAAc,CAAC;gBAChC,KAAK,EAAE;oBACL,uBAAuB,EAAE;wBACvB,OAAO;wBACP;4BACE,QAAQ,EAAE;gCACR,GAAG,gCAAc,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;oCACtC,KAAK,EAAE,CAAC,GAAG,WAAW,GAAG,CAAC;oCAC1B,OAAO,EAAE,yBAAyB,WAAW,GAAG;iCACjD,CAAC,CAAC;gCACH;oCACE,KAAK,EAAE,CAAC,UAAU,CAAC;oCACnB,OAAO,EAAE,4FAA4F,gBAAI,CAAC,oBAAoB,EAAE;iCACjI;gCACD;oCACE,KAAK,EAAE,CAAC,QAAQ,CAAC;oCACjB,OAAO,EAAE,SAAS,mBAAmB,EAAE;iCACxC;gCACD;oCACE,KAAK,EAAE,CAAC,YAAY,CAAC;oCACrB,OAAO,EAAE,aAAa,mBAAmB,EAAE;iCAC5C;gCACD;oCACE,KAAK,EAAE,CAAC,UAAU,CAAC;oCACnB,OAAO,EAAE,WAAW,mBAAmB,EAAE;iCAC1C;6BACF;yBACF;qBACF;iBACF;aACF;SACF,CAAC,CAAA;QAEF,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAA;YAErF,MAAM,gBAAgB,GAAG,OAAO;iBAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,uBAAuB,CAAC,CAAA;gBAClF,uCACK,CAAC,KACJ,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,WAAW,CAAC,MAAM,IAC/B;YACH,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;YAE9B,IAAI,gBAAgB,CAAC,MAAM,EAAE;gBAC3B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;gBACvD,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;gBAE3D,MAAM,aAAa,GAAG,IAAA,iBAAO,EAAA;;;;;;;;;;;wBAWX,gBAAI,CAAC,aAAa;;;KAGrC,CAAA;gBACC,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC,CAAA;aACpC;SACF;QAAC,OAAO,CAAC,EAAE;YACV,aAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAA;YAC1C,OAAO;gBACL,IAAA,iBAAO,EAAA;;;;;;;;;;;;KAYR;aACA,CAAA;SACF;QAED,OAAO,EAAE,CAAA;IACX,CAAC;CAAA;AA7FD,0CA6FC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const cli_1 = require("./cli");
5
+ (0, cli_1.cliEntry)();
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,+BAA8B;AAE9B,IAAA,cAAQ,GAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ export declare function npmIsAvailable(): Promise<boolean>;
2
+ export declare function yarnIsAvailable(): Promise<boolean>;
3
+ export declare function pnpmAvailable(): Promise<boolean>;
4
+ export declare function promptForPackageManager(): Promise<any>;
5
+ export declare function installDependencies(pm: string, { cwd }: {
6
+ cwd?: string;
7
+ }): Promise<boolean>;
@@ -0,0 +1,62 @@
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
+ exports.installDependencies = exports.promptForPackageManager = exports.pnpmAvailable = exports.yarnIsAvailable = exports.npmIsAvailable = void 0;
16
+ const execa_1 = __importDefault(require("execa"));
17
+ const prompt_1 = require("../util/prompt");
18
+ function npmIsAvailable() {
19
+ return (0, execa_1.default)('npm', ['-v'])
20
+ .then(() => true)
21
+ .catch(() => false);
22
+ }
23
+ exports.npmIsAvailable = npmIsAvailable;
24
+ function yarnIsAvailable() {
25
+ return (0, execa_1.default)('yarn', ['-v'])
26
+ .then(() => true)
27
+ .catch(() => false);
28
+ }
29
+ exports.yarnIsAvailable = yarnIsAvailable;
30
+ function pnpmAvailable() {
31
+ return (0, execa_1.default)('pnpm', ['-v'])
32
+ .then(() => true)
33
+ .catch(() => false);
34
+ }
35
+ exports.pnpmAvailable = pnpmAvailable;
36
+ function promptForPackageManager() {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ const [npm, yarn, pnpm] = yield Promise.all([
39
+ npmIsAvailable(),
40
+ yarnIsAvailable(),
41
+ pnpmAvailable(),
42
+ ]);
43
+ const choices = [npm && 'npm', yarn && 'yarn', pnpm && 'pnpm'].filter(Boolean);
44
+ if (choices.length < 2) {
45
+ return choices[0] || 'npm';
46
+ }
47
+ return (0, prompt_1.prompt)('Which package manager do you prefer?', {
48
+ choices: choices.map((value) => ({ value, name: value })),
49
+ default: choices[0],
50
+ });
51
+ });
52
+ }
53
+ exports.promptForPackageManager = promptForPackageManager;
54
+ function installDependencies(pm, { cwd }) {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ const proc = (0, execa_1.default)(pm, ['install'], { cwd, stdio: 'inherit' });
57
+ const { exitCode } = yield proc;
58
+ return exitCode <= 0;
59
+ });
60
+ }
61
+ exports.installDependencies = installDependencies;
62
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/npm/manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAAyB;AACzB,2CAAqC;AAErC,SAAgB,cAAc;IAC5B,OAAO,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACxB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AACvB,CAAC;AAJD,wCAIC;AAED,SAAgB,eAAe;IAC7B,OAAO,IAAA,eAAK,EAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;SACzB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AACvB,CAAC;AAJD,0CAIC;AAED,SAAgB,aAAa;IAC3B,OAAO,IAAA,eAAK,EAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;SACzB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AACvB,CAAC;AAJD,sCAIC;AAED,SAAsB,uBAAuB;;QAC3C,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC1C,cAAc,EAAE;YAChB,eAAe,EAAE;YACjB,aAAa,EAAE;SAChB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC9E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA;SAC3B;QAED,OAAO,IAAA,eAAM,EAAC,sCAAsC,EAAE;YACpD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC;YACvD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;SACpB,CAAC,CAAA;IACJ,CAAC;CAAA;AAhBD,0DAgBC;AAED,SAAsB,mBAAmB,CAAC,EAAU,EAAE,EAAC,GAAG,EAAiB;;QACzE,MAAM,IAAI,GAAG,IAAA,eAAK,EAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC,CAAA;QAC5D,MAAM,EAAC,QAAQ,EAAC,GAAG,MAAM,IAAI,CAAA;QAC7B,OAAO,QAAQ,IAAI,CAAC,CAAA;IACtB,CAAC;CAAA;AAJD,kDAIC"}
@@ -0,0 +1,8 @@
1
+ import { ManifestOptions } from '../sanity/manifest';
2
+ import { PackageData, SplatOptions } from '../actions/splat';
3
+ import { PackageJson } from '../actions/verify/types';
4
+ export declare function getPackage(opts: ManifestOptions): Promise<PackageJson>;
5
+ export declare function validatePackage(manifest: PackageJson, opts: ManifestOptions): Promise<void>;
6
+ export declare function getReferencedPaths(packageJson: Record<string, string>, basePath: string): string[];
7
+ export declare function writePackageJson(data: PackageData, options: SplatOptions): Promise<PackageJson>;
8
+ export declare function addBuildScripts(manifest: PackageJson, { basePath, flags }: SplatOptions): Promise<boolean>;