@limrun/api 0.39.4 → 0.39.5
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 +38 -0
- package/folder-sync-ignore.d.mts.map +1 -1
- package/folder-sync-ignore.d.ts +38 -0
- package/folder-sync-ignore.d.ts.map +1 -1
- package/folder-sync-ignore.js +107 -12
- package/folder-sync-ignore.js.map +1 -1
- package/folder-sync-ignore.mjs +107 -12
- package/folder-sync-ignore.mjs.map +1 -1
- package/folder-sync.d.mts +6 -0
- package/folder-sync.d.mts.map +1 -1
- package/folder-sync.d.ts +6 -0
- package/folder-sync.d.ts.map +1 -1
- package/folder-sync.js +153 -13
- package/folder-sync.js.map +1 -1
- package/folder-sync.mjs +153 -13
- package/folder-sync.mjs.map +1 -1
- package/package.json +1 -1
- package/resources/xcode-instances-helpers.d.mts +6 -0
- package/resources/xcode-instances-helpers.d.mts.map +1 -1
- package/resources/xcode-instances-helpers.d.ts +6 -0
- package/resources/xcode-instances-helpers.d.ts.map +1 -1
- package/resources/xcode-instances-helpers.js +7 -25
- package/resources/xcode-instances-helpers.js.map +1 -1
- package/resources/xcode-instances-helpers.mjs +7 -25
- package/resources/xcode-instances-helpers.mjs.map +1 -1
- package/src/folder-sync-ignore.ts +128 -12
- package/src/folder-sync.ts +189 -17
- package/src/resources/xcode-instances-helpers.ts +13 -29
- 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.39.5 (2026-07-10)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.39.4...v0.39.5](https://github.com/limrun-inc/typescript-sdk/compare/v0.39.4...v0.39.5)
|
|
6
|
+
|
|
3
7
|
## 0.39.4 (2026-07-10)
|
|
4
8
|
|
|
5
9
|
Full Changelog: [v0.39.3...v0.39.4](https://github.com/limrun-inc/typescript-sdk/compare/v0.39.3...v0.39.4)
|
package/folder-sync-ignore.d.mts
CHANGED
|
@@ -1,9 +1,47 @@
|
|
|
1
1
|
export type IgnoreFn = (relativePath: string) => boolean;
|
|
2
2
|
export type IgnoreLogger = (level: 'debug' | 'info' | 'warn' | 'error', msg: string) => void;
|
|
3
3
|
export type IgnoreFnOptions = {
|
|
4
|
+
/** User-supplied extra excludes (the CLI's --ignore). Consulted after every built-in layer. */
|
|
4
5
|
additional?: IgnoreFn;
|
|
6
|
+
/**
|
|
7
|
+
* User-supplied force-includes (the CLI's --include): matches sync even when
|
|
8
|
+
* gitignored or covered by the default Xcode excludes. Only `.git`,
|
|
9
|
+
* `.DS_Store`, and the basis cache stay excluded. Note: the walk prunes
|
|
10
|
+
* gitignore-excluded directories, so to rescue files under a wholly-ignored
|
|
11
|
+
* parent the predicate must also match the parent directory paths (probed
|
|
12
|
+
* with a trailing slash), e.g. `^ios/` reaches `ios/GeneratedKit/...` but
|
|
13
|
+
* `GeneratedKit/` alone does not.
|
|
14
|
+
*/
|
|
15
|
+
include?: IgnoreFn;
|
|
16
|
+
/**
|
|
17
|
+
* "Xcode project sync mode." Enables the default Xcode/dependency excludes
|
|
18
|
+
* (build/, Pods/, xcuserdata/, …) and nested-.gitignore honoring. When
|
|
19
|
+
* unset (e.g. the app-bundle install sync) only the root .gitignore is
|
|
20
|
+
* read, so a build artifact isn't reshaped by gitignore files embedded
|
|
21
|
+
* in it.
|
|
22
|
+
*/
|
|
23
|
+
xcodeDefaults?: boolean;
|
|
5
24
|
basisCacheDir: string;
|
|
6
25
|
log?: IgnoreLogger;
|
|
7
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* Builds the layered sync ignore predicate. First decisive answer wins:
|
|
29
|
+
*
|
|
30
|
+
* 1. `.git`, `.DS_Store`, the basis cache: excluded, never overridable.
|
|
31
|
+
* 2. User include (--include): explicit intent beats the default excludes.
|
|
32
|
+
* 3. Default Xcode/dependency excludes (when xcodeDefaults is set).
|
|
33
|
+
* 4. Built-in force-include: `*.xcconfig` (gitignored xcconfigs are still
|
|
34
|
+
* required to reproduce the build remotely). Gitignored projects are NOT
|
|
35
|
+
* force-included: limbuild regenerates them from project.yml, and
|
|
36
|
+
* exact-version holdouts force-sync theirs with `--include`.
|
|
37
|
+
* 5. `.gitignore` chain: the root file, plus nested ones with git semantics
|
|
38
|
+
* when xcodeDefaults is set (rules bind relative to their containing
|
|
39
|
+
* directory, deeper files override shallower ones). Only a decisive
|
|
40
|
+
* *exclude* short-circuits; a negation re-include defers to layer 6.
|
|
41
|
+
* Directory pruning in the walk means only layers 2 and 4 can reach a
|
|
42
|
+
* file whose parent directory is gitignore-excluded, and only when the
|
|
43
|
+
* predicate matches the pruned parent directory paths too.
|
|
44
|
+
* 6. User ignore (--ignore).
|
|
45
|
+
*/
|
|
8
46
|
export declare function createIgnoreFn(rootDir: string, options: IgnoreFnOptions): Promise<IgnoreFn>;
|
|
9
47
|
//# 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,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB,CAAC;
|
|
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;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAyIjG"}
|
package/folder-sync-ignore.d.ts
CHANGED
|
@@ -1,9 +1,47 @@
|
|
|
1
1
|
export type IgnoreFn = (relativePath: string) => boolean;
|
|
2
2
|
export type IgnoreLogger = (level: 'debug' | 'info' | 'warn' | 'error', msg: string) => void;
|
|
3
3
|
export type IgnoreFnOptions = {
|
|
4
|
+
/** User-supplied extra excludes (the CLI's --ignore). Consulted after every built-in layer. */
|
|
4
5
|
additional?: IgnoreFn;
|
|
6
|
+
/**
|
|
7
|
+
* User-supplied force-includes (the CLI's --include): matches sync even when
|
|
8
|
+
* gitignored or covered by the default Xcode excludes. Only `.git`,
|
|
9
|
+
* `.DS_Store`, and the basis cache stay excluded. Note: the walk prunes
|
|
10
|
+
* gitignore-excluded directories, so to rescue files under a wholly-ignored
|
|
11
|
+
* parent the predicate must also match the parent directory paths (probed
|
|
12
|
+
* with a trailing slash), e.g. `^ios/` reaches `ios/GeneratedKit/...` but
|
|
13
|
+
* `GeneratedKit/` alone does not.
|
|
14
|
+
*/
|
|
15
|
+
include?: IgnoreFn;
|
|
16
|
+
/**
|
|
17
|
+
* "Xcode project sync mode." Enables the default Xcode/dependency excludes
|
|
18
|
+
* (build/, Pods/, xcuserdata/, …) and nested-.gitignore honoring. When
|
|
19
|
+
* unset (e.g. the app-bundle install sync) only the root .gitignore is
|
|
20
|
+
* read, so a build artifact isn't reshaped by gitignore files embedded
|
|
21
|
+
* in it.
|
|
22
|
+
*/
|
|
23
|
+
xcodeDefaults?: boolean;
|
|
5
24
|
basisCacheDir: string;
|
|
6
25
|
log?: IgnoreLogger;
|
|
7
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* Builds the layered sync ignore predicate. First decisive answer wins:
|
|
29
|
+
*
|
|
30
|
+
* 1. `.git`, `.DS_Store`, the basis cache: excluded, never overridable.
|
|
31
|
+
* 2. User include (--include): explicit intent beats the default excludes.
|
|
32
|
+
* 3. Default Xcode/dependency excludes (when xcodeDefaults is set).
|
|
33
|
+
* 4. Built-in force-include: `*.xcconfig` (gitignored xcconfigs are still
|
|
34
|
+
* required to reproduce the build remotely). Gitignored projects are NOT
|
|
35
|
+
* force-included: limbuild regenerates them from project.yml, and
|
|
36
|
+
* exact-version holdouts force-sync theirs with `--include`.
|
|
37
|
+
* 5. `.gitignore` chain: the root file, plus nested ones with git semantics
|
|
38
|
+
* when xcodeDefaults is set (rules bind relative to their containing
|
|
39
|
+
* directory, deeper files override shallower ones). Only a decisive
|
|
40
|
+
* *exclude* short-circuits; a negation re-include defers to layer 6.
|
|
41
|
+
* Directory pruning in the walk means only layers 2 and 4 can reach a
|
|
42
|
+
* file whose parent directory is gitignore-excluded, and only when the
|
|
43
|
+
* predicate matches the pruned parent directory paths too.
|
|
44
|
+
* 6. User ignore (--ignore).
|
|
45
|
+
*/
|
|
8
46
|
export declare function createIgnoreFn(rootDir: string, options: IgnoreFnOptions): Promise<IgnoreFn>;
|
|
9
47
|
//# 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,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB,CAAC;
|
|
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;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAyIjG"}
|
package/folder-sync-ignore.js
CHANGED
|
@@ -39,22 +39,94 @@ async function getGitTrackedSets(rootDir) {
|
|
|
39
39
|
return null;
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
+
// Root-anchored (top-level only) default excludes; nested build junk is the
|
|
43
|
+
// project's own nested .gitignore's job. xcuserdata/.dSYM below are any-depth.
|
|
44
|
+
const XCODE_DEFAULT_EXCLUDE_PREFIXES = [
|
|
45
|
+
'build/',
|
|
46
|
+
'.build/',
|
|
47
|
+
'DerivedData/',
|
|
48
|
+
'Index.noindex/',
|
|
49
|
+
'ModuleCache.noindex/',
|
|
50
|
+
'.index-build/',
|
|
51
|
+
'.swiftpm/',
|
|
52
|
+
'Pods/',
|
|
53
|
+
'Carthage/Build/',
|
|
54
|
+
];
|
|
55
|
+
/**
|
|
56
|
+
* Builds the layered sync ignore predicate. First decisive answer wins:
|
|
57
|
+
*
|
|
58
|
+
* 1. `.git`, `.DS_Store`, the basis cache: excluded, never overridable.
|
|
59
|
+
* 2. User include (--include): explicit intent beats the default excludes.
|
|
60
|
+
* 3. Default Xcode/dependency excludes (when xcodeDefaults is set).
|
|
61
|
+
* 4. Built-in force-include: `*.xcconfig` (gitignored xcconfigs are still
|
|
62
|
+
* required to reproduce the build remotely). Gitignored projects are NOT
|
|
63
|
+
* force-included: limbuild regenerates them from project.yml, and
|
|
64
|
+
* exact-version holdouts force-sync theirs with `--include`.
|
|
65
|
+
* 5. `.gitignore` chain: the root file, plus nested ones with git semantics
|
|
66
|
+
* when xcodeDefaults is set (rules bind relative to their containing
|
|
67
|
+
* directory, deeper files override shallower ones). Only a decisive
|
|
68
|
+
* *exclude* short-circuits; a negation re-include defers to layer 6.
|
|
69
|
+
* Directory pruning in the walk means only layers 2 and 4 can reach a
|
|
70
|
+
* file whose parent directory is gitignore-excluded, and only when the
|
|
71
|
+
* predicate matches the pruned parent directory paths too.
|
|
72
|
+
* 6. User ignore (--ignore).
|
|
73
|
+
*/
|
|
42
74
|
async function createIgnoreFn(rootDir, options) {
|
|
43
75
|
const rootResolved = path_1.default.resolve(rootDir);
|
|
76
|
+
// Per-directory .gitignore instances, lazily loaded; key is the dir path
|
|
77
|
+
// relative to the root ('' = root), value null when the dir has none.
|
|
44
78
|
// ignorecase: false matches git's default semantics. The package defaults to true,
|
|
45
79
|
// which silently drops e.g. `Vendor/` when .gitignore says `vendor/` (Ruby convention).
|
|
46
80
|
// allowRelativePaths: true so a `../`-style path doesn't throw mid-sync — treat it as
|
|
47
81
|
// "not ignored" and let it through, since the cost of dropping a needed file is higher
|
|
48
82
|
// than including an unexpected one.
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
83
|
+
const dirIgnores = new Map();
|
|
84
|
+
const gitignoreFor = (dirRel) => {
|
|
85
|
+
let ig = dirIgnores.get(dirRel);
|
|
86
|
+
if (ig !== undefined)
|
|
87
|
+
return ig;
|
|
88
|
+
try {
|
|
89
|
+
const content = fs_1.default.readFileSync(path_1.default.join(rootResolved, dirRel.split('/').join(path_1.default.sep), '.gitignore'), 'utf-8');
|
|
90
|
+
ig = (0, ignore_1.default)({ ignorecase: false, allowRelativePaths: true }).add(content);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
ig = null;
|
|
94
|
+
}
|
|
95
|
+
dirIgnores.set(dirRel, ig);
|
|
96
|
+
return ig;
|
|
97
|
+
};
|
|
98
|
+
// xcodeDefaults selects "Xcode project sync mode": besides the default junk
|
|
99
|
+
// excludes it also enables nested-.gitignore honoring and the project-file
|
|
100
|
+
// force-includes below. Callers that don't set it (e.g. the app-bundle
|
|
101
|
+
// install sync) keep the legacy behavior: root-only .gitignore and no
|
|
102
|
+
// project force-includes, so a build artifact isn't reshaped by gitignore
|
|
103
|
+
// files or Xcode-specific rules that happen to sit inside it.
|
|
104
|
+
const nestedGitignore = !!options.xcodeDefaults;
|
|
105
|
+
// Evaluates the .gitignore chain for a path (trailing slash preserved so
|
|
106
|
+
// dir-only rules like `build/` match the directory itself). Files are
|
|
107
|
+
// consulted root-to-deepest; the last decisive match wins, so deeper
|
|
108
|
+
// files naturally override shallower ones. When nestedGitignore is off,
|
|
109
|
+
// only the root .gitignore is consulted.
|
|
110
|
+
const gitignoreDecision = (testPath) => {
|
|
111
|
+
const withoutTrailingSlash = testPath.replace(/\/+$/, '');
|
|
112
|
+
const trailingSlash = testPath.endsWith('/') ? '/' : '';
|
|
113
|
+
const parts = withoutTrailingSlash.split('/');
|
|
114
|
+
let decision;
|
|
115
|
+
const depth = nestedGitignore ? parts.length : 1;
|
|
116
|
+
for (let i = 0; i < depth; i++) {
|
|
117
|
+
const ig = gitignoreFor(parts.slice(0, i).join('/'));
|
|
118
|
+
if (!ig)
|
|
119
|
+
continue;
|
|
120
|
+
const result = ig.test(parts.slice(i).join('/') + trailingSlash);
|
|
121
|
+
if (result.ignored || result.unignored) {
|
|
122
|
+
decision = { ignored: result.ignored };
|
|
123
|
+
const rule = result.rule?.pattern;
|
|
124
|
+
if (rule !== undefined)
|
|
125
|
+
decision.rule = rule;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return decision;
|
|
129
|
+
};
|
|
58
130
|
const basisCacheRelative = normalizeRelativePath(path_1.default.relative(rootResolved, options.basisCacheDir)).replace(/\/+$/, '');
|
|
59
131
|
const shouldIgnoreBasisCache = basisCacheRelative &&
|
|
60
132
|
basisCacheRelative !== '.' &&
|
|
@@ -69,6 +141,7 @@ async function createIgnoreFn(rootDir, options) {
|
|
|
69
141
|
if (!normalized)
|
|
70
142
|
return false;
|
|
71
143
|
const withoutTrailingSlash = normalized.replace(/\/+$/, '');
|
|
144
|
+
// 1. Never overridable.
|
|
72
145
|
if (withoutTrailingSlash === '.git' ||
|
|
73
146
|
withoutTrailingSlash.startsWith('.git/') ||
|
|
74
147
|
withoutTrailingSlash.endsWith('/.git') ||
|
|
@@ -82,15 +155,36 @@ async function createIgnoreFn(rootDir, options) {
|
|
|
82
155
|
withoutTrailingSlash.startsWith(`${basisCacheRelative}/`))) {
|
|
83
156
|
return true;
|
|
84
157
|
}
|
|
158
|
+
// 2. User include.
|
|
159
|
+
if (options.include?.(normalized))
|
|
160
|
+
return false;
|
|
161
|
+
// 3. Default Xcode/dependency excludes.
|
|
162
|
+
if (options.xcodeDefaults) {
|
|
163
|
+
for (const prefix of XCODE_DEFAULT_EXCLUDE_PREFIXES) {
|
|
164
|
+
if (normalized.startsWith(prefix))
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
if (normalized.includes('/xcuserdata/') || normalized.includes('.dSYM/'))
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
// 4. Built-in force-include: gitignored xcconfigs are still required to
|
|
171
|
+
// reproduce the build remotely. Gitignored .xcodeproj bundles are NOT
|
|
172
|
+
// force-included: limbuild regenerates them from project.yml, and
|
|
173
|
+
// exact-version holdouts force-sync theirs with --include.
|
|
85
174
|
if (withoutTrailingSlash.endsWith('.xcconfig'))
|
|
86
175
|
return false;
|
|
87
|
-
|
|
176
|
+
// 5. The .gitignore chain. Only a decisive *exclude* short-circuits; a
|
|
177
|
+
// negation re-include (decision.ignored === false) still falls through to
|
|
178
|
+
// the user --ignore layer, matching the pre-restructure precedence where
|
|
179
|
+
// gitignore never overrode --ignore for a re-included path.
|
|
180
|
+
const decision = gitignoreDecision(normalized);
|
|
181
|
+
if (decision?.ignored) {
|
|
88
182
|
if (trackedSets &&
|
|
89
183
|
(trackedSets.tracked.has(withoutTrailingSlash) || trackedSets.prefixes.has(withoutTrailingSlash))) {
|
|
90
|
-
const rule =
|
|
184
|
+
const rule = decision.rule ?? '<unknown>';
|
|
91
185
|
if (!warnedRules.has(rule)) {
|
|
92
186
|
warnedRules.add(rule);
|
|
93
|
-
const msg = `.gitignore rule '${rule}' is dropping '${withoutTrailingSlash}', which is tracked in git. The remote build will not see this path. Remove or scope the rule if you need it synced.`;
|
|
187
|
+
const msg = `.gitignore rule '${rule}' is dropping '${withoutTrailingSlash}', which is tracked in git. The remote build will not see this path. Remove or scope the rule, or pass --include, if you need it synced.`;
|
|
94
188
|
if (log) {
|
|
95
189
|
log('warn', msg);
|
|
96
190
|
}
|
|
@@ -101,6 +195,7 @@ async function createIgnoreFn(rootDir, options) {
|
|
|
101
195
|
}
|
|
102
196
|
return true;
|
|
103
197
|
}
|
|
198
|
+
// 6. User ignore.
|
|
104
199
|
if (options.additional?.(normalized))
|
|
105
200
|
return true;
|
|
106
201
|
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
|
@@ -35,22 +35,94 @@ async function getGitTrackedSets(rootDir) {
|
|
|
35
35
|
return null;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
+
// Root-anchored (top-level only) default excludes; nested build junk is the
|
|
39
|
+
// project's own nested .gitignore's job. xcuserdata/.dSYM below are any-depth.
|
|
40
|
+
const XCODE_DEFAULT_EXCLUDE_PREFIXES = [
|
|
41
|
+
'build/',
|
|
42
|
+
'.build/',
|
|
43
|
+
'DerivedData/',
|
|
44
|
+
'Index.noindex/',
|
|
45
|
+
'ModuleCache.noindex/',
|
|
46
|
+
'.index-build/',
|
|
47
|
+
'.swiftpm/',
|
|
48
|
+
'Pods/',
|
|
49
|
+
'Carthage/Build/',
|
|
50
|
+
];
|
|
51
|
+
/**
|
|
52
|
+
* Builds the layered sync ignore predicate. First decisive answer wins:
|
|
53
|
+
*
|
|
54
|
+
* 1. `.git`, `.DS_Store`, the basis cache: excluded, never overridable.
|
|
55
|
+
* 2. User include (--include): explicit intent beats the default excludes.
|
|
56
|
+
* 3. Default Xcode/dependency excludes (when xcodeDefaults is set).
|
|
57
|
+
* 4. Built-in force-include: `*.xcconfig` (gitignored xcconfigs are still
|
|
58
|
+
* required to reproduce the build remotely). Gitignored projects are NOT
|
|
59
|
+
* force-included: limbuild regenerates them from project.yml, and
|
|
60
|
+
* exact-version holdouts force-sync theirs with `--include`.
|
|
61
|
+
* 5. `.gitignore` chain: the root file, plus nested ones with git semantics
|
|
62
|
+
* when xcodeDefaults is set (rules bind relative to their containing
|
|
63
|
+
* directory, deeper files override shallower ones). Only a decisive
|
|
64
|
+
* *exclude* short-circuits; a negation re-include defers to layer 6.
|
|
65
|
+
* Directory pruning in the walk means only layers 2 and 4 can reach a
|
|
66
|
+
* file whose parent directory is gitignore-excluded, and only when the
|
|
67
|
+
* predicate matches the pruned parent directory paths too.
|
|
68
|
+
* 6. User ignore (--ignore).
|
|
69
|
+
*/
|
|
38
70
|
export async function createIgnoreFn(rootDir, options) {
|
|
39
71
|
const rootResolved = path.resolve(rootDir);
|
|
72
|
+
// Per-directory .gitignore instances, lazily loaded; key is the dir path
|
|
73
|
+
// relative to the root ('' = root), value null when the dir has none.
|
|
40
74
|
// ignorecase: false matches git's default semantics. The package defaults to true,
|
|
41
75
|
// which silently drops e.g. `Vendor/` when .gitignore says `vendor/` (Ruby convention).
|
|
42
76
|
// allowRelativePaths: true so a `../`-style path doesn't throw mid-sync — treat it as
|
|
43
77
|
// "not ignored" and let it through, since the cost of dropping a needed file is higher
|
|
44
78
|
// than including an unexpected one.
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
79
|
+
const dirIgnores = new Map();
|
|
80
|
+
const gitignoreFor = (dirRel) => {
|
|
81
|
+
let ig = dirIgnores.get(dirRel);
|
|
82
|
+
if (ig !== undefined)
|
|
83
|
+
return ig;
|
|
84
|
+
try {
|
|
85
|
+
const content = fs.readFileSync(path.join(rootResolved, dirRel.split('/').join(path.sep), '.gitignore'), 'utf-8');
|
|
86
|
+
ig = ignorePkg({ ignorecase: false, allowRelativePaths: true }).add(content);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
ig = null;
|
|
90
|
+
}
|
|
91
|
+
dirIgnores.set(dirRel, ig);
|
|
92
|
+
return ig;
|
|
93
|
+
};
|
|
94
|
+
// xcodeDefaults selects "Xcode project sync mode": besides the default junk
|
|
95
|
+
// excludes it also enables nested-.gitignore honoring and the project-file
|
|
96
|
+
// force-includes below. Callers that don't set it (e.g. the app-bundle
|
|
97
|
+
// install sync) keep the legacy behavior: root-only .gitignore and no
|
|
98
|
+
// project force-includes, so a build artifact isn't reshaped by gitignore
|
|
99
|
+
// files or Xcode-specific rules that happen to sit inside it.
|
|
100
|
+
const nestedGitignore = !!options.xcodeDefaults;
|
|
101
|
+
// Evaluates the .gitignore chain for a path (trailing slash preserved so
|
|
102
|
+
// dir-only rules like `build/` match the directory itself). Files are
|
|
103
|
+
// consulted root-to-deepest; the last decisive match wins, so deeper
|
|
104
|
+
// files naturally override shallower ones. When nestedGitignore is off,
|
|
105
|
+
// only the root .gitignore is consulted.
|
|
106
|
+
const gitignoreDecision = (testPath) => {
|
|
107
|
+
const withoutTrailingSlash = testPath.replace(/\/+$/, '');
|
|
108
|
+
const trailingSlash = testPath.endsWith('/') ? '/' : '';
|
|
109
|
+
const parts = withoutTrailingSlash.split('/');
|
|
110
|
+
let decision;
|
|
111
|
+
const depth = nestedGitignore ? parts.length : 1;
|
|
112
|
+
for (let i = 0; i < depth; i++) {
|
|
113
|
+
const ig = gitignoreFor(parts.slice(0, i).join('/'));
|
|
114
|
+
if (!ig)
|
|
115
|
+
continue;
|
|
116
|
+
const result = ig.test(parts.slice(i).join('/') + trailingSlash);
|
|
117
|
+
if (result.ignored || result.unignored) {
|
|
118
|
+
decision = { ignored: result.ignored };
|
|
119
|
+
const rule = result.rule?.pattern;
|
|
120
|
+
if (rule !== undefined)
|
|
121
|
+
decision.rule = rule;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return decision;
|
|
125
|
+
};
|
|
54
126
|
const basisCacheRelative = normalizeRelativePath(path.relative(rootResolved, options.basisCacheDir)).replace(/\/+$/, '');
|
|
55
127
|
const shouldIgnoreBasisCache = basisCacheRelative &&
|
|
56
128
|
basisCacheRelative !== '.' &&
|
|
@@ -65,6 +137,7 @@ export async function createIgnoreFn(rootDir, options) {
|
|
|
65
137
|
if (!normalized)
|
|
66
138
|
return false;
|
|
67
139
|
const withoutTrailingSlash = normalized.replace(/\/+$/, '');
|
|
140
|
+
// 1. Never overridable.
|
|
68
141
|
if (withoutTrailingSlash === '.git' ||
|
|
69
142
|
withoutTrailingSlash.startsWith('.git/') ||
|
|
70
143
|
withoutTrailingSlash.endsWith('/.git') ||
|
|
@@ -78,15 +151,36 @@ export async function createIgnoreFn(rootDir, options) {
|
|
|
78
151
|
withoutTrailingSlash.startsWith(`${basisCacheRelative}/`))) {
|
|
79
152
|
return true;
|
|
80
153
|
}
|
|
154
|
+
// 2. User include.
|
|
155
|
+
if (options.include?.(normalized))
|
|
156
|
+
return false;
|
|
157
|
+
// 3. Default Xcode/dependency excludes.
|
|
158
|
+
if (options.xcodeDefaults) {
|
|
159
|
+
for (const prefix of XCODE_DEFAULT_EXCLUDE_PREFIXES) {
|
|
160
|
+
if (normalized.startsWith(prefix))
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
if (normalized.includes('/xcuserdata/') || normalized.includes('.dSYM/'))
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
// 4. Built-in force-include: gitignored xcconfigs are still required to
|
|
167
|
+
// reproduce the build remotely. Gitignored .xcodeproj bundles are NOT
|
|
168
|
+
// force-included: limbuild regenerates them from project.yml, and
|
|
169
|
+
// exact-version holdouts force-sync theirs with --include.
|
|
81
170
|
if (withoutTrailingSlash.endsWith('.xcconfig'))
|
|
82
171
|
return false;
|
|
83
|
-
|
|
172
|
+
// 5. The .gitignore chain. Only a decisive *exclude* short-circuits; a
|
|
173
|
+
// negation re-include (decision.ignored === false) still falls through to
|
|
174
|
+
// the user --ignore layer, matching the pre-restructure precedence where
|
|
175
|
+
// gitignore never overrode --ignore for a re-included path.
|
|
176
|
+
const decision = gitignoreDecision(normalized);
|
|
177
|
+
if (decision?.ignored) {
|
|
84
178
|
if (trackedSets &&
|
|
85
179
|
(trackedSets.tracked.has(withoutTrailingSlash) || trackedSets.prefixes.has(withoutTrailingSlash))) {
|
|
86
|
-
const rule =
|
|
180
|
+
const rule = decision.rule ?? '<unknown>';
|
|
87
181
|
if (!warnedRules.has(rule)) {
|
|
88
182
|
warnedRules.add(rule);
|
|
89
|
-
const msg = `.gitignore rule '${rule}' is dropping '${withoutTrailingSlash}', which is tracked in git. The remote build will not see this path. Remove or scope the rule if you need it synced.`;
|
|
183
|
+
const msg = `.gitignore rule '${rule}' is dropping '${withoutTrailingSlash}', which is tracked in git. The remote build will not see this path. Remove or scope the rule, or pass --include, if you need it synced.`;
|
|
90
184
|
if (log) {
|
|
91
185
|
log('warn', msg);
|
|
92
186
|
}
|
|
@@ -97,6 +191,7 @@ export async function createIgnoreFn(rootDir, options) {
|
|
|
97
191
|
}
|
|
98
192
|
return true;
|
|
99
193
|
}
|
|
194
|
+
// 6. User ignore.
|
|
100
195
|
if (options.additional?.(normalized))
|
|
101
196
|
return true;
|
|
102
197
|
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,
|
|
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;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,OAAwB;IAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3C,yEAAyE;IACzE,sEAAsE;IACtE,mFAAmF;IACnF,wFAAwF;IACxF,sFAAsF;IACtF,uFAAuF;IACvF,oCAAoC;IACpC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;IACpD,MAAM,YAAY,GAAG,CAAC,MAAc,EAAiB,EAAE;QACrD,IAAI,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAC7B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,EACvE,OAAO,CACR,CAAC;YACF,EAAE,GAAG,SAAS,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/E,CAAC;QAAC,MAAM,CAAC;YACP,EAAE,GAAG,IAAI,CAAC;QACZ,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,4EAA4E;IAC5E,2EAA2E;IAC3E,uEAAuE;IACvE,sEAAsE;IACtE,0EAA0E;IAC1E,8DAA8D;IAC9D,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IAEhD,yEAAyE;IACzE,sEAAsE;IACtE,qEAAqE;IACrE,wEAAwE;IACxE,yCAAyC;IACzC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAmD,EAAE;QAC9F,MAAM,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,QAAyD,CAAC;QAC9D,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,EAAE;gBAAE,SAAS;YAClB,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;YACjE,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACvC,QAAQ,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAI,MAA0C,CAAC,IAAI,EAAE,OAAO,CAAC;gBACvE,IAAI,IAAI,KAAK,SAAS;oBAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,qBAAqB,CAC9C,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,CACnD,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtB,MAAM,sBAAsB,GAC1B,kBAAkB;QAClB,kBAAkB,KAAK,GAAG;QAC1B,kBAAkB,KAAK,IAAI;QAC3B,CAAC,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,wFAAwF;IACxF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAEtC,OAAO,CAAC,YAAoB,EAAE,EAAE;QAC9B,MAAM,UAAU,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAC9B,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAE5D,wBAAwB;QACxB,IACE,oBAAoB,KAAK,MAAM;YAC/B,oBAAoB,CAAC,UAAU,CAAC,OAAO,CAAC;YACxC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC;YACtC,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvC,oBAAoB,KAAK,WAAW;YACpC,oBAAoB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC3C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IACE,sBAAsB;YACtB,CAAC,oBAAoB,KAAK,kBAAkB;gBAC1C,oBAAoB,CAAC,UAAU,CAAC,GAAG,kBAAkB,GAAG,CAAC,CAAC,EAC5D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,mBAAmB;QACnB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QAChD,wCAAwC;QACxC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,KAAK,MAAM,MAAM,IAAI,8BAA8B,EAAE,CAAC;gBACpD,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,OAAO,IAAI,CAAC;YACjD,CAAC;YACD,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAC;QACxF,CAAC;QACD,wEAAwE;QACxE,sEAAsE;QACtE,kEAAkE;QAClE,2DAA2D;QAC3D,IAAI,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7D,uEAAuE;QACvE,0EAA0E;QAC1E,yEAAyE;QACzE,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,QAAQ,EAAE,OAAO,EAAE,CAAC;YACtB,IACE,WAAW;gBACX,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,EACjG,CAAC;gBACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,WAAW,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACtB,MAAM,GAAG,GAAG,oBAAoB,IAAI,kBAAkB,oBAAoB,0IAA0I,CAAC;oBACrN,IAAI,GAAG,EAAE,CAAC;wBACR,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;oBACpC,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,kBAAkB;QAClB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
|
package/folder-sync.d.mts
CHANGED
|
@@ -32,6 +32,12 @@ export type FolderSyncOptions = {
|
|
|
32
32
|
* ignoreFn: (path) => !(path.startsWith('src/') || path.endsWith('.json'))
|
|
33
33
|
*/
|
|
34
34
|
ignoreFn: IgnoreFn;
|
|
35
|
+
/**
|
|
36
|
+
* Sync symlinks as symlinks (relative, in-root targets only). Off by
|
|
37
|
+
* default: only the limbuild workspace sync understands link entries;
|
|
38
|
+
* the limulator app-install sync keeps the historical skip behavior.
|
|
39
|
+
*/
|
|
40
|
+
syncSymlinks?: boolean;
|
|
35
41
|
/**
|
|
36
42
|
* Extra files to sync into limbuild. These are included
|
|
37
43
|
* in every sync pass but are not watched directly.
|
package/folder-sync.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder-sync.d.mts","sourceRoot":"","sources":["src/folder-sync.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,QAAQ,EAAE,iCAA6B;AAWrD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,qBAAqB,GAAG,mBAAmB,CAAC;IACxD,uFAAuF;IACvF,KAAK,EAAE,OAAO,CAAC;IACf,iCAAiC;IACjC,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAC5C,4GAA4G;IAC5G,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"folder-sync.d.mts","sourceRoot":"","sources":["src/folder-sync.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,QAAQ,EAAE,iCAA6B;AAWrD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,qBAAqB,GAAG,mBAAmB,CAAC;IACxD,uFAAuF;IACvF,KAAK,EAAE,OAAO,CAAC;IACf,iCAAiC;IACjC,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,eAAe,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAC5C,4GAA4G;IAC5G,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAwYhF;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CA2CjB;AAmDD,wBAAsB,UAAU,CAC9B,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CA6F3B"}
|
package/folder-sync.d.ts
CHANGED
|
@@ -32,6 +32,12 @@ export type FolderSyncOptions = {
|
|
|
32
32
|
* ignoreFn: (path) => !(path.startsWith('src/') || path.endsWith('.json'))
|
|
33
33
|
*/
|
|
34
34
|
ignoreFn: IgnoreFn;
|
|
35
|
+
/**
|
|
36
|
+
* Sync symlinks as symlinks (relative, in-root targets only). Off by
|
|
37
|
+
* default: only the limbuild workspace sync understands link entries;
|
|
38
|
+
* the limulator app-install sync keeps the historical skip behavior.
|
|
39
|
+
*/
|
|
40
|
+
syncSymlinks?: boolean;
|
|
35
41
|
/**
|
|
36
42
|
* Extra files to sync into limbuild. These are included
|
|
37
43
|
* in every sync pass but are not watched directly.
|
package/folder-sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder-sync.d.ts","sourceRoot":"","sources":["src/folder-sync.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,QAAQ,EAAE,gCAA6B;AAWrD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,qBAAqB,GAAG,mBAAmB,CAAC;IACxD,uFAAuF;IACvF,KAAK,EAAE,OAAO,CAAC;IACf,iCAAiC;IACjC,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAC5C,4GAA4G;IAC5G,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"folder-sync.d.ts","sourceRoot":"","sources":["src/folder-sync.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,QAAQ,EAAE,gCAA6B;AAWrD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,qBAAqB,GAAG,mBAAmB,CAAC;IACxD,uFAAuF;IACvF,KAAK,EAAE,OAAO,CAAC;IACf,iCAAiC;IACjC,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,eAAe,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAC5C,4GAA4G;IAC5G,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAwYhF;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CA2CjB;AAmDD,wBAAsB,UAAU,CAC9B,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CA6F3B"}
|