pressship 0.1.14 → 0.1.15
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/assets/web/app.js +1198 -73
- package/assets/web/style.css +552 -41
- package/dist/checks/plugin-check.d.ts +1 -0
- package/dist/checks/plugin-check.js +72 -1
- package/dist/checks/plugin-check.js.map +1 -1
- package/dist/package/archive.d.ts +12 -0
- package/dist/package/archive.js +44 -6
- package/dist/package/archive.js.map +1 -1
- package/dist/package/ignore.d.ts +18 -0
- package/dist/package/ignore.js +156 -8
- package/dist/package/ignore.js.map +1 -1
- package/dist/svn/release.js +105 -8
- package/dist/svn/release.js.map +1 -1
- package/dist/ui.d.ts +1 -0
- package/dist/ui.js +76 -0
- package/dist/ui.js.map +1 -1
- package/dist/web/index.js +1 -0
- package/dist/web/index.js.map +1 -1
- package/dist/web/server.js +427 -26
- package/dist/web/server.js.map +1 -1
- package/dist/wordpress-org/submit.js +4 -2
- package/dist/wordpress-org/submit.js.map +1 -1
- package/package.json +1 -1
|
@@ -14,3 +14,4 @@ export type PluginCheckResult = {
|
|
|
14
14
|
export declare function runPluginCheck(target: string, options?: PluginCheckOptions): Promise<PluginCheckResult>;
|
|
15
15
|
export declare function parsePluginCheckOutput(output: string, exitCode?: number): Finding[];
|
|
16
16
|
export declare function getPluginCheckSetupFinding(output: string): Finding | undefined;
|
|
17
|
+
export declare function normalizePluginCheckFindingPaths(findings: Finding[], target: string): Promise<Finding[]>;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { realpath, stat } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
1
3
|
import { execa } from "execa";
|
|
2
4
|
import { prepareManagedPluginCheckEnvironment } from "./plugin-check-environment.js";
|
|
3
5
|
export async function runPluginCheck(target, options = {}) {
|
|
@@ -26,11 +28,12 @@ export async function runPluginCheck(target, options = {}) {
|
|
|
26
28
|
const result = await execa(environment.wpCli.command, [...environment.wpCli.baseArgs, ...args], { reject: false });
|
|
27
29
|
const rawOutput = `${result.stdout}\n${result.stderr}`.trim();
|
|
28
30
|
const setupFinding = getPluginCheckSetupFinding(rawOutput);
|
|
31
|
+
const parsedFindings = setupFinding ? [setupFinding] : parsePluginCheckOutput(rawOutput, result.exitCode);
|
|
29
32
|
return {
|
|
30
33
|
skipped: false,
|
|
31
34
|
available: !setupFinding,
|
|
32
35
|
rawOutput,
|
|
33
|
-
findings: setupFinding ?
|
|
36
|
+
findings: setupFinding ? parsedFindings : await normalizePluginCheckFindingPaths(parsedFindings, target)
|
|
34
37
|
};
|
|
35
38
|
}
|
|
36
39
|
export function parsePluginCheckOutput(output, exitCode = 0) {
|
|
@@ -90,6 +93,13 @@ export function getPluginCheckSetupFinding(output) {
|
|
|
90
93
|
}
|
|
91
94
|
return undefined;
|
|
92
95
|
}
|
|
96
|
+
export async function normalizePluginCheckFindingPaths(findings, target) {
|
|
97
|
+
const targetRoots = await resolvePluginCheckTargetRoots(target);
|
|
98
|
+
return Promise.all(findings.map(async (finding) => {
|
|
99
|
+
const file = await normalizePluginCheckFindingFile(finding.file, targetRoots);
|
|
100
|
+
return file === finding.file ? finding : { ...finding, file };
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
93
103
|
function extractJson(output) {
|
|
94
104
|
const trimmed = output.trim();
|
|
95
105
|
if (trimmed.startsWith("[") || trimmed.startsWith("{")) {
|
|
@@ -159,6 +169,67 @@ function normalizePluginCheckFindings(parsed) {
|
|
|
159
169
|
return [{ severity, message, code, file, line, column }];
|
|
160
170
|
});
|
|
161
171
|
}
|
|
172
|
+
async function resolvePluginCheckTargetRoots(target) {
|
|
173
|
+
const resolved = path.resolve(target);
|
|
174
|
+
const roots = [resolved];
|
|
175
|
+
try {
|
|
176
|
+
const real = await realpath(resolved);
|
|
177
|
+
if (!roots.includes(real)) {
|
|
178
|
+
roots.push(real);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
// If realpath fails, the resolved path is still useful for relative repairs.
|
|
183
|
+
}
|
|
184
|
+
return roots;
|
|
185
|
+
}
|
|
186
|
+
async function normalizePluginCheckFindingFile(file, targetRoots) {
|
|
187
|
+
if (!file) {
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
const normalized = file.replace(/\\/g, "/");
|
|
191
|
+
if (path.isAbsolute(file)) {
|
|
192
|
+
const absolutePath = path.resolve(file);
|
|
193
|
+
for (const root of targetRoots) {
|
|
194
|
+
if (absolutePath === root || absolutePath.startsWith(`${root}${path.sep}`)) {
|
|
195
|
+
return path.relative(root, absolutePath).split(path.sep).join("/");
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
for (const candidate of pluginCheckPrivatePrefixCandidates(normalized)) {
|
|
200
|
+
if (await pluginCheckTargetFileExists(targetRoots, candidate)) {
|
|
201
|
+
return candidate;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return normalized;
|
|
205
|
+
}
|
|
206
|
+
function pluginCheckPrivatePrefixCandidates(file) {
|
|
207
|
+
if (!file.startsWith("/private") || file.startsWith("/private/")) {
|
|
208
|
+
return [];
|
|
209
|
+
}
|
|
210
|
+
const candidate = file.slice("/private".length).replace(/^\/+/, "");
|
|
211
|
+
return candidate ? [candidate] : [];
|
|
212
|
+
}
|
|
213
|
+
async function pluginCheckTargetFileExists(targetRoots, relativePath) {
|
|
214
|
+
if (!relativePath || relativePath.split("/").some((segment) => segment === "..")) {
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
for (const root of targetRoots) {
|
|
218
|
+
const filePath = path.resolve(root, relativePath);
|
|
219
|
+
if (filePath === root || !filePath.startsWith(`${root}${path.sep}`)) {
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
try {
|
|
223
|
+
return (await stat(filePath)).isFile();
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
if (error.code !== "ENOENT") {
|
|
227
|
+
throw error;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
162
233
|
function normalizeSeverity(value) {
|
|
163
234
|
const text = String(value ?? "").toLowerCase();
|
|
164
235
|
if (text.includes("error")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-check.js","sourceRoot":"","sources":["../../src/checks/plugin-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,oCAAoC,EAAqB,MAAM,+BAA+B,CAAC;AAgBxG,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,UAA8B,EAAE;IAEhC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACjE,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG;QACX,UAAU,WAAW,CAAC,MAAM,EAAE;QAC9B,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,QAAQ;QACR,OAAO;QACP,MAAM;QACN,sBAAsB;QACtB,kDAAkD;QAClD,UAAU,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE;QACjC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;KAC7B,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACnH,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAC9D,MAAM,YAAY,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAE3D,OAAO;QACL,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,CAAC,YAAY;QACxB,SAAS;QACT,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"plugin-check.js","sourceRoot":"","sources":["../../src/checks/plugin-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import type { PackageResult, PluginProject } from "../types.js";
|
|
2
|
+
export declare const maxSubmissionSizeBytes: number;
|
|
2
3
|
export type PackageOptions = {
|
|
3
4
|
outputDir?: string;
|
|
4
5
|
ignore?: string[];
|
|
6
|
+
allowOversize?: boolean;
|
|
5
7
|
};
|
|
6
8
|
export type StageResult = {
|
|
7
9
|
path: string;
|
|
8
10
|
files: string[];
|
|
9
11
|
};
|
|
12
|
+
export type PackageFileSize = {
|
|
13
|
+
path: string;
|
|
14
|
+
sizeBytes: number;
|
|
15
|
+
};
|
|
16
|
+
export type PackageAnalysis = PackageResult & {
|
|
17
|
+
maxSizeBytes: number;
|
|
18
|
+
overLimit: boolean;
|
|
19
|
+
largestFiles: PackageFileSize[];
|
|
20
|
+
};
|
|
10
21
|
export declare function createPluginZip(project: PluginProject, options?: PackageOptions): Promise<PackageResult>;
|
|
11
22
|
export declare function listPackageFiles(rootDir: string, options?: Pick<PackageOptions, "ignore">): Promise<string[]>;
|
|
23
|
+
export declare function analyzePluginPackage(project: PluginProject, options?: Pick<PackageOptions, "ignore">): Promise<PackageAnalysis>;
|
|
12
24
|
export declare function stagePluginDirectory(project: PluginProject, options?: PackageOptions): Promise<StageResult>;
|
package/dist/package/archive.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { createWriteStream } from "node:fs";
|
|
2
|
-
import { cp, mkdir, rm, stat } from "node:fs/promises";
|
|
2
|
+
import { cp, mkdir, mkdtemp, rm, stat } from "node:fs/promises";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
3
4
|
import path from "node:path";
|
|
4
5
|
import fg from "fast-glob";
|
|
5
6
|
import { ZipFile } from "yazl";
|
|
7
|
+
import { formatBytes } from "../utils/format.js";
|
|
6
8
|
import { getDefaultBuildDir } from "../utils/paths.js";
|
|
7
|
-
import { createIgnoreFilter } from "./ignore.js";
|
|
8
|
-
const maxSubmissionSizeBytes = 10 * 1024 * 1024;
|
|
9
|
+
import { createIgnoreFilter, hardIgnorePatterns } from "./ignore.js";
|
|
10
|
+
export const maxSubmissionSizeBytes = 10 * 1024 * 1024;
|
|
9
11
|
export async function createPluginZip(project, options = {}) {
|
|
10
12
|
const outputDir = path.resolve(options.outputDir ?? getDefaultBuildDir());
|
|
11
13
|
await mkdir(outputDir, { recursive: true });
|
|
@@ -13,8 +15,8 @@ export async function createPluginZip(project, options = {}) {
|
|
|
13
15
|
const files = await listPackageFiles(project.rootDir, { ignore: options.ignore });
|
|
14
16
|
await writeZip(project.rootDir, project.slug, files, zipPath);
|
|
15
17
|
const zipStat = await stat(zipPath);
|
|
16
|
-
if (zipStat.size > maxSubmissionSizeBytes) {
|
|
17
|
-
throw new Error(
|
|
18
|
+
if (!options.allowOversize && zipStat.size > maxSubmissionSizeBytes) {
|
|
19
|
+
throw new Error(await oversizedPackageMessage(project.rootDir, files, zipStat.size));
|
|
18
20
|
}
|
|
19
21
|
return {
|
|
20
22
|
zipPath,
|
|
@@ -29,10 +31,30 @@ export async function listPackageFiles(rootDir, options = {}) {
|
|
|
29
31
|
cwd: rootDir,
|
|
30
32
|
onlyFiles: true,
|
|
31
33
|
dot: true,
|
|
32
|
-
unique: true
|
|
34
|
+
unique: true,
|
|
35
|
+
ignore: hardIgnorePatterns
|
|
33
36
|
});
|
|
34
37
|
return files.filter(includeFile).sort();
|
|
35
38
|
}
|
|
39
|
+
export async function analyzePluginPackage(project, options = {}) {
|
|
40
|
+
const outputDir = await mkdtemp(path.join(tmpdir(), "pressship-package-analysis-"));
|
|
41
|
+
try {
|
|
42
|
+
const result = await createPluginZip(project, {
|
|
43
|
+
outputDir,
|
|
44
|
+
ignore: options.ignore,
|
|
45
|
+
allowOversize: true
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
...result,
|
|
49
|
+
maxSizeBytes: maxSubmissionSizeBytes,
|
|
50
|
+
overLimit: result.sizeBytes > maxSubmissionSizeBytes,
|
|
51
|
+
largestFiles: await largestPackageFiles(project.rootDir, result.files)
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
await rm(outputDir, { recursive: true, force: true });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
36
58
|
export async function stagePluginDirectory(project, options = {}) {
|
|
37
59
|
const stageRoot = path.join(path.resolve(options.outputDir ?? getDefaultBuildDir()), "plugin-check");
|
|
38
60
|
const stagePath = path.join(stageRoot, project.slug);
|
|
@@ -61,4 +83,20 @@ async function writeZip(rootDir, topLevelFolder, files, zipPath) {
|
|
|
61
83
|
archive.end();
|
|
62
84
|
});
|
|
63
85
|
}
|
|
86
|
+
async function oversizedPackageMessage(rootDir, files, sizeBytes) {
|
|
87
|
+
const largestFiles = await largestPackageFiles(rootDir, files, 5);
|
|
88
|
+
const largestSummary = largestFiles.length
|
|
89
|
+
? ` Largest included files: ${largestFiles
|
|
90
|
+
.map((file) => `${file.path} (${formatBytes(file.sizeBytes)})`)
|
|
91
|
+
.join(", ")}.`
|
|
92
|
+
: "";
|
|
93
|
+
return `Submission zip is larger than 10 MB (${formatBytes(sizeBytes)} / ${sizeBytes} bytes). WordPress.org requires uploads under 10 MB.${largestSummary} Add non-release files to .pressshipignore or pass --ignore=<glob>.`;
|
|
94
|
+
}
|
|
95
|
+
async function largestPackageFiles(rootDir, files, limit = 8) {
|
|
96
|
+
const sizes = await Promise.all(files.map(async (file) => ({
|
|
97
|
+
path: file,
|
|
98
|
+
sizeBytes: (await stat(path.join(rootDir, file))).size
|
|
99
|
+
})));
|
|
100
|
+
return sizes.sort((a, b) => b.sizeBytes - a.sizeBytes).slice(0, limit);
|
|
101
|
+
}
|
|
64
102
|
//# sourceMappingURL=archive.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/package/archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/package/archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAwBvD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAsB,EACtB,UAA0B,EAAE;IAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAC1E,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAClF,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,IAAI,GAAG,sBAAsB,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,MAAM,uBAAuB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,OAAO;QACL,OAAO;QACP,SAAS,EAAE,OAAO,CAAC,IAAI;QACvB,KAAK;QACL,cAAc,EAAE,OAAO,CAAC,IAAI;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAe,EACf,UAA0C,EAAE;IAE5C,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE;QAC7B,GAAG,EAAE,OAAO;QACZ,SAAS,EAAE,IAAI;QACf,GAAG,EAAE,IAAI;QACT,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,kBAAkB;KAC3B,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAsB,EACtB,UAA0C,EAAE;IAE5C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,6BAA6B,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE;YAC5C,SAAS;YACT,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QACH,OAAO;YACL,GAAG,MAAM;YACT,YAAY,EAAE,sBAAsB;YACpC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,sBAAsB;YACpD,YAAY,EAAE,MAAM,mBAAmB,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;SACvE,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAsB,EACtB,UAA0B,EAAE;IAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,kBAAkB,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;IACrG,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAElF,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,OAAe,EACf,cAAsB,EACtB,KAAe,EACf,OAAe;IAEf,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAE9B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACzC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElC,KAAK,MAAM,YAAY,IAAI,KAAK,EAAE,CAAC;YACjC,OAAO,CAAC,OAAO,CACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CACxE,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,OAAe,EAAE,KAAe,EAAE,SAAiB;IACxF,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM;QACxC,CAAC,CAAC,4BAA4B,YAAY;aACrC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;aAC9D,IAAI,CAAC,IAAI,CAAC,GAAG;QAClB,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,wCAAwC,WAAW,CAAC,SAAS,CAAC,MAAM,SAAS,uDAAuD,cAAc,qEAAqE,CAAC;AACjO,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,OAAe,EAAE,KAAe,EAAE,KAAK,GAAG,CAAC;IAC5E,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;KACvD,CAAC,CAAC,CACJ,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACzE,CAAC"}
|
package/dist/package/ignore.d.ts
CHANGED
|
@@ -1,2 +1,20 @@
|
|
|
1
|
+
export declare const pressshipIgnoreFile = ".pressshipignore";
|
|
2
|
+
export declare const legacyPressportIgnoreFile = ".pressportignore";
|
|
3
|
+
export declare const hardIgnoreDirectories: string[];
|
|
4
|
+
export declare const hardIgnorePatterns: string[];
|
|
1
5
|
export declare const defaultIgnorePatterns: string[];
|
|
2
6
|
export declare function createIgnoreFilter(rootDir: string, extraPatterns?: string[]): Promise<(relativePath: string) => boolean>;
|
|
7
|
+
export declare function isHardIgnoredPath(relativePath: string): boolean;
|
|
8
|
+
export type PressshipIgnoreMatcher = {
|
|
9
|
+
ignores(relativePath: string): boolean;
|
|
10
|
+
ignoredBy(relativePath: string): string | undefined;
|
|
11
|
+
};
|
|
12
|
+
export declare function readPressshipIgnorePatterns(rootDir: string): Promise<string[]>;
|
|
13
|
+
export declare function mergeIgnorePatterns(...groups: Array<string[] | undefined>): string[];
|
|
14
|
+
export declare function addPressshipIgnorePattern(rootDir: string, input: string): Promise<string[]>;
|
|
15
|
+
export declare function removePressshipIgnorePattern(rootDir: string, input: string): Promise<string[]>;
|
|
16
|
+
export declare function normalizePressshipIgnorePattern(input: string, options?: {
|
|
17
|
+
allowNegation?: boolean;
|
|
18
|
+
}): string;
|
|
19
|
+
export declare function createPressshipIgnoreMatcher(patterns: string[]): PressshipIgnoreMatcher;
|
|
20
|
+
export declare function parsePressshipIgnorePatterns(content: string): string[];
|
package/dist/package/ignore.js
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
import { readFile } from "node:fs/promises";
|
|
1
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import ignore from "ignore";
|
|
4
4
|
import { pathExists } from "../utils/paths.js";
|
|
5
|
+
export const pressshipIgnoreFile = ".pressshipignore";
|
|
6
|
+
export const legacyPressportIgnoreFile = ".pressportignore";
|
|
7
|
+
export const hardIgnoreDirectories = [".git", ".svn", "node_modules"];
|
|
8
|
+
export const hardIgnorePatterns = hardIgnoreDirectories.flatMap((directory) => [
|
|
9
|
+
directory,
|
|
10
|
+
`${directory}/**`,
|
|
11
|
+
`**/${directory}`,
|
|
12
|
+
`**/${directory}/**`
|
|
13
|
+
]);
|
|
5
14
|
export const defaultIgnorePatterns = [
|
|
6
15
|
".DS_Store",
|
|
7
|
-
|
|
8
|
-
".git/**",
|
|
16
|
+
...hardIgnorePatterns,
|
|
9
17
|
".gitignore",
|
|
10
18
|
".github",
|
|
11
19
|
".github/**",
|
|
@@ -31,13 +39,13 @@ export const defaultIgnorePatterns = [
|
|
|
31
39
|
"tests/**",
|
|
32
40
|
"*.log",
|
|
33
41
|
"*.zip",
|
|
34
|
-
|
|
35
|
-
|
|
42
|
+
legacyPressportIgnoreFile,
|
|
43
|
+
pressshipIgnoreFile
|
|
36
44
|
];
|
|
37
45
|
export async function createIgnoreFilter(rootDir, extraPatterns = []) {
|
|
38
46
|
const matcher = ignore().add(defaultIgnorePatterns).add(extraPatterns);
|
|
39
|
-
const legacyIgnoreFile = path.join(rootDir,
|
|
40
|
-
const ignoreFile = path.join(rootDir,
|
|
47
|
+
const legacyIgnoreFile = path.join(rootDir, legacyPressportIgnoreFile);
|
|
48
|
+
const ignoreFile = path.join(rootDir, pressshipIgnoreFile);
|
|
41
49
|
if (pathExists(legacyIgnoreFile)) {
|
|
42
50
|
matcher.add(await readFile(legacyIgnoreFile, "utf8"));
|
|
43
51
|
}
|
|
@@ -46,7 +54,147 @@ export async function createIgnoreFilter(rootDir, extraPatterns = []) {
|
|
|
46
54
|
}
|
|
47
55
|
return (relativePath) => {
|
|
48
56
|
const normalized = relativePath.split(path.sep).join("/");
|
|
49
|
-
return !matcher.ignores(normalized);
|
|
57
|
+
return !isHardIgnoredPath(normalized) && !matcher.ignores(normalized);
|
|
50
58
|
};
|
|
51
59
|
}
|
|
60
|
+
export function isHardIgnoredPath(relativePath) {
|
|
61
|
+
const normalized = normalizeIgnorePath(relativePath);
|
|
62
|
+
return normalized.split("/").some((segment) => hardIgnoreDirectories.includes(segment));
|
|
63
|
+
}
|
|
64
|
+
export async function readPressshipIgnorePatterns(rootDir) {
|
|
65
|
+
const ignorePath = path.join(rootDir, pressshipIgnoreFile);
|
|
66
|
+
if (!pathExists(ignorePath)) {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
return parsePressshipIgnorePatterns(await readFile(ignorePath, "utf8"));
|
|
70
|
+
}
|
|
71
|
+
export function mergeIgnorePatterns(...groups) {
|
|
72
|
+
const merged = [];
|
|
73
|
+
const seen = new Set();
|
|
74
|
+
for (const group of groups) {
|
|
75
|
+
for (const pattern of group ?? []) {
|
|
76
|
+
const normalized = normalizeExistingIgnorePattern(pattern);
|
|
77
|
+
if (!normalized || seen.has(normalized)) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
seen.add(normalized);
|
|
81
|
+
merged.push(normalized);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return merged;
|
|
85
|
+
}
|
|
86
|
+
export async function addPressshipIgnorePattern(rootDir, input) {
|
|
87
|
+
const pattern = normalizePressshipIgnorePattern(input);
|
|
88
|
+
const ignorePath = path.join(rootDir, pressshipIgnoreFile);
|
|
89
|
+
const existing = pathExists(ignorePath) ? await readFile(ignorePath, "utf8") : "";
|
|
90
|
+
const lines = splitIgnoreLines(existing);
|
|
91
|
+
const patterns = parsePressshipIgnorePatterns(existing);
|
|
92
|
+
if (!patterns.includes(pattern)) {
|
|
93
|
+
const nextLines = [...lines];
|
|
94
|
+
while (nextLines.length && nextLines[nextLines.length - 1] === "") {
|
|
95
|
+
nextLines.pop();
|
|
96
|
+
}
|
|
97
|
+
nextLines.push(pattern);
|
|
98
|
+
await writePressshipIgnoreFile(ignorePath, nextLines.join("\n"));
|
|
99
|
+
}
|
|
100
|
+
return readPressshipIgnorePatterns(rootDir);
|
|
101
|
+
}
|
|
102
|
+
export async function removePressshipIgnorePattern(rootDir, input) {
|
|
103
|
+
const pattern = normalizePressshipIgnorePattern(input, { allowNegation: true });
|
|
104
|
+
const ignorePath = path.join(rootDir, pressshipIgnoreFile);
|
|
105
|
+
if (!pathExists(ignorePath)) {
|
|
106
|
+
return [];
|
|
107
|
+
}
|
|
108
|
+
const content = await readFile(ignorePath, "utf8");
|
|
109
|
+
const nextLines = splitIgnoreLines(content).filter((line) => {
|
|
110
|
+
const existing = normalizeExistingIgnorePattern(line);
|
|
111
|
+
return existing === undefined || existing !== pattern;
|
|
112
|
+
});
|
|
113
|
+
while (nextLines.length && nextLines[nextLines.length - 1] === "") {
|
|
114
|
+
nextLines.pop();
|
|
115
|
+
}
|
|
116
|
+
await writePressshipIgnoreFile(ignorePath, nextLines.join("\n"));
|
|
117
|
+
return readPressshipIgnorePatterns(rootDir);
|
|
118
|
+
}
|
|
119
|
+
export function normalizePressshipIgnorePattern(input, options = {}) {
|
|
120
|
+
const trimmed = input.trim().replace(/\\/g, "/").replace(/^\.\//, "");
|
|
121
|
+
const rawPattern = trimmed.startsWith("!") && options.allowNegation
|
|
122
|
+
? `!${trimmed.slice(1).replace(/^\.\//, "")}`
|
|
123
|
+
: trimmed;
|
|
124
|
+
const pattern = normalizeDirectoryDotPattern(rawPattern);
|
|
125
|
+
if (!pattern || pattern === "!") {
|
|
126
|
+
throw new Error("Enter an ignore pattern first.");
|
|
127
|
+
}
|
|
128
|
+
if (pattern.startsWith("#")) {
|
|
129
|
+
throw new Error("Ignore patterns cannot start with #.");
|
|
130
|
+
}
|
|
131
|
+
if (pattern.startsWith("!") && !options.allowNegation) {
|
|
132
|
+
throw new Error("Negated patterns can be edited directly in .pressshipignore.");
|
|
133
|
+
}
|
|
134
|
+
if (pattern.includes("\0") || /[\r\n]/.test(pattern)) {
|
|
135
|
+
throw new Error("Ignore patterns must be a single line.");
|
|
136
|
+
}
|
|
137
|
+
const pathPart = pattern.startsWith("!") ? pattern.slice(1) : pattern;
|
|
138
|
+
if (pathPart.startsWith("/") || /^[A-Za-z]:/.test(pathPart)) {
|
|
139
|
+
throw new Error("Ignore patterns must be relative to the plugin directory.");
|
|
140
|
+
}
|
|
141
|
+
if (pathPart.split("/").some((segment) => segment === "..")) {
|
|
142
|
+
throw new Error("Ignore patterns cannot contain parent-directory segments.");
|
|
143
|
+
}
|
|
144
|
+
return pattern;
|
|
145
|
+
}
|
|
146
|
+
export function createPressshipIgnoreMatcher(patterns) {
|
|
147
|
+
const safePatterns = patterns.filter(Boolean);
|
|
148
|
+
const matcher = ignore().add(safePatterns);
|
|
149
|
+
const positivePatterns = safePatterns.filter((pattern) => !pattern.trim().startsWith("!"));
|
|
150
|
+
return {
|
|
151
|
+
ignores(relativePath) {
|
|
152
|
+
return matcher.ignores(normalizeIgnorePath(relativePath));
|
|
153
|
+
},
|
|
154
|
+
ignoredBy(relativePath) {
|
|
155
|
+
const normalized = normalizeIgnorePath(relativePath);
|
|
156
|
+
if (!matcher.ignores(normalized)) {
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
159
|
+
return positivePatterns.find((pattern) => ignore().add(pattern).ignores(normalized));
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
export function parsePressshipIgnorePatterns(content) {
|
|
164
|
+
return splitIgnoreLines(content)
|
|
165
|
+
.map((line) => normalizeExistingIgnorePattern(line))
|
|
166
|
+
.filter((pattern) => Boolean(pattern));
|
|
167
|
+
}
|
|
168
|
+
function normalizeExistingIgnorePattern(line) {
|
|
169
|
+
const trimmed = line.trim();
|
|
170
|
+
if (!trimmed || trimmed.startsWith("#")) {
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
return normalizeDirectoryDotPattern(trimmed.replace(/\\/g, "/").replace(/^\.\//, ""));
|
|
174
|
+
}
|
|
175
|
+
function normalizeIgnorePath(relativePath) {
|
|
176
|
+
return relativePath.split(path.sep).join("/").replace(/^\.\//, "");
|
|
177
|
+
}
|
|
178
|
+
function normalizeDirectoryDotPattern(pattern) {
|
|
179
|
+
const negated = pattern.startsWith("!");
|
|
180
|
+
const pathPart = negated ? pattern.slice(1) : pattern;
|
|
181
|
+
if (!pathPart.endsWith("/.")) {
|
|
182
|
+
return pattern;
|
|
183
|
+
}
|
|
184
|
+
const normalized = `${pathPart.slice(0, -2)}/**`;
|
|
185
|
+
return negated ? `!${normalized}` : normalized;
|
|
186
|
+
}
|
|
187
|
+
function splitIgnoreLines(content) {
|
|
188
|
+
const normalized = content.replace(/^\uFEFF/, "").replace(/\r\n/g, "\n");
|
|
189
|
+
if (!normalized) {
|
|
190
|
+
return [];
|
|
191
|
+
}
|
|
192
|
+
return normalized.endsWith("\n")
|
|
193
|
+
? normalized.slice(0, -1).split("\n")
|
|
194
|
+
: normalized.split("\n");
|
|
195
|
+
}
|
|
196
|
+
async function writePressshipIgnoreFile(ignorePath, content) {
|
|
197
|
+
await mkdir(path.dirname(ignorePath), { recursive: true });
|
|
198
|
+
await writeFile(ignorePath, content ? `${content}\n` : "", "utf8");
|
|
199
|
+
}
|
|
52
200
|
//# sourceMappingURL=ignore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ignore.js","sourceRoot":"","sources":["../../src/package/ignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ignore.js","sourceRoot":"","sources":["../../src/package/ignore.ts"],"names":[],"mappings":"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"}
|