@limrun/api 0.40.0 → 0.40.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.
- package/CHANGELOG.md +4 -0
- package/folder-sync-ignore.d.mts +15 -14
- package/folder-sync-ignore.d.mts.map +1 -1
- package/folder-sync-ignore.d.ts +15 -14
- package/folder-sync-ignore.d.ts.map +1 -1
- package/folder-sync-ignore.js +23 -21
- package/folder-sync-ignore.js.map +1 -1
- package/folder-sync-ignore.mjs +23 -21
- package/folder-sync-ignore.mjs.map +1 -1
- package/package.json +1 -1
- package/src/folder-sync-ignore.ts +30 -28
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.40.1 (2026-07-14)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.40.0...v0.40.1](https://github.com/limrun-inc/typescript-sdk/compare/v0.40.0...v0.40.1)
|
|
6
|
+
|
|
3
7
|
## 0.40.0 (2026-07-13)
|
|
4
8
|
|
|
5
9
|
Full Changelog: [v0.39.8...v0.40.0](https://github.com/limrun-inc/typescript-sdk/compare/v0.39.8...v0.40.0)
|
package/folder-sync-ignore.d.mts
CHANGED
|
@@ -5,12 +5,12 @@ export type IgnoreFnOptions = {
|
|
|
5
5
|
additional?: IgnoreFn;
|
|
6
6
|
/**
|
|
7
7
|
* User-supplied force-includes (the CLI's --include): matches sync even when
|
|
8
|
-
* gitignored or covered by the default Xcode
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* parent the predicate must also match the parent directory
|
|
12
|
-
* with a trailing slash), e.g. `^ios/` reaches
|
|
13
|
-
* `GeneratedKit/` alone does not.
|
|
8
|
+
* covered by a built-in exclude, gitignored, or covered by the default Xcode
|
|
9
|
+
* excludes. The basis cache remains excluded to prevent sync loops. Note:
|
|
10
|
+
* the walk prunes excluded directories, so to rescue files under a
|
|
11
|
+
* wholly-excluded parent the predicate must also match the parent directory
|
|
12
|
+
* paths (probed with a trailing slash), e.g. `^ios/` reaches
|
|
13
|
+
* `ios/GeneratedKit/...` but `GeneratedKit/` alone does not.
|
|
14
14
|
*/
|
|
15
15
|
include?: IgnoreFn;
|
|
16
16
|
/**
|
|
@@ -27,21 +27,22 @@ export type IgnoreFnOptions = {
|
|
|
27
27
|
/**
|
|
28
28
|
* Builds the layered sync ignore predicate. First decisive answer wins:
|
|
29
29
|
*
|
|
30
|
-
* 1.
|
|
31
|
-
* 2. User include (--include): explicit intent beats
|
|
32
|
-
* 3.
|
|
33
|
-
* 4.
|
|
30
|
+
* 1. The basis cache: excluded, never overridable.
|
|
31
|
+
* 2. User include (--include): explicit intent beats every other exclusion.
|
|
32
|
+
* 3. `.git` and `.DS_Store`.
|
|
33
|
+
* 4. Default Xcode/dependency excludes (when xcodeDefaults is set).
|
|
34
|
+
* 5. Built-in force-include: `*.xcconfig` (gitignored xcconfigs are still
|
|
34
35
|
* required to reproduce the build remotely). Gitignored projects are NOT
|
|
35
36
|
* force-included: limbuild regenerates them from project.yml, and
|
|
36
37
|
* exact-version holdouts force-sync theirs with `--include`.
|
|
37
|
-
*
|
|
38
|
+
* 6. `.gitignore` chain: the root file, plus nested ones with git semantics
|
|
38
39
|
* when xcodeDefaults is set (rules bind relative to their containing
|
|
39
40
|
* directory, deeper files override shallower ones). Only a decisive
|
|
40
|
-
* *exclude* short-circuits; a negation re-include defers to layer
|
|
41
|
-
* Directory pruning in the walk means only layers 2 and
|
|
41
|
+
* *exclude* short-circuits; a negation re-include defers to layer 7.
|
|
42
|
+
* Directory pruning in the walk means only layers 2 and 5 can reach a
|
|
42
43
|
* file whose parent directory is gitignore-excluded, and only when the
|
|
43
44
|
* predicate matches the pruned parent directory paths too.
|
|
44
|
-
*
|
|
45
|
+
* 7. User ignore (--ignore).
|
|
45
46
|
*/
|
|
46
47
|
export declare function createIgnoreFn(rootDir: string, options: IgnoreFnOptions): Promise<IgnoreFn>;
|
|
47
48
|
//# sourceMappingURL=folder-sync-ignore.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder-sync-ignore.d.mts","sourceRoot":"","sources":["src/folder-sync-ignore.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7F,MAAM,MAAM,eAAe,GAAG;IAC5B,+FAA+F;IAC/F,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB,CAAC;AAoDF
|
|
1
|
+
{"version":3,"file":"folder-sync-ignore.d.mts","sourceRoot":"","sources":["src/folder-sync-ignore.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7F,MAAM,MAAM,eAAe,GAAG;IAC5B,+FAA+F;IAC/F,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB,CAAC;AAoDF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CA0IjG"}
|
package/folder-sync-ignore.d.ts
CHANGED
|
@@ -5,12 +5,12 @@ export type IgnoreFnOptions = {
|
|
|
5
5
|
additional?: IgnoreFn;
|
|
6
6
|
/**
|
|
7
7
|
* User-supplied force-includes (the CLI's --include): matches sync even when
|
|
8
|
-
* gitignored or covered by the default Xcode
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* parent the predicate must also match the parent directory
|
|
12
|
-
* with a trailing slash), e.g. `^ios/` reaches
|
|
13
|
-
* `GeneratedKit/` alone does not.
|
|
8
|
+
* covered by a built-in exclude, gitignored, or covered by the default Xcode
|
|
9
|
+
* excludes. The basis cache remains excluded to prevent sync loops. Note:
|
|
10
|
+
* the walk prunes excluded directories, so to rescue files under a
|
|
11
|
+
* wholly-excluded parent the predicate must also match the parent directory
|
|
12
|
+
* paths (probed with a trailing slash), e.g. `^ios/` reaches
|
|
13
|
+
* `ios/GeneratedKit/...` but `GeneratedKit/` alone does not.
|
|
14
14
|
*/
|
|
15
15
|
include?: IgnoreFn;
|
|
16
16
|
/**
|
|
@@ -27,21 +27,22 @@ export type IgnoreFnOptions = {
|
|
|
27
27
|
/**
|
|
28
28
|
* Builds the layered sync ignore predicate. First decisive answer wins:
|
|
29
29
|
*
|
|
30
|
-
* 1.
|
|
31
|
-
* 2. User include (--include): explicit intent beats
|
|
32
|
-
* 3.
|
|
33
|
-
* 4.
|
|
30
|
+
* 1. The basis cache: excluded, never overridable.
|
|
31
|
+
* 2. User include (--include): explicit intent beats every other exclusion.
|
|
32
|
+
* 3. `.git` and `.DS_Store`.
|
|
33
|
+
* 4. Default Xcode/dependency excludes (when xcodeDefaults is set).
|
|
34
|
+
* 5. Built-in force-include: `*.xcconfig` (gitignored xcconfigs are still
|
|
34
35
|
* required to reproduce the build remotely). Gitignored projects are NOT
|
|
35
36
|
* force-included: limbuild regenerates them from project.yml, and
|
|
36
37
|
* exact-version holdouts force-sync theirs with `--include`.
|
|
37
|
-
*
|
|
38
|
+
* 6. `.gitignore` chain: the root file, plus nested ones with git semantics
|
|
38
39
|
* when xcodeDefaults is set (rules bind relative to their containing
|
|
39
40
|
* directory, deeper files override shallower ones). Only a decisive
|
|
40
|
-
* *exclude* short-circuits; a negation re-include defers to layer
|
|
41
|
-
* Directory pruning in the walk means only layers 2 and
|
|
41
|
+
* *exclude* short-circuits; a negation re-include defers to layer 7.
|
|
42
|
+
* Directory pruning in the walk means only layers 2 and 5 can reach a
|
|
42
43
|
* file whose parent directory is gitignore-excluded, and only when the
|
|
43
44
|
* predicate matches the pruned parent directory paths too.
|
|
44
|
-
*
|
|
45
|
+
* 7. User ignore (--ignore).
|
|
45
46
|
*/
|
|
46
47
|
export declare function createIgnoreFn(rootDir: string, options: IgnoreFnOptions): Promise<IgnoreFn>;
|
|
47
48
|
//# sourceMappingURL=folder-sync-ignore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder-sync-ignore.d.ts","sourceRoot":"","sources":["src/folder-sync-ignore.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7F,MAAM,MAAM,eAAe,GAAG;IAC5B,+FAA+F;IAC/F,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB,CAAC;AAoDF
|
|
1
|
+
{"version":3,"file":"folder-sync-ignore.d.ts","sourceRoot":"","sources":["src/folder-sync-ignore.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7F,MAAM,MAAM,eAAe,GAAG;IAC5B,+FAA+F;IAC/F,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB,CAAC;AAoDF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CA0IjG"}
|
package/folder-sync-ignore.js
CHANGED
|
@@ -55,21 +55,22 @@ const XCODE_DEFAULT_EXCLUDE_PREFIXES = [
|
|
|
55
55
|
/**
|
|
56
56
|
* Builds the layered sync ignore predicate. First decisive answer wins:
|
|
57
57
|
*
|
|
58
|
-
* 1.
|
|
59
|
-
* 2. User include (--include): explicit intent beats
|
|
60
|
-
* 3.
|
|
61
|
-
* 4.
|
|
58
|
+
* 1. The basis cache: excluded, never overridable.
|
|
59
|
+
* 2. User include (--include): explicit intent beats every other exclusion.
|
|
60
|
+
* 3. `.git` and `.DS_Store`.
|
|
61
|
+
* 4. Default Xcode/dependency excludes (when xcodeDefaults is set).
|
|
62
|
+
* 5. Built-in force-include: `*.xcconfig` (gitignored xcconfigs are still
|
|
62
63
|
* required to reproduce the build remotely). Gitignored projects are NOT
|
|
63
64
|
* force-included: limbuild regenerates them from project.yml, and
|
|
64
65
|
* exact-version holdouts force-sync theirs with `--include`.
|
|
65
|
-
*
|
|
66
|
+
* 6. `.gitignore` chain: the root file, plus nested ones with git semantics
|
|
66
67
|
* when xcodeDefaults is set (rules bind relative to their containing
|
|
67
68
|
* directory, deeper files override shallower ones). Only a decisive
|
|
68
|
-
* *exclude* short-circuits; a negation re-include defers to layer
|
|
69
|
-
* Directory pruning in the walk means only layers 2 and
|
|
69
|
+
* *exclude* short-circuits; a negation re-include defers to layer 7.
|
|
70
|
+
* Directory pruning in the walk means only layers 2 and 5 can reach a
|
|
70
71
|
* file whose parent directory is gitignore-excluded, and only when the
|
|
71
72
|
* predicate matches the pruned parent directory paths too.
|
|
72
|
-
*
|
|
73
|
+
* 7. User ignore (--ignore).
|
|
73
74
|
*/
|
|
74
75
|
async function createIgnoreFn(rootDir, options) {
|
|
75
76
|
const rootResolved = path_1.default.resolve(rootDir);
|
|
@@ -141,15 +142,7 @@ async function createIgnoreFn(rootDir, options) {
|
|
|
141
142
|
if (!normalized)
|
|
142
143
|
return false;
|
|
143
144
|
const withoutTrailingSlash = normalized.replace(/\/+$/, '');
|
|
144
|
-
// 1.
|
|
145
|
-
if (withoutTrailingSlash === '.git' ||
|
|
146
|
-
withoutTrailingSlash.startsWith('.git/') ||
|
|
147
|
-
withoutTrailingSlash.endsWith('/.git') ||
|
|
148
|
-
withoutTrailingSlash.includes('/.git/') ||
|
|
149
|
-
withoutTrailingSlash === '.DS_Store' ||
|
|
150
|
-
withoutTrailingSlash.endsWith('/.DS_Store')) {
|
|
151
|
-
return true;
|
|
152
|
-
}
|
|
145
|
+
// 1. The basis cache must not sync itself, even when --include matches.
|
|
153
146
|
if (shouldIgnoreBasisCache &&
|
|
154
147
|
(withoutTrailingSlash === basisCacheRelative ||
|
|
155
148
|
withoutTrailingSlash.startsWith(`${basisCacheRelative}/`))) {
|
|
@@ -158,7 +151,16 @@ async function createIgnoreFn(rootDir, options) {
|
|
|
158
151
|
// 2. User include.
|
|
159
152
|
if (options.include?.(normalized))
|
|
160
153
|
return false;
|
|
161
|
-
// 3.
|
|
154
|
+
// 3. Built-in excludes.
|
|
155
|
+
if (withoutTrailingSlash === '.git' ||
|
|
156
|
+
withoutTrailingSlash.startsWith('.git/') ||
|
|
157
|
+
withoutTrailingSlash.endsWith('/.git') ||
|
|
158
|
+
withoutTrailingSlash.includes('/.git/') ||
|
|
159
|
+
withoutTrailingSlash === '.DS_Store' ||
|
|
160
|
+
withoutTrailingSlash.endsWith('/.DS_Store')) {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
// 4. Default Xcode/dependency excludes.
|
|
162
164
|
if (options.xcodeDefaults) {
|
|
163
165
|
for (const prefix of XCODE_DEFAULT_EXCLUDE_PREFIXES) {
|
|
164
166
|
if (normalized.startsWith(prefix))
|
|
@@ -167,13 +169,13 @@ async function createIgnoreFn(rootDir, options) {
|
|
|
167
169
|
if (normalized.includes('/xcuserdata/') || normalized.includes('.dSYM/'))
|
|
168
170
|
return true;
|
|
169
171
|
}
|
|
170
|
-
//
|
|
172
|
+
// 5. Built-in force-include: gitignored xcconfigs are still required to
|
|
171
173
|
// reproduce the build remotely. Gitignored .xcodeproj bundles are NOT
|
|
172
174
|
// force-included: limbuild regenerates them from project.yml, and
|
|
173
175
|
// exact-version holdouts force-sync theirs with --include.
|
|
174
176
|
if (withoutTrailingSlash.endsWith('.xcconfig'))
|
|
175
177
|
return false;
|
|
176
|
-
//
|
|
178
|
+
// 6. The .gitignore chain. Only a decisive *exclude* short-circuits; a
|
|
177
179
|
// negation re-include (decision.ignored === false) still falls through to
|
|
178
180
|
// the user --ignore layer, matching the pre-restructure precedence where
|
|
179
181
|
// gitignore never overrode --ignore for a re-included path.
|
|
@@ -195,7 +197,7 @@ async function createIgnoreFn(rootDir, options) {
|
|
|
195
197
|
}
|
|
196
198
|
return true;
|
|
197
199
|
}
|
|
198
|
-
//
|
|
200
|
+
// 7. User ignore.
|
|
199
201
|
if (options.additional?.(normalized))
|
|
200
202
|
return true;
|
|
201
203
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder-sync-ignore.js","sourceRoot":"","sources":["src/folder-sync-ignore.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"folder-sync-ignore.js","sourceRoot":"","sources":["src/folder-sync-ignore.ts"],"names":[],"mappings":"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"}
|
package/folder-sync-ignore.mjs
CHANGED
|
@@ -51,21 +51,22 @@ const XCODE_DEFAULT_EXCLUDE_PREFIXES = [
|
|
|
51
51
|
/**
|
|
52
52
|
* Builds the layered sync ignore predicate. First decisive answer wins:
|
|
53
53
|
*
|
|
54
|
-
* 1.
|
|
55
|
-
* 2. User include (--include): explicit intent beats
|
|
56
|
-
* 3.
|
|
57
|
-
* 4.
|
|
54
|
+
* 1. The basis cache: excluded, never overridable.
|
|
55
|
+
* 2. User include (--include): explicit intent beats every other exclusion.
|
|
56
|
+
* 3. `.git` and `.DS_Store`.
|
|
57
|
+
* 4. Default Xcode/dependency excludes (when xcodeDefaults is set).
|
|
58
|
+
* 5. Built-in force-include: `*.xcconfig` (gitignored xcconfigs are still
|
|
58
59
|
* required to reproduce the build remotely). Gitignored projects are NOT
|
|
59
60
|
* force-included: limbuild regenerates them from project.yml, and
|
|
60
61
|
* exact-version holdouts force-sync theirs with `--include`.
|
|
61
|
-
*
|
|
62
|
+
* 6. `.gitignore` chain: the root file, plus nested ones with git semantics
|
|
62
63
|
* when xcodeDefaults is set (rules bind relative to their containing
|
|
63
64
|
* directory, deeper files override shallower ones). Only a decisive
|
|
64
|
-
* *exclude* short-circuits; a negation re-include defers to layer
|
|
65
|
-
* Directory pruning in the walk means only layers 2 and
|
|
65
|
+
* *exclude* short-circuits; a negation re-include defers to layer 7.
|
|
66
|
+
* Directory pruning in the walk means only layers 2 and 5 can reach a
|
|
66
67
|
* file whose parent directory is gitignore-excluded, and only when the
|
|
67
68
|
* predicate matches the pruned parent directory paths too.
|
|
68
|
-
*
|
|
69
|
+
* 7. User ignore (--ignore).
|
|
69
70
|
*/
|
|
70
71
|
export async function createIgnoreFn(rootDir, options) {
|
|
71
72
|
const rootResolved = path.resolve(rootDir);
|
|
@@ -137,15 +138,7 @@ export async function createIgnoreFn(rootDir, options) {
|
|
|
137
138
|
if (!normalized)
|
|
138
139
|
return false;
|
|
139
140
|
const withoutTrailingSlash = normalized.replace(/\/+$/, '');
|
|
140
|
-
// 1.
|
|
141
|
-
if (withoutTrailingSlash === '.git' ||
|
|
142
|
-
withoutTrailingSlash.startsWith('.git/') ||
|
|
143
|
-
withoutTrailingSlash.endsWith('/.git') ||
|
|
144
|
-
withoutTrailingSlash.includes('/.git/') ||
|
|
145
|
-
withoutTrailingSlash === '.DS_Store' ||
|
|
146
|
-
withoutTrailingSlash.endsWith('/.DS_Store')) {
|
|
147
|
-
return true;
|
|
148
|
-
}
|
|
141
|
+
// 1. The basis cache must not sync itself, even when --include matches.
|
|
149
142
|
if (shouldIgnoreBasisCache &&
|
|
150
143
|
(withoutTrailingSlash === basisCacheRelative ||
|
|
151
144
|
withoutTrailingSlash.startsWith(`${basisCacheRelative}/`))) {
|
|
@@ -154,7 +147,16 @@ export async function createIgnoreFn(rootDir, options) {
|
|
|
154
147
|
// 2. User include.
|
|
155
148
|
if (options.include?.(normalized))
|
|
156
149
|
return false;
|
|
157
|
-
// 3.
|
|
150
|
+
// 3. Built-in excludes.
|
|
151
|
+
if (withoutTrailingSlash === '.git' ||
|
|
152
|
+
withoutTrailingSlash.startsWith('.git/') ||
|
|
153
|
+
withoutTrailingSlash.endsWith('/.git') ||
|
|
154
|
+
withoutTrailingSlash.includes('/.git/') ||
|
|
155
|
+
withoutTrailingSlash === '.DS_Store' ||
|
|
156
|
+
withoutTrailingSlash.endsWith('/.DS_Store')) {
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
// 4. Default Xcode/dependency excludes.
|
|
158
160
|
if (options.xcodeDefaults) {
|
|
159
161
|
for (const prefix of XCODE_DEFAULT_EXCLUDE_PREFIXES) {
|
|
160
162
|
if (normalized.startsWith(prefix))
|
|
@@ -163,13 +165,13 @@ export async function createIgnoreFn(rootDir, options) {
|
|
|
163
165
|
if (normalized.includes('/xcuserdata/') || normalized.includes('.dSYM/'))
|
|
164
166
|
return true;
|
|
165
167
|
}
|
|
166
|
-
//
|
|
168
|
+
// 5. Built-in force-include: gitignored xcconfigs are still required to
|
|
167
169
|
// reproduce the build remotely. Gitignored .xcodeproj bundles are NOT
|
|
168
170
|
// force-included: limbuild regenerates them from project.yml, and
|
|
169
171
|
// exact-version holdouts force-sync theirs with --include.
|
|
170
172
|
if (withoutTrailingSlash.endsWith('.xcconfig'))
|
|
171
173
|
return false;
|
|
172
|
-
//
|
|
174
|
+
// 6. The .gitignore chain. Only a decisive *exclude* short-circuits; a
|
|
173
175
|
// negation re-include (decision.ignored === false) still falls through to
|
|
174
176
|
// the user --ignore layer, matching the pre-restructure precedence where
|
|
175
177
|
// gitignore never overrode --ignore for a re-included path.
|
|
@@ -191,7 +193,7 @@ export async function createIgnoreFn(rootDir, options) {
|
|
|
191
193
|
}
|
|
192
194
|
return true;
|
|
193
195
|
}
|
|
194
|
-
//
|
|
196
|
+
// 7. User ignore.
|
|
195
197
|
if (options.additional?.(normalized))
|
|
196
198
|
return true;
|
|
197
199
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder-sync-ignore.mjs","sourceRoot":"","sources":["src/folder-sync-ignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,SAA0B,MAAM,QAAQ,CAAC;AAEhD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AA+B1C,SAAS,qBAAqB,CAAC,YAAoB;IACjD,OAAO,YAAY;SAChB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;SACf,IAAI,CAAC,GAAG,CAAC;SACT,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC;AAOD,KAAK,UAAU,iBAAiB,CAAC,OAAe;IAC9C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;YAChE,GAAG,EAAE,OAAO;YACZ,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;SAC7B,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAChC,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;gBACf,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,+EAA+E;AAC/E,MAAM,8BAA8B,GAAG;IACrC,QAAQ;IACR,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,sBAAsB;IACtB,eAAe;IACf,WAAW;IACX,OAAO;IACP,iBAAiB;CAClB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"folder-sync-ignore.mjs","sourceRoot":"","sources":["src/folder-sync-ignore.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -15,12 +15,12 @@ export type IgnoreFnOptions = {
|
|
|
15
15
|
additional?: IgnoreFn;
|
|
16
16
|
/**
|
|
17
17
|
* User-supplied force-includes (the CLI's --include): matches sync even when
|
|
18
|
-
* gitignored or covered by the default Xcode
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* parent the predicate must also match the parent directory
|
|
22
|
-
* with a trailing slash), e.g. `^ios/` reaches
|
|
23
|
-
* `GeneratedKit/` alone does not.
|
|
18
|
+
* covered by a built-in exclude, gitignored, or covered by the default Xcode
|
|
19
|
+
* excludes. The basis cache remains excluded to prevent sync loops. Note:
|
|
20
|
+
* the walk prunes excluded directories, so to rescue files under a
|
|
21
|
+
* wholly-excluded parent the predicate must also match the parent directory
|
|
22
|
+
* paths (probed with a trailing slash), e.g. `^ios/` reaches
|
|
23
|
+
* `ios/GeneratedKit/...` but `GeneratedKit/` alone does not.
|
|
24
24
|
*/
|
|
25
25
|
include?: IgnoreFn;
|
|
26
26
|
/**
|
|
@@ -88,21 +88,22 @@ const XCODE_DEFAULT_EXCLUDE_PREFIXES = [
|
|
|
88
88
|
/**
|
|
89
89
|
* Builds the layered sync ignore predicate. First decisive answer wins:
|
|
90
90
|
*
|
|
91
|
-
* 1.
|
|
92
|
-
* 2. User include (--include): explicit intent beats
|
|
93
|
-
* 3.
|
|
94
|
-
* 4.
|
|
91
|
+
* 1. The basis cache: excluded, never overridable.
|
|
92
|
+
* 2. User include (--include): explicit intent beats every other exclusion.
|
|
93
|
+
* 3. `.git` and `.DS_Store`.
|
|
94
|
+
* 4. Default Xcode/dependency excludes (when xcodeDefaults is set).
|
|
95
|
+
* 5. Built-in force-include: `*.xcconfig` (gitignored xcconfigs are still
|
|
95
96
|
* required to reproduce the build remotely). Gitignored projects are NOT
|
|
96
97
|
* force-included: limbuild regenerates them from project.yml, and
|
|
97
98
|
* exact-version holdouts force-sync theirs with `--include`.
|
|
98
|
-
*
|
|
99
|
+
* 6. `.gitignore` chain: the root file, plus nested ones with git semantics
|
|
99
100
|
* when xcodeDefaults is set (rules bind relative to their containing
|
|
100
101
|
* directory, deeper files override shallower ones). Only a decisive
|
|
101
|
-
* *exclude* short-circuits; a negation re-include defers to layer
|
|
102
|
-
* Directory pruning in the walk means only layers 2 and
|
|
102
|
+
* *exclude* short-circuits; a negation re-include defers to layer 7.
|
|
103
|
+
* Directory pruning in the walk means only layers 2 and 5 can reach a
|
|
103
104
|
* file whose parent directory is gitignore-excluded, and only when the
|
|
104
105
|
* predicate matches the pruned parent directory paths too.
|
|
105
|
-
*
|
|
106
|
+
* 7. User ignore (--ignore).
|
|
106
107
|
*/
|
|
107
108
|
export async function createIgnoreFn(rootDir: string, options: IgnoreFnOptions): Promise<IgnoreFn> {
|
|
108
109
|
const rootResolved = path.resolve(rootDir);
|
|
@@ -182,7 +183,17 @@ export async function createIgnoreFn(rootDir: string, options: IgnoreFnOptions):
|
|
|
182
183
|
if (!normalized) return false;
|
|
183
184
|
const withoutTrailingSlash = normalized.replace(/\/+$/, '');
|
|
184
185
|
|
|
185
|
-
// 1.
|
|
186
|
+
// 1. The basis cache must not sync itself, even when --include matches.
|
|
187
|
+
if (
|
|
188
|
+
shouldIgnoreBasisCache &&
|
|
189
|
+
(withoutTrailingSlash === basisCacheRelative ||
|
|
190
|
+
withoutTrailingSlash.startsWith(`${basisCacheRelative}/`))
|
|
191
|
+
) {
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
// 2. User include.
|
|
195
|
+
if (options.include?.(normalized)) return false;
|
|
196
|
+
// 3. Built-in excludes.
|
|
186
197
|
if (
|
|
187
198
|
withoutTrailingSlash === '.git' ||
|
|
188
199
|
withoutTrailingSlash.startsWith('.git/') ||
|
|
@@ -193,28 +204,19 @@ export async function createIgnoreFn(rootDir: string, options: IgnoreFnOptions):
|
|
|
193
204
|
) {
|
|
194
205
|
return true;
|
|
195
206
|
}
|
|
196
|
-
|
|
197
|
-
shouldIgnoreBasisCache &&
|
|
198
|
-
(withoutTrailingSlash === basisCacheRelative ||
|
|
199
|
-
withoutTrailingSlash.startsWith(`${basisCacheRelative}/`))
|
|
200
|
-
) {
|
|
201
|
-
return true;
|
|
202
|
-
}
|
|
203
|
-
// 2. User include.
|
|
204
|
-
if (options.include?.(normalized)) return false;
|
|
205
|
-
// 3. Default Xcode/dependency excludes.
|
|
207
|
+
// 4. Default Xcode/dependency excludes.
|
|
206
208
|
if (options.xcodeDefaults) {
|
|
207
209
|
for (const prefix of XCODE_DEFAULT_EXCLUDE_PREFIXES) {
|
|
208
210
|
if (normalized.startsWith(prefix)) return true;
|
|
209
211
|
}
|
|
210
212
|
if (normalized.includes('/xcuserdata/') || normalized.includes('.dSYM/')) return true;
|
|
211
213
|
}
|
|
212
|
-
//
|
|
214
|
+
// 5. Built-in force-include: gitignored xcconfigs are still required to
|
|
213
215
|
// reproduce the build remotely. Gitignored .xcodeproj bundles are NOT
|
|
214
216
|
// force-included: limbuild regenerates them from project.yml, and
|
|
215
217
|
// exact-version holdouts force-sync theirs with --include.
|
|
216
218
|
if (withoutTrailingSlash.endsWith('.xcconfig')) return false;
|
|
217
|
-
//
|
|
219
|
+
// 6. The .gitignore chain. Only a decisive *exclude* short-circuits; a
|
|
218
220
|
// negation re-include (decision.ignored === false) still falls through to
|
|
219
221
|
// the user --ignore layer, matching the pre-restructure precedence where
|
|
220
222
|
// gitignore never overrode --ignore for a re-included path.
|
|
@@ -237,7 +239,7 @@ export async function createIgnoreFn(rootDir: string, options: IgnoreFnOptions):
|
|
|
237
239
|
}
|
|
238
240
|
return true;
|
|
239
241
|
}
|
|
240
|
-
//
|
|
242
|
+
// 7. User ignore.
|
|
241
243
|
if (options.additional?.(normalized)) return true;
|
|
242
244
|
return false;
|
|
243
245
|
};
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = '0.40.
|
|
1
|
+
export const VERSION = '0.40.1'; // x-release-please-version
|
package/version.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.40.
|
|
1
|
+
export declare const VERSION = "0.40.1";
|
|
2
2
|
//# sourceMappingURL=version.d.mts.map
|
package/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.40.
|
|
1
|
+
export declare const VERSION = "0.40.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/version.js
CHANGED
package/version.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '0.40.
|
|
1
|
+
export const VERSION = '0.40.1'; // x-release-please-version
|
|
2
2
|
//# sourceMappingURL=version.mjs.map
|