skuba 11.2.0-lfs-20250711064710 → 11.2.0-lfs-20250711073350
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.
|
@@ -32,8 +32,8 @@ __export(getChangedFiles_exports, {
|
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(getChangedFiles_exports);
|
|
34
34
|
var import_fs_extra = __toESM(require("fs-extra"));
|
|
35
|
+
var import_ignore = __toESM(require("ignore"));
|
|
35
36
|
var import_isomorphic_git = __toESM(require("isomorphic-git"));
|
|
36
|
-
var import_picomatch = __toESM(require("picomatch"));
|
|
37
37
|
var import_statusMatrix = require("./statusMatrix");
|
|
38
38
|
const mapState = (row) => {
|
|
39
39
|
if (row[import_statusMatrix.HEAD] === import_statusMatrix.ABSENT) {
|
|
@@ -49,38 +49,30 @@ const getChangedFiles = async ({
|
|
|
49
49
|
ignore = []
|
|
50
50
|
}) => {
|
|
51
51
|
const gitRoot = await (0, import_isomorphic_git.findRoot)({ fs: import_fs_extra.default, filepath: dir });
|
|
52
|
-
const [allFiles,
|
|
52
|
+
const [allFiles, isLfs] = await Promise.all([
|
|
53
53
|
import_isomorphic_git.default.statusMatrix({ fs: import_fs_extra.default, dir: gitRoot ?? dir }),
|
|
54
|
-
|
|
54
|
+
createIsLfsFilter(gitRoot)
|
|
55
55
|
]);
|
|
56
56
|
return allFiles.filter(
|
|
57
57
|
(row) => row[import_statusMatrix.HEAD] !== import_statusMatrix.UNMODIFIED || row[import_statusMatrix.WORKDIR] !== import_statusMatrix.UNMODIFIED || row[import_statusMatrix.STAGE] !== import_statusMatrix.UNMODIFIED
|
|
58
58
|
).map((row) => ({ path: row[import_statusMatrix.FILEPATH], state: mapState(row) })).filter(
|
|
59
59
|
(changedFile) => !ignore.some(
|
|
60
60
|
(i) => i.path === changedFile.path && i.state === changedFile.state
|
|
61
|
-
) && !
|
|
61
|
+
) && !isLfs(changedFile.path)
|
|
62
62
|
);
|
|
63
63
|
};
|
|
64
|
-
const
|
|
64
|
+
const createIsLfsFilter = async (gitRoot) => {
|
|
65
65
|
if (!gitRoot) {
|
|
66
|
-
return
|
|
66
|
+
return () => false;
|
|
67
67
|
}
|
|
68
68
|
const lfsFile = `${gitRoot}/.gitattributes`;
|
|
69
69
|
if (!await import_fs_extra.default.pathExists(lfsFile)) {
|
|
70
|
-
return
|
|
70
|
+
return () => false;
|
|
71
71
|
}
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (trimmed && !trimmed.startsWith("#")) {
|
|
77
|
-
const parts = trimmed.split(/\s+/);
|
|
78
|
-
if (parts.length >= 2 && parts.includes("filter=lfs") && parts[0]) {
|
|
79
|
-
lfsPatterns.push((0, import_picomatch.default)(parts[0]));
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return lfsPatterns;
|
|
72
|
+
const filter = (0, import_ignore.default)().add(
|
|
73
|
+
(await import_fs_extra.default.readFile(lfsFile, "utf8")).split("\n").map((l) => l.trim()).filter((l) => !l.startsWith("#") && l.includes("filter=lfs")).map((l) => l.split(/\s+/)[0]).flatMap((l) => l ? [l] : [])
|
|
74
|
+
);
|
|
75
|
+
return (pathname) => filter.ignores(pathname);
|
|
84
76
|
};
|
|
85
77
|
// Annotate the CommonJS export names for ESM import in node:
|
|
86
78
|
0 && (module.exports = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/api/git/getChangedFiles.ts"],
|
|
4
|
-
"sourcesContent": ["import fs from 'fs-extra';\nimport git, { findRoot } from 'isomorphic-git';\
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAe;AACf,
|
|
6
|
-
"names": ["fs", "git", "
|
|
4
|
+
"sourcesContent": ["import fs from 'fs-extra';\nimport ignoreFilter from 'ignore';\nimport git, { findRoot } from 'isomorphic-git';\n\nimport {\n ABSENT,\n FILEPATH,\n HEAD,\n MODIFIED,\n STAGE,\n UNMODIFIED,\n WORKDIR,\n} from './statusMatrix';\n\ntype ChangedFileState = 'added' | 'modified' | 'deleted';\nexport interface ChangedFile {\n path: string;\n state: ChangedFileState;\n}\ninterface ChangedFilesParameters {\n dir: string;\n\n /**\n * File changes to exclude from the result.\n *\n * Defaults to `[]` (no exclusions).\n */\n ignore?: ChangedFile[];\n}\n\nconst mapState = (\n row: [string, 0 | 1, 0 | 1 | 2, 0 | 1 | 2 | 3],\n): ChangedFileState => {\n if (row[HEAD] === ABSENT) {\n return 'added';\n }\n\n if (row[WORKDIR] === MODIFIED) {\n return 'modified';\n }\n\n return 'deleted';\n};\n\n/**\n * Returns all the files which have been added, modified or deleted in the\n * working directory of the local Git repository since the last commit.\n */\nexport const getChangedFiles = async ({\n dir,\n\n ignore = [],\n}: ChangedFilesParameters): Promise<ChangedFile[]> => {\n const gitRoot = await findRoot({ fs, filepath: dir });\n const [allFiles, isLfs] = await Promise.all([\n git.statusMatrix({ fs, dir: gitRoot ?? dir }),\n createIsLfsFilter(gitRoot),\n ]);\n\n return allFiles\n .filter(\n (row) =>\n row[HEAD] !== UNMODIFIED ||\n row[WORKDIR] !== UNMODIFIED ||\n row[STAGE] !== UNMODIFIED,\n )\n .map((row) => ({ path: row[FILEPATH], state: mapState(row) }))\n .filter(\n (changedFile) =>\n !ignore.some(\n (i) => i.path === changedFile.path && i.state === changedFile.state,\n ) && !isLfs(changedFile.path),\n );\n};\n\nconst createIsLfsFilter = async (\n gitRoot: string | null,\n): Promise<(pathname: string) => boolean> => {\n if (!gitRoot) {\n return () => false;\n }\n\n const lfsFile = `${gitRoot}/.gitattributes`;\n if (!(await fs.pathExists(lfsFile))) {\n return () => false;\n }\n\n const filter = ignoreFilter().add(\n (await fs.readFile(lfsFile, 'utf8'))\n .split('\\n')\n .map((l) => l.trim())\n .filter((l) => !l.startsWith('#') && l.includes('filter=lfs'))\n .map((l) => l.split(/\\s+/)[0])\n .flatMap((l) => (l ? [l] : [])),\n );\n\n return (pathname) => filter.ignores(pathname);\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAe;AACf,oBAAyB;AACzB,4BAA8B;AAE9B,0BAQO;AAkBP,MAAM,WAAW,CACf,QACqB;AACrB,MAAI,IAAI,wBAAI,MAAM,4BAAQ;AACxB,WAAO;AAAA,EACT;AAEA,MAAI,IAAI,2BAAO,MAAM,8BAAU;AAC7B,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAMO,MAAM,kBAAkB,OAAO;AAAA,EACpC;AAAA,EAEA,SAAS,CAAC;AACZ,MAAsD;AACpD,QAAM,UAAU,UAAM,gCAAS,EAAE,oBAAAA,SAAI,UAAU,IAAI,CAAC;AACpD,QAAM,CAAC,UAAU,KAAK,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC1C,sBAAAC,QAAI,aAAa,EAAE,oBAAAD,SAAI,KAAK,WAAW,IAAI,CAAC;AAAA,IAC5C,kBAAkB,OAAO;AAAA,EAC3B,CAAC;AAED,SAAO,SACJ;AAAA,IACC,CAAC,QACC,IAAI,wBAAI,MAAM,kCACd,IAAI,2BAAO,MAAM,kCACjB,IAAI,yBAAK,MAAM;AAAA,EACnB,EACC,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,4BAAQ,GAAG,OAAO,SAAS,GAAG,EAAE,EAAE,EAC5D;AAAA,IACC,CAAC,gBACC,CAAC,OAAO;AAAA,MACN,CAAC,MAAM,EAAE,SAAS,YAAY,QAAQ,EAAE,UAAU,YAAY;AAAA,IAChE,KAAK,CAAC,MAAM,YAAY,IAAI;AAAA,EAChC;AACJ;AAEA,MAAM,oBAAoB,OACxB,YAC2C;AAC3C,MAAI,CAAC,SAAS;AACZ,WAAO,MAAM;AAAA,EACf;AAEA,QAAM,UAAU,GAAG,OAAO;AAC1B,MAAI,CAAE,MAAM,gBAAAA,QAAG,WAAW,OAAO,GAAI;AACnC,WAAO,MAAM;AAAA,EACf;AAEA,QAAM,aAAS,cAAAE,SAAa,EAAE;AAAA,KAC3B,MAAM,gBAAAF,QAAG,SAAS,SAAS,MAAM,GAC/B,MAAM,IAAI,EACV,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,SAAS,YAAY,CAAC,EAC5D,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC,EAC5B,QAAQ,CAAC,MAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAE;AAAA,EAClC;AAEA,SAAO,CAAC,aAAa,OAAO,QAAQ,QAAQ;AAC9C;",
|
|
6
|
+
"names": ["fs", "git", "ignoreFilter"]
|
|
7
7
|
}
|
package/package.json
CHANGED