@anvil-works/anvil-cli 0.7.5 → 0.7.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"WatchSession.d.ts","sourceRoot":"","sources":["../src/WatchSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WatchSession.d.ts","sourceRoot":"","sources":["../src/WatchSession.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -14388,273 +14388,6 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
14388
14388
  return true;
14389
14389
  }
14390
14390
  }
14391
- const ANVIL_DEPS_DIR = ".anvil/deps";
14392
- const ANVIL_DEPS_MANIFEST = "manifest.json";
14393
- const DEPS_MANIFEST_VERSION = 1;
14394
- function formatFetchError(prefix, status, errorBody) {
14395
- if (!errorBody) return `${prefix}: ${status}`;
14396
- try {
14397
- const parsed = JSON.parse(errorBody);
14398
- if ("string" == typeof parsed.error && parsed.error.trim()) return `${prefix}: ${parsed.error} (${status})`;
14399
- } catch {}
14400
- return `${prefix}: ${status} ${errorBody}`;
14401
- }
14402
- async function fetchAllDependencies(appId, anvilUrl = resolveAnvilUrl(), options = {}) {
14403
- const { commit, includeDocs = true, knownDependencies = [] } = options;
14404
- const token = await auth_getValidAuthToken(anvilUrl);
14405
- const body = {
14406
- include_docs: includeDocs,
14407
- known_dependencies: knownDependencies
14408
- };
14409
- if (commit) body.commit = commit;
14410
- const resp = await fetch(`${anvilUrl}/ide/api/_/apps/${appId}/resolved-dependencies`, {
14411
- method: "POST",
14412
- headers: {
14413
- Authorization: `Bearer ${token}`,
14414
- "Content-Type": "application/json"
14415
- },
14416
- body: JSON.stringify(body)
14417
- });
14418
- if (!resp.ok) {
14419
- const errorBody = await resp.text();
14420
- throw new Error(formatFetchError("Failed to fetch dependencies", resp.status, errorBody));
14421
- }
14422
- return await resp.json();
14423
- }
14424
- async function refreshDependencyCache(projectRoot, appId, anvilUrl = resolveAnvilUrl(), options = {}) {
14425
- const includeDocs = options.includeDocs ?? true;
14426
- const knownDependencies = await getKnownDependenciesForCache(projectRoot, includeDocs);
14427
- const response = await fetchAllDependencies(appId, anvilUrl, {
14428
- commit: options.commit,
14429
- includeDocs,
14430
- knownDependencies
14431
- });
14432
- if (!response.resolved_dependencies.length) {
14433
- await clearDepsCache(projectRoot);
14434
- return {
14435
- response,
14436
- addedGitignoreEntry: false
14437
- };
14438
- }
14439
- const addedGitignoreEntry = await ensureProjectGitignoreIgnoresAnvilDir(projectRoot);
14440
- await writeAllDepsToCache(projectRoot, response, {
14441
- includeDocs
14442
- });
14443
- return {
14444
- response,
14445
- addedGitignoreEntry
14446
- };
14447
- }
14448
- function depsDir(projectRoot) {
14449
- return external_path_default().join(projectRoot, ANVIL_DEPS_DIR);
14450
- }
14451
- function depsManifestPath(projectRoot) {
14452
- return external_path_default().join(depsDir(projectRoot), ANVIL_DEPS_MANIFEST);
14453
- }
14454
- function isResolvedDependencyManifestEntry(value) {
14455
- if (!value || "object" != typeof value) return false;
14456
- const entry = value;
14457
- return "string" == typeof entry.app_id && entry.app_id.length > 0 && "string" == typeof entry.commit_id && entry.commit_id.length > 0 && (void 0 === entry.branch || "string" == typeof entry.branch);
14458
- }
14459
- function isCachedDependencyManifestEntry(value) {
14460
- if (!isResolvedDependencyManifestEntry(value)) return false;
14461
- const entry = value;
14462
- return "string" == typeof entry.package_name && entry.package_name.length > 0;
14463
- }
14464
- function isDepsCacheManifest(value) {
14465
- if (!value || "object" != typeof value) return false;
14466
- const manifest = value;
14467
- return manifest.version === DEPS_MANIFEST_VERSION && "boolean" == typeof manifest.includeDocs && Array.isArray(manifest.resolved_dependencies) && manifest.resolved_dependencies.every(isResolvedDependencyManifestEntry) && Array.isArray(manifest.cached_dependencies) && manifest.cached_dependencies.every(isCachedDependencyManifestEntry);
14468
- }
14469
- async function readDepsCacheManifest(projectRoot) {
14470
- try {
14471
- const raw = await promises_default().readFile(depsManifestPath(projectRoot), "utf-8");
14472
- const parsed = JSON.parse(raw);
14473
- return isDepsCacheManifest(parsed) ? parsed : void 0;
14474
- } catch {
14475
- return;
14476
- }
14477
- }
14478
- async function getKnownDependenciesForCache(projectRoot, includeDocs) {
14479
- const manifest = await readDepsCacheManifest(projectRoot);
14480
- if (!manifest || manifest.includeDocs !== includeDocs) return [];
14481
- return manifest.resolved_dependencies.map(({ app_id, commit_id })=>({
14482
- app_id,
14483
- commit_id
14484
- }));
14485
- }
14486
- function getDependencyWatchSubscriptionsFromManifest(manifest) {
14487
- if (!manifest) return [];
14488
- const cachedByAppId = new Map(manifest.cached_dependencies.map((dep)=>[
14489
- dep.app_id,
14490
- dep
14491
- ]));
14492
- return manifest.resolved_dependencies.flatMap((dep)=>{
14493
- if (!dep.branch) return [];
14494
- return [
14495
- {
14496
- appId: dep.app_id,
14497
- branch: dep.branch,
14498
- packageName: cachedByAppId.get(dep.app_id)?.package_name
14499
- }
14500
- ];
14501
- });
14502
- }
14503
- function normalizeAnvilYamlDependenciesFromContent(content) {
14504
- const parsed = external_js_yaml_default().load(content);
14505
- if (!parsed || "object" != typeof parsed || !Array.isArray(parsed.dependencies)) return [];
14506
- return normalizeAnvilYamlDependenciesValue(parsed.dependencies);
14507
- }
14508
- function normalizeAnvilYamlDependenciesValue(value) {
14509
- if (!Array.isArray(value)) return [];
14510
- return normalizeForComparison(value);
14511
- }
14512
- async function readAnvilYamlDependencies(projectRoot) {
14513
- try {
14514
- const content = await promises_default().readFile(external_path_default().join(projectRoot, "anvil.yaml"), "utf-8");
14515
- return normalizeAnvilYamlDependenciesFromContent(content);
14516
- } catch {
14517
- return [];
14518
- }
14519
- }
14520
- function anvilYamlDependenciesEqual(left, right) {
14521
- return deepEqual(left, right);
14522
- }
14523
- function normalizeForComparison(value) {
14524
- if (Array.isArray(value)) return value.map(normalizeForComparison);
14525
- if (value && "object" == typeof value) return Object.fromEntries(Object.entries(value).sort(([left], [right])=>left.localeCompare(right)).map(([key, entryValue])=>[
14526
- key,
14527
- normalizeForComparison(entryValue)
14528
- ]));
14529
- return value;
14530
- }
14531
- function cachedManifestEntry(dep, packageName) {
14532
- return {
14533
- app_id: dep.app_id,
14534
- commit_id: dep.commit_id,
14535
- ...dep.branch ? {
14536
- branch: dep.branch
14537
- } : {},
14538
- package_name: packageName
14539
- };
14540
- }
14541
- function safeDependencyPath(filePath, kind) {
14542
- const normalizedPath = external_path_default().normalize(filePath);
14543
- if (external_path_default().isAbsolute(normalizedPath) || normalizedPath.startsWith("..")) throw new Error(`Invalid dependency ${kind} path: ${filePath}`);
14544
- return normalizedPath;
14545
- }
14546
- async function writeDepToCache(projectRoot, dep) {
14547
- const depDir = external_path_default().join(projectRoot, ANVIL_DEPS_DIR, dep.package_name);
14548
- await promises_default().rm(depDir, {
14549
- recursive: true,
14550
- force: true
14551
- });
14552
- await promises_default().mkdir(external_path_default().join(depDir, "client_code"), {
14553
- recursive: true
14554
- });
14555
- await promises_default().mkdir(external_path_default().join(depDir, "server_code"), {
14556
- recursive: true
14557
- });
14558
- await promises_default().writeFile(external_path_default().join(depDir, "anvil.yaml"), external_js_yaml_default().dump({
14559
- package_name: dep.package_name
14560
- }));
14561
- for (const mod of dep.modules ?? [])if (mod.is_package) {
14562
- const modDir = external_path_default().join(depDir, "client_code", mod.name);
14563
- await promises_default().mkdir(modDir, {
14564
- recursive: true
14565
- });
14566
- await promises_default().writeFile(external_path_default().join(modDir, "__init__.py"), mod.code);
14567
- } else await promises_default().writeFile(external_path_default().join(depDir, "client_code", `${mod.name}.py`), mod.code);
14568
- for (const form of dep.forms ?? []){
14569
- const { code, class_name, is_package, ...formTemplate } = form;
14570
- if (is_package) {
14571
- const formDir = external_path_default().join(depDir, "client_code", class_name);
14572
- await promises_default().mkdir(formDir, {
14573
- recursive: true
14574
- });
14575
- await promises_default().writeFile(external_path_default().join(formDir, "__init__.py"), code);
14576
- await promises_default().writeFile(external_path_default().join(formDir, "form_template.yaml"), external_js_yaml_default().dump(formTemplate));
14577
- } else {
14578
- await promises_default().writeFile(external_path_default().join(depDir, "client_code", `${class_name}.py`), code);
14579
- await promises_default().writeFile(external_path_default().join(depDir, "client_code", `${class_name}.yaml`), external_js_yaml_default().dump(formTemplate));
14580
- }
14581
- }
14582
- for (const mod of dep.server_modules ?? [])if (mod.is_package) {
14583
- const modDir = external_path_default().join(depDir, "server_code", mod.name);
14584
- await promises_default().mkdir(modDir, {
14585
- recursive: true
14586
- });
14587
- await promises_default().writeFile(external_path_default().join(modDir, "__init__.py"), mod.code);
14588
- } else await promises_default().writeFile(external_path_default().join(depDir, "server_code", `${mod.name}.py`), mod.code);
14589
- for (const asset of dep.assets ?? []){
14590
- const targetPath = external_path_default().join(depDir, "theme", "assets", safeDependencyPath(asset.name, "asset"));
14591
- await promises_default().mkdir(external_path_default().dirname(targetPath), {
14592
- recursive: true
14593
- });
14594
- await promises_default().writeFile(targetPath, Buffer.from(asset.content, "base64"));
14595
- }
14596
- for (const doc of dep.docs ?? []){
14597
- const targetPath = external_path_default().join(depDir, safeDependencyPath(doc.path, "doc"));
14598
- await promises_default().mkdir(external_path_default().dirname(targetPath), {
14599
- recursive: true
14600
- });
14601
- await promises_default().writeFile(targetPath, doc.content);
14602
- }
14603
- }
14604
- async function writeAllDepsToCache(projectRoot, response, options = {}) {
14605
- const includeDocs = options.includeDocs ?? true;
14606
- const manifest = await readDepsCacheManifest(projectRoot);
14607
- const canReuseExistingCache = manifest?.includeDocs === includeDocs;
14608
- if (!canReuseExistingCache) await clearDepsCache(projectRoot);
14609
- const previousCached = canReuseExistingCache ? manifest.cached_dependencies : [];
14610
- const resolvedAppIds = new Set(response.resolved_dependencies.map((dep)=>dep.app_id));
14611
- for (const dep of previousCached)if (!resolvedAppIds.has(dep.app_id)) await promises_default().rm(external_path_default().join(projectRoot, ANVIL_DEPS_DIR, dep.package_name), {
14612
- recursive: true,
14613
- force: true
14614
- });
14615
- for (const dep of response.dependencies)await writeDepToCache(projectRoot, dep);
14616
- const returnedByAppId = new Map(response.dependencies.map((dep)=>[
14617
- dep.app_id,
14618
- dep
14619
- ]));
14620
- const previousByAppId = new Map(previousCached.map((dep)=>[
14621
- dep.app_id,
14622
- dep
14623
- ]));
14624
- const cachedDependencies = response.resolved_dependencies.map((dep)=>{
14625
- const returned = returnedByAppId.get(dep.app_id);
14626
- if (returned) return cachedManifestEntry(returned, returned.package_name);
14627
- const previous = previousByAppId.get(dep.app_id);
14628
- if (!previous) return;
14629
- return cachedManifestEntry(dep, previous.package_name);
14630
- }).filter((dep)=>void 0 !== dep);
14631
- const newManifest = {
14632
- version: DEPS_MANIFEST_VERSION,
14633
- includeDocs,
14634
- resolved_dependencies: response.resolved_dependencies,
14635
- cached_dependencies: cachedDependencies
14636
- };
14637
- await promises_default().mkdir(depsDir(projectRoot), {
14638
- recursive: true
14639
- });
14640
- await promises_default().writeFile(depsManifestPath(projectRoot), `${JSON.stringify(newManifest, null, 2)}\n`);
14641
- }
14642
- async function clearDepsCache(projectRoot) {
14643
- await promises_default().rm(depsDir(projectRoot), {
14644
- recursive: true,
14645
- force: true
14646
- });
14647
- }
14648
- async function getCachedPackages(projectRoot) {
14649
- try {
14650
- const entries = await promises_default().readdir(depsDir(projectRoot), {
14651
- withFileTypes: true
14652
- });
14653
- return entries.filter((entry)=>entry.isDirectory()).map((entry)=>entry.name);
14654
- } catch {
14655
- return [];
14656
- }
14657
- }
14658
14391
  const external_timers_promises_namespaceObject = require("timers/promises");
14659
14392
  const WANT_NOT_VALID_RE = /\bwant\s+[0-9a-f]{7,40}\s+not valid\b/i;
14660
14393
  const FETCH_RETRY_DELAY_MS = 200;
@@ -15019,90 +14752,359 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
15019
14752
  throw errors_createGitError.commandFailed("merge --ff-only", e.message);
15020
14753
  }
15021
14754
  }
15022
- async deleteRef(ref) {
15023
- try {
15024
- await this.git.raw([
15025
- "update-ref",
15026
- "-d",
15027
- ref
15028
- ]);
15029
- } catch (e) {}
14755
+ async deleteRef(ref) {
14756
+ try {
14757
+ await this.git.raw([
14758
+ "update-ref",
14759
+ "-d",
14760
+ ref
14761
+ ]);
14762
+ } catch (e) {}
14763
+ }
14764
+ async getRemotes() {
14765
+ try {
14766
+ const remotes = await this.git.getRemotes(true);
14767
+ return remotes.map((r)=>({
14768
+ name: r.name,
14769
+ fetchUrl: r.refs.fetch
14770
+ }));
14771
+ } catch (e) {
14772
+ throw errors_createGitError.commandFailed("remote", e.message);
14773
+ }
14774
+ }
14775
+ async isGitInitialized() {
14776
+ const gitPath = external_path_default().join(this.repoPath, ".git");
14777
+ return external_fs_.existsSync(gitPath);
14778
+ }
14779
+ async removeEmptyDirectories(removedFiles) {
14780
+ const directoriesToCheck = new Set();
14781
+ for (const file of removedFiles){
14782
+ let dir = external_path_default().dirname(file);
14783
+ while(dir && "." !== dir){
14784
+ directoriesToCheck.add(dir);
14785
+ const parentDir = external_path_default().dirname(dir);
14786
+ if (parentDir === dir) break;
14787
+ dir = parentDir;
14788
+ }
14789
+ }
14790
+ const sortedDirs = Array.from(directoriesToCheck).sort((a, b)=>b.split("/").length - a.split("/").length);
14791
+ for (const dir of sortedDirs)try {
14792
+ const dirPath = external_path_default().join(this.repoPath, dir);
14793
+ if (!external_fs_.existsSync(dirPath)) continue;
14794
+ const entries = await external_fs_.promises.readdir(dirPath);
14795
+ if (0 === entries.length) await external_fs_.promises.rmdir(dirPath);
14796
+ } catch (error) {}
14797
+ }
14798
+ }
14799
+ async function getStagedFileChanges(git, gitService) {
14800
+ try {
14801
+ const status = await git.status();
14802
+ const renames = status.renamed || [];
14803
+ const stagedFiles = status.files.filter((f)=>" " !== f.index && "?" !== f.index);
14804
+ const stagedModeOnlyPaths = new Set(gitService ? await gitService.discardStagedModeOnlyChanges(stagedFiles.filter((f)=>"R" !== f.index && "D" !== f.index).map((f)=>f.path)) : []);
14805
+ const stagedRenames = [];
14806
+ for (const f of stagedFiles)if ("R" === f.index) {
14807
+ const rename = renames.find((r)=>r.to === f.path);
14808
+ if (rename) stagedRenames.push({
14809
+ path: rename.to,
14810
+ type: "rename",
14811
+ from: rename.from
14812
+ });
14813
+ }
14814
+ const stagedRenamedFromPaths = new Set(stagedRenames.map((r)=>r.from));
14815
+ const stagedRenamedToPaths = new Set(stagedRenames.map((r)=>r.path));
14816
+ const changes = [];
14817
+ for (const f of stagedFiles){
14818
+ if ("R" !== f.index) {
14819
+ if (!stagedModeOnlyPaths.has(f.path)) {
14820
+ if (!(stagedRenamedFromPaths.has(f.path) || stagedRenamedToPaths.has(f.path))) if ("D" === f.index) changes.push({
14821
+ path: f.path,
14822
+ type: "unlink"
14823
+ });
14824
+ else if ("A" === f.index || "?" === f.index) changes.push({
14825
+ path: f.path,
14826
+ type: "add"
14827
+ });
14828
+ else changes.push({
14829
+ path: f.path,
14830
+ type: "change"
14831
+ });
14832
+ }
14833
+ }
14834
+ }
14835
+ changes.push(...stagedRenames);
14836
+ return changes;
14837
+ } catch (e) {
14838
+ throw errors_createGitError.commandFailed("status", e.message);
14839
+ }
14840
+ }
14841
+ const ANVIL_DEPS_DIR = ".anvil/deps";
14842
+ const ANVIL_DEPS_MANIFEST = "manifest.json";
14843
+ const DEPS_MANIFEST_VERSION = 1;
14844
+ function formatFetchError(prefix, status, errorBody) {
14845
+ if (!errorBody) return `${prefix}: ${status}`;
14846
+ try {
14847
+ const parsed = JSON.parse(errorBody);
14848
+ if ("string" == typeof parsed.error && parsed.error.trim()) return `${prefix}: ${parsed.error} (${status})`;
14849
+ } catch {}
14850
+ return `${prefix}: ${status} ${errorBody}`;
14851
+ }
14852
+ async function fetchAllDependencies(appId, anvilUrl = resolveAnvilUrl(), options = {}) {
14853
+ const { commit, includeDocs = true, knownDependencies = [] } = options;
14854
+ const token = await auth_getValidAuthToken(anvilUrl, options.username);
14855
+ const body = {
14856
+ include_docs: includeDocs,
14857
+ known_dependencies: knownDependencies
14858
+ };
14859
+ if (commit) body.commit = commit;
14860
+ const resp = await fetch(`${anvilUrl}/ide/api/_/apps/${appId}/resolved-dependencies`, {
14861
+ method: "POST",
14862
+ headers: {
14863
+ Authorization: `Bearer ${token}`,
14864
+ "Content-Type": "application/json"
14865
+ },
14866
+ body: JSON.stringify(body)
14867
+ });
14868
+ if (!resp.ok) {
14869
+ const errorBody = await resp.text();
14870
+ throw new Error(formatFetchError("Failed to fetch dependencies", resp.status, errorBody));
14871
+ }
14872
+ return await resp.json();
14873
+ }
14874
+ async function refreshDependencyCache(projectRoot, appId, anvilUrl = resolveAnvilUrl(), options = {}) {
14875
+ const includeDocs = options.includeDocs ?? true;
14876
+ const commit = options.commit ?? await new GitService(projectRoot).getCommitId();
14877
+ const knownDependencies = await getKnownDependenciesForCache(projectRoot, includeDocs);
14878
+ const response = await fetchAllDependencies(appId, anvilUrl, {
14879
+ username: options.username,
14880
+ commit,
14881
+ includeDocs,
14882
+ knownDependencies
14883
+ });
14884
+ if (!response.resolved_dependencies.length) {
14885
+ await clearDepsCache(projectRoot);
14886
+ return {
14887
+ response,
14888
+ addedGitignoreEntry: false
14889
+ };
14890
+ }
14891
+ const addedGitignoreEntry = await ensureProjectGitignoreIgnoresAnvilDir(projectRoot);
14892
+ await writeAllDepsToCache(projectRoot, response, {
14893
+ includeDocs
14894
+ });
14895
+ return {
14896
+ response,
14897
+ addedGitignoreEntry
14898
+ };
14899
+ }
14900
+ function depsDir(projectRoot) {
14901
+ return external_path_default().join(projectRoot, ANVIL_DEPS_DIR);
14902
+ }
14903
+ function depsManifestPath(projectRoot) {
14904
+ return external_path_default().join(depsDir(projectRoot), ANVIL_DEPS_MANIFEST);
14905
+ }
14906
+ function isResolvedDependencyManifestEntry(value) {
14907
+ if (!value || "object" != typeof value) return false;
14908
+ const entry = value;
14909
+ return "string" == typeof entry.app_id && entry.app_id.length > 0 && "string" == typeof entry.commit_id && entry.commit_id.length > 0 && (void 0 === entry.branch || "string" == typeof entry.branch);
14910
+ }
14911
+ function isCachedDependencyManifestEntry(value) {
14912
+ if (!isResolvedDependencyManifestEntry(value)) return false;
14913
+ const entry = value;
14914
+ return "string" == typeof entry.package_name && entry.package_name.length > 0;
14915
+ }
14916
+ function isDepsCacheManifest(value) {
14917
+ if (!value || "object" != typeof value) return false;
14918
+ const manifest = value;
14919
+ return manifest.version === DEPS_MANIFEST_VERSION && "boolean" == typeof manifest.includeDocs && Array.isArray(manifest.resolved_dependencies) && manifest.resolved_dependencies.every(isResolvedDependencyManifestEntry) && Array.isArray(manifest.cached_dependencies) && manifest.cached_dependencies.every(isCachedDependencyManifestEntry);
14920
+ }
14921
+ async function readDepsCacheManifest(projectRoot) {
14922
+ try {
14923
+ const raw = await promises_default().readFile(depsManifestPath(projectRoot), "utf-8");
14924
+ const parsed = JSON.parse(raw);
14925
+ return isDepsCacheManifest(parsed) ? parsed : void 0;
14926
+ } catch {
14927
+ return;
14928
+ }
14929
+ }
14930
+ async function getKnownDependenciesForCache(projectRoot, includeDocs) {
14931
+ const manifest = await readDepsCacheManifest(projectRoot);
14932
+ if (!manifest || manifest.includeDocs !== includeDocs) return [];
14933
+ return manifest.resolved_dependencies.map(({ app_id, commit_id })=>({
14934
+ app_id,
14935
+ commit_id
14936
+ }));
14937
+ }
14938
+ function getDependencyWatchSubscriptionsFromManifest(manifest) {
14939
+ if (!manifest) return [];
14940
+ const cachedByAppId = new Map(manifest.cached_dependencies.map((dep)=>[
14941
+ dep.app_id,
14942
+ dep
14943
+ ]));
14944
+ return manifest.resolved_dependencies.flatMap((dep)=>{
14945
+ if (!dep.branch) return [];
14946
+ return [
14947
+ {
14948
+ appId: dep.app_id,
14949
+ branch: dep.branch,
14950
+ packageName: cachedByAppId.get(dep.app_id)?.package_name
14951
+ }
14952
+ ];
14953
+ });
14954
+ }
14955
+ function normalizeAnvilYamlDependenciesFromContent(content) {
14956
+ const parsed = external_js_yaml_default().load(content);
14957
+ if (!parsed || "object" != typeof parsed || !Array.isArray(parsed.dependencies)) return [];
14958
+ return normalizeAnvilYamlDependenciesValue(parsed.dependencies);
14959
+ }
14960
+ function normalizeAnvilYamlDependenciesValue(value) {
14961
+ if (!Array.isArray(value)) return [];
14962
+ return normalizeForComparison(value);
14963
+ }
14964
+ async function readAnvilYamlDependencies(projectRoot) {
14965
+ try {
14966
+ const content = await promises_default().readFile(external_path_default().join(projectRoot, "anvil.yaml"), "utf-8");
14967
+ return normalizeAnvilYamlDependenciesFromContent(content);
14968
+ } catch {
14969
+ return [];
15030
14970
  }
15031
- async getRemotes() {
15032
- try {
15033
- const remotes = await this.git.getRemotes(true);
15034
- return remotes.map((r)=>({
15035
- name: r.name,
15036
- fetchUrl: r.refs.fetch
15037
- }));
15038
- } catch (e) {
15039
- throw errors_createGitError.commandFailed("remote", e.message);
14971
+ }
14972
+ function anvilYamlDependenciesEqual(left, right) {
14973
+ return deepEqual(left, right);
14974
+ }
14975
+ function normalizeForComparison(value) {
14976
+ if (Array.isArray(value)) return value.map(normalizeForComparison);
14977
+ if (value && "object" == typeof value) return Object.fromEntries(Object.entries(value).sort(([left], [right])=>left.localeCompare(right)).map(([key, entryValue])=>[
14978
+ key,
14979
+ normalizeForComparison(entryValue)
14980
+ ]));
14981
+ return value;
14982
+ }
14983
+ function cachedManifestEntry(dep, packageName) {
14984
+ return {
14985
+ app_id: dep.app_id,
14986
+ commit_id: dep.commit_id,
14987
+ ...dep.branch ? {
14988
+ branch: dep.branch
14989
+ } : {},
14990
+ package_name: packageName
14991
+ };
14992
+ }
14993
+ function safeDependencyPath(filePath, kind) {
14994
+ const normalizedPath = external_path_default().normalize(filePath);
14995
+ if (external_path_default().isAbsolute(normalizedPath) || normalizedPath.startsWith("..")) throw new Error(`Invalid dependency ${kind} path: ${filePath}`);
14996
+ return normalizedPath;
14997
+ }
14998
+ async function writeDepToCache(projectRoot, dep) {
14999
+ const depDir = external_path_default().join(projectRoot, ANVIL_DEPS_DIR, dep.package_name);
15000
+ await promises_default().rm(depDir, {
15001
+ recursive: true,
15002
+ force: true
15003
+ });
15004
+ await promises_default().mkdir(external_path_default().join(depDir, "client_code"), {
15005
+ recursive: true
15006
+ });
15007
+ await promises_default().mkdir(external_path_default().join(depDir, "server_code"), {
15008
+ recursive: true
15009
+ });
15010
+ await promises_default().writeFile(external_path_default().join(depDir, "anvil.yaml"), external_js_yaml_default().dump({
15011
+ package_name: dep.package_name
15012
+ }));
15013
+ for (const mod of dep.modules ?? [])if (mod.is_package) {
15014
+ const modDir = external_path_default().join(depDir, "client_code", mod.name);
15015
+ await promises_default().mkdir(modDir, {
15016
+ recursive: true
15017
+ });
15018
+ await promises_default().writeFile(external_path_default().join(modDir, "__init__.py"), mod.code);
15019
+ } else await promises_default().writeFile(external_path_default().join(depDir, "client_code", `${mod.name}.py`), mod.code);
15020
+ for (const form of dep.forms ?? []){
15021
+ const { code, class_name, is_package, ...formTemplate } = form;
15022
+ if (is_package) {
15023
+ const formDir = external_path_default().join(depDir, "client_code", class_name);
15024
+ await promises_default().mkdir(formDir, {
15025
+ recursive: true
15026
+ });
15027
+ await promises_default().writeFile(external_path_default().join(formDir, "__init__.py"), code);
15028
+ await promises_default().writeFile(external_path_default().join(formDir, "form_template.yaml"), external_js_yaml_default().dump(formTemplate));
15029
+ } else {
15030
+ await promises_default().writeFile(external_path_default().join(depDir, "client_code", `${class_name}.py`), code);
15031
+ await promises_default().writeFile(external_path_default().join(depDir, "client_code", `${class_name}.yaml`), external_js_yaml_default().dump(formTemplate));
15040
15032
  }
15041
15033
  }
15042
- async isGitInitialized() {
15043
- const gitPath = external_path_default().join(this.repoPath, ".git");
15044
- return external_fs_.existsSync(gitPath);
15034
+ for (const mod of dep.server_modules ?? [])if (mod.is_package) {
15035
+ const modDir = external_path_default().join(depDir, "server_code", mod.name);
15036
+ await promises_default().mkdir(modDir, {
15037
+ recursive: true
15038
+ });
15039
+ await promises_default().writeFile(external_path_default().join(modDir, "__init__.py"), mod.code);
15040
+ } else await promises_default().writeFile(external_path_default().join(depDir, "server_code", `${mod.name}.py`), mod.code);
15041
+ for (const asset of dep.assets ?? []){
15042
+ const targetPath = external_path_default().join(depDir, "theme", "assets", safeDependencyPath(asset.name, "asset"));
15043
+ await promises_default().mkdir(external_path_default().dirname(targetPath), {
15044
+ recursive: true
15045
+ });
15046
+ await promises_default().writeFile(targetPath, Buffer.from(asset.content, "base64"));
15045
15047
  }
15046
- async removeEmptyDirectories(removedFiles) {
15047
- const directoriesToCheck = new Set();
15048
- for (const file of removedFiles){
15049
- let dir = external_path_default().dirname(file);
15050
- while(dir && "." !== dir){
15051
- directoriesToCheck.add(dir);
15052
- const parentDir = external_path_default().dirname(dir);
15053
- if (parentDir === dir) break;
15054
- dir = parentDir;
15055
- }
15056
- }
15057
- const sortedDirs = Array.from(directoriesToCheck).sort((a, b)=>b.split("/").length - a.split("/").length);
15058
- for (const dir of sortedDirs)try {
15059
- const dirPath = external_path_default().join(this.repoPath, dir);
15060
- if (!external_fs_.existsSync(dirPath)) continue;
15061
- const entries = await external_fs_.promises.readdir(dirPath);
15062
- if (0 === entries.length) await external_fs_.promises.rmdir(dirPath);
15063
- } catch (error) {}
15048
+ for (const doc of dep.docs ?? []){
15049
+ const targetPath = external_path_default().join(depDir, safeDependencyPath(doc.path, "doc"));
15050
+ await promises_default().mkdir(external_path_default().dirname(targetPath), {
15051
+ recursive: true
15052
+ });
15053
+ await promises_default().writeFile(targetPath, doc.content);
15064
15054
  }
15065
15055
  }
15066
- async function getStagedFileChanges(git, gitService) {
15056
+ async function writeAllDepsToCache(projectRoot, response, options = {}) {
15057
+ const includeDocs = options.includeDocs ?? true;
15058
+ const manifest = await readDepsCacheManifest(projectRoot);
15059
+ const canReuseExistingCache = manifest?.includeDocs === includeDocs;
15060
+ if (!canReuseExistingCache) await clearDepsCache(projectRoot);
15061
+ const previousCached = canReuseExistingCache ? manifest.cached_dependencies : [];
15062
+ const resolvedAppIds = new Set(response.resolved_dependencies.map((dep)=>dep.app_id));
15063
+ for (const dep of previousCached)if (!resolvedAppIds.has(dep.app_id)) await promises_default().rm(external_path_default().join(projectRoot, ANVIL_DEPS_DIR, dep.package_name), {
15064
+ recursive: true,
15065
+ force: true
15066
+ });
15067
+ for (const dep of response.dependencies)await writeDepToCache(projectRoot, dep);
15068
+ const returnedByAppId = new Map(response.dependencies.map((dep)=>[
15069
+ dep.app_id,
15070
+ dep
15071
+ ]));
15072
+ const previousByAppId = new Map(previousCached.map((dep)=>[
15073
+ dep.app_id,
15074
+ dep
15075
+ ]));
15076
+ const cachedDependencies = response.resolved_dependencies.map((dep)=>{
15077
+ const returned = returnedByAppId.get(dep.app_id);
15078
+ if (returned) return cachedManifestEntry(returned, returned.package_name);
15079
+ const previous = previousByAppId.get(dep.app_id);
15080
+ if (!previous) return;
15081
+ return cachedManifestEntry(dep, previous.package_name);
15082
+ }).filter((dep)=>void 0 !== dep);
15083
+ const newManifest = {
15084
+ version: DEPS_MANIFEST_VERSION,
15085
+ includeDocs,
15086
+ resolved_dependencies: response.resolved_dependencies,
15087
+ cached_dependencies: cachedDependencies
15088
+ };
15089
+ await promises_default().mkdir(depsDir(projectRoot), {
15090
+ recursive: true
15091
+ });
15092
+ await promises_default().writeFile(depsManifestPath(projectRoot), `${JSON.stringify(newManifest, null, 2)}\n`);
15093
+ }
15094
+ async function clearDepsCache(projectRoot) {
15095
+ await promises_default().rm(depsDir(projectRoot), {
15096
+ recursive: true,
15097
+ force: true
15098
+ });
15099
+ }
15100
+ async function getCachedPackages(projectRoot) {
15067
15101
  try {
15068
- const status = await git.status();
15069
- const renames = status.renamed || [];
15070
- const stagedFiles = status.files.filter((f)=>" " !== f.index && "?" !== f.index);
15071
- const stagedModeOnlyPaths = new Set(gitService ? await gitService.discardStagedModeOnlyChanges(stagedFiles.filter((f)=>"R" !== f.index && "D" !== f.index).map((f)=>f.path)) : []);
15072
- const stagedRenames = [];
15073
- for (const f of stagedFiles)if ("R" === f.index) {
15074
- const rename = renames.find((r)=>r.to === f.path);
15075
- if (rename) stagedRenames.push({
15076
- path: rename.to,
15077
- type: "rename",
15078
- from: rename.from
15079
- });
15080
- }
15081
- const stagedRenamedFromPaths = new Set(stagedRenames.map((r)=>r.from));
15082
- const stagedRenamedToPaths = new Set(stagedRenames.map((r)=>r.path));
15083
- const changes = [];
15084
- for (const f of stagedFiles){
15085
- if ("R" !== f.index) {
15086
- if (!stagedModeOnlyPaths.has(f.path)) {
15087
- if (!(stagedRenamedFromPaths.has(f.path) || stagedRenamedToPaths.has(f.path))) if ("D" === f.index) changes.push({
15088
- path: f.path,
15089
- type: "unlink"
15090
- });
15091
- else if ("A" === f.index || "?" === f.index) changes.push({
15092
- path: f.path,
15093
- type: "add"
15094
- });
15095
- else changes.push({
15096
- path: f.path,
15097
- type: "change"
15098
- });
15099
- }
15100
- }
15101
- }
15102
- changes.push(...stagedRenames);
15103
- return changes;
15104
- } catch (e) {
15105
- throw errors_createGitError.commandFailed("status", e.message);
15102
+ const entries = await promises_default().readdir(depsDir(projectRoot), {
15103
+ withFileTypes: true
15104
+ });
15105
+ return entries.filter((entry)=>entry.isDirectory()).map((entry)=>entry.name);
15106
+ } catch {
15107
+ return [];
15106
15108
  }
15107
15109
  }
15108
15110
  const external_chokidar_namespaceObject = require("chokidar");
@@ -19209,6 +19211,7 @@ print(json.dumps({"issues": issues}))
19209
19211
  try {
19210
19212
  const previousSubscriptions = this.wsClient?.getDependencySubscriptions() ?? [];
19211
19213
  const { response, addedGitignoreEntry } = await refreshDependencyCache(this.repoPath, this.appId, this.anvilUrl, {
19214
+ username: this.username,
19212
19215
  includeDocs: true
19213
19216
  });
19214
19217
  if (addedGitignoreEntry) logger_logger.info("Added /.anvil/ to .gitignore");
@@ -23058,7 +23061,7 @@ print(json.dumps({"issues": issues}))
23058
23061
  }
23059
23062
  function registerDepsCommand(program) {
23060
23063
  const deps = program.command("deps").description("Manage app dependencies");
23061
- deps.command("fetch").description("Fetch dependencies into .anvil/deps/").option("--commit <commit>", "Fetch deps at specific commit").option("--exclude-docs", "Exclude dependency docs from .anvil/deps/").action(async (options)=>{
23064
+ deps.command("fetch").description("Fetch dependencies for checkout HEAD into .anvil/deps/").option("--commit <commit>", "Fetch deps at a specific app commit instead of checkout HEAD").option("--exclude-docs", "Exclude dependency docs from .anvil/deps/").action(async (options)=>{
23062
23065
  try {
23063
23066
  const projectRoot = process.cwd();
23064
23067
  const anvilUrl = resolveAnvilUrl();
package/dist/index.js CHANGED
@@ -14414,263 +14414,6 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
14414
14414
  return true;
14415
14415
  }
14416
14416
  }
14417
- const ANVIL_DEPS_DIR = ".anvil/deps";
14418
- const ANVIL_DEPS_MANIFEST = "manifest.json";
14419
- const DEPS_MANIFEST_VERSION = 1;
14420
- function formatFetchError(prefix, status, errorBody) {
14421
- if (!errorBody) return `${prefix}: ${status}`;
14422
- try {
14423
- const parsed = JSON.parse(errorBody);
14424
- if ("string" == typeof parsed.error && parsed.error.trim()) return `${prefix}: ${parsed.error} (${status})`;
14425
- } catch {}
14426
- return `${prefix}: ${status} ${errorBody}`;
14427
- }
14428
- async function fetchAllDependencies(appId, anvilUrl = resolveAnvilUrl(), options = {}) {
14429
- const { commit, includeDocs = true, knownDependencies = [] } = options;
14430
- const token = await auth_getValidAuthToken(anvilUrl);
14431
- const body = {
14432
- include_docs: includeDocs,
14433
- known_dependencies: knownDependencies
14434
- };
14435
- if (commit) body.commit = commit;
14436
- const resp = await fetch(`${anvilUrl}/ide/api/_/apps/${appId}/resolved-dependencies`, {
14437
- method: "POST",
14438
- headers: {
14439
- Authorization: `Bearer ${token}`,
14440
- "Content-Type": "application/json"
14441
- },
14442
- body: JSON.stringify(body)
14443
- });
14444
- if (!resp.ok) {
14445
- const errorBody = await resp.text();
14446
- throw new Error(formatFetchError("Failed to fetch dependencies", resp.status, errorBody));
14447
- }
14448
- return await resp.json();
14449
- }
14450
- async function refreshDependencyCache(projectRoot, appId, anvilUrl = resolveAnvilUrl(), options = {}) {
14451
- const includeDocs = options.includeDocs ?? true;
14452
- const knownDependencies = await getKnownDependenciesForCache(projectRoot, includeDocs);
14453
- const response = await fetchAllDependencies(appId, anvilUrl, {
14454
- commit: options.commit,
14455
- includeDocs,
14456
- knownDependencies
14457
- });
14458
- if (!response.resolved_dependencies.length) {
14459
- await clearDepsCache(projectRoot);
14460
- return {
14461
- response,
14462
- addedGitignoreEntry: false
14463
- };
14464
- }
14465
- const addedGitignoreEntry = await ensureProjectGitignoreIgnoresAnvilDir(projectRoot);
14466
- await writeAllDepsToCache(projectRoot, response, {
14467
- includeDocs
14468
- });
14469
- return {
14470
- response,
14471
- addedGitignoreEntry
14472
- };
14473
- }
14474
- function depsDir(projectRoot) {
14475
- return external_path_default().join(projectRoot, ANVIL_DEPS_DIR);
14476
- }
14477
- function depsManifestPath(projectRoot) {
14478
- return external_path_default().join(depsDir(projectRoot), ANVIL_DEPS_MANIFEST);
14479
- }
14480
- function isResolvedDependencyManifestEntry(value) {
14481
- if (!value || "object" != typeof value) return false;
14482
- const entry = value;
14483
- return "string" == typeof entry.app_id && entry.app_id.length > 0 && "string" == typeof entry.commit_id && entry.commit_id.length > 0 && (void 0 === entry.branch || "string" == typeof entry.branch);
14484
- }
14485
- function isCachedDependencyManifestEntry(value) {
14486
- if (!isResolvedDependencyManifestEntry(value)) return false;
14487
- const entry = value;
14488
- return "string" == typeof entry.package_name && entry.package_name.length > 0;
14489
- }
14490
- function isDepsCacheManifest(value) {
14491
- if (!value || "object" != typeof value) return false;
14492
- const manifest = value;
14493
- return manifest.version === DEPS_MANIFEST_VERSION && "boolean" == typeof manifest.includeDocs && Array.isArray(manifest.resolved_dependencies) && manifest.resolved_dependencies.every(isResolvedDependencyManifestEntry) && Array.isArray(manifest.cached_dependencies) && manifest.cached_dependencies.every(isCachedDependencyManifestEntry);
14494
- }
14495
- async function readDepsCacheManifest(projectRoot) {
14496
- try {
14497
- const raw = await promises_default().readFile(depsManifestPath(projectRoot), "utf-8");
14498
- const parsed = JSON.parse(raw);
14499
- return isDepsCacheManifest(parsed) ? parsed : void 0;
14500
- } catch {
14501
- return;
14502
- }
14503
- }
14504
- async function getKnownDependenciesForCache(projectRoot, includeDocs) {
14505
- const manifest = await readDepsCacheManifest(projectRoot);
14506
- if (!manifest || manifest.includeDocs !== includeDocs) return [];
14507
- return manifest.resolved_dependencies.map(({ app_id, commit_id })=>({
14508
- app_id,
14509
- commit_id
14510
- }));
14511
- }
14512
- function getDependencyWatchSubscriptionsFromManifest(manifest) {
14513
- if (!manifest) return [];
14514
- const cachedByAppId = new Map(manifest.cached_dependencies.map((dep)=>[
14515
- dep.app_id,
14516
- dep
14517
- ]));
14518
- return manifest.resolved_dependencies.flatMap((dep)=>{
14519
- if (!dep.branch) return [];
14520
- return [
14521
- {
14522
- appId: dep.app_id,
14523
- branch: dep.branch,
14524
- packageName: cachedByAppId.get(dep.app_id)?.package_name
14525
- }
14526
- ];
14527
- });
14528
- }
14529
- function normalizeAnvilYamlDependenciesFromContent(content) {
14530
- const parsed = external_js_yaml_default().load(content);
14531
- if (!parsed || "object" != typeof parsed || !Array.isArray(parsed.dependencies)) return [];
14532
- return normalizeAnvilYamlDependenciesValue(parsed.dependencies);
14533
- }
14534
- function normalizeAnvilYamlDependenciesValue(value) {
14535
- if (!Array.isArray(value)) return [];
14536
- return normalizeForComparison(value);
14537
- }
14538
- async function readAnvilYamlDependencies(projectRoot) {
14539
- try {
14540
- const content = await promises_default().readFile(external_path_default().join(projectRoot, "anvil.yaml"), "utf-8");
14541
- return normalizeAnvilYamlDependenciesFromContent(content);
14542
- } catch {
14543
- return [];
14544
- }
14545
- }
14546
- function anvilYamlDependenciesEqual(left, right) {
14547
- return deepEqual(left, right);
14548
- }
14549
- function normalizeForComparison(value) {
14550
- if (Array.isArray(value)) return value.map(normalizeForComparison);
14551
- if (value && "object" == typeof value) return Object.fromEntries(Object.entries(value).sort(([left], [right])=>left.localeCompare(right)).map(([key, entryValue])=>[
14552
- key,
14553
- normalizeForComparison(entryValue)
14554
- ]));
14555
- return value;
14556
- }
14557
- function cachedManifestEntry(dep, packageName) {
14558
- return {
14559
- app_id: dep.app_id,
14560
- commit_id: dep.commit_id,
14561
- ...dep.branch ? {
14562
- branch: dep.branch
14563
- } : {},
14564
- package_name: packageName
14565
- };
14566
- }
14567
- function safeDependencyPath(filePath, kind) {
14568
- const normalizedPath = external_path_default().normalize(filePath);
14569
- if (external_path_default().isAbsolute(normalizedPath) || normalizedPath.startsWith("..")) throw new Error(`Invalid dependency ${kind} path: ${filePath}`);
14570
- return normalizedPath;
14571
- }
14572
- async function writeDepToCache(projectRoot, dep) {
14573
- const depDir = external_path_default().join(projectRoot, ANVIL_DEPS_DIR, dep.package_name);
14574
- await promises_default().rm(depDir, {
14575
- recursive: true,
14576
- force: true
14577
- });
14578
- await promises_default().mkdir(external_path_default().join(depDir, "client_code"), {
14579
- recursive: true
14580
- });
14581
- await promises_default().mkdir(external_path_default().join(depDir, "server_code"), {
14582
- recursive: true
14583
- });
14584
- await promises_default().writeFile(external_path_default().join(depDir, "anvil.yaml"), external_js_yaml_default().dump({
14585
- package_name: dep.package_name
14586
- }));
14587
- for (const mod of dep.modules ?? [])if (mod.is_package) {
14588
- const modDir = external_path_default().join(depDir, "client_code", mod.name);
14589
- await promises_default().mkdir(modDir, {
14590
- recursive: true
14591
- });
14592
- await promises_default().writeFile(external_path_default().join(modDir, "__init__.py"), mod.code);
14593
- } else await promises_default().writeFile(external_path_default().join(depDir, "client_code", `${mod.name}.py`), mod.code);
14594
- for (const form of dep.forms ?? []){
14595
- const { code, class_name, is_package, ...formTemplate } = form;
14596
- if (is_package) {
14597
- const formDir = external_path_default().join(depDir, "client_code", class_name);
14598
- await promises_default().mkdir(formDir, {
14599
- recursive: true
14600
- });
14601
- await promises_default().writeFile(external_path_default().join(formDir, "__init__.py"), code);
14602
- await promises_default().writeFile(external_path_default().join(formDir, "form_template.yaml"), external_js_yaml_default().dump(formTemplate));
14603
- } else {
14604
- await promises_default().writeFile(external_path_default().join(depDir, "client_code", `${class_name}.py`), code);
14605
- await promises_default().writeFile(external_path_default().join(depDir, "client_code", `${class_name}.yaml`), external_js_yaml_default().dump(formTemplate));
14606
- }
14607
- }
14608
- for (const mod of dep.server_modules ?? [])if (mod.is_package) {
14609
- const modDir = external_path_default().join(depDir, "server_code", mod.name);
14610
- await promises_default().mkdir(modDir, {
14611
- recursive: true
14612
- });
14613
- await promises_default().writeFile(external_path_default().join(modDir, "__init__.py"), mod.code);
14614
- } else await promises_default().writeFile(external_path_default().join(depDir, "server_code", `${mod.name}.py`), mod.code);
14615
- for (const asset of dep.assets ?? []){
14616
- const targetPath = external_path_default().join(depDir, "theme", "assets", safeDependencyPath(asset.name, "asset"));
14617
- await promises_default().mkdir(external_path_default().dirname(targetPath), {
14618
- recursive: true
14619
- });
14620
- await promises_default().writeFile(targetPath, Buffer.from(asset.content, "base64"));
14621
- }
14622
- for (const doc of dep.docs ?? []){
14623
- const targetPath = external_path_default().join(depDir, safeDependencyPath(doc.path, "doc"));
14624
- await promises_default().mkdir(external_path_default().dirname(targetPath), {
14625
- recursive: true
14626
- });
14627
- await promises_default().writeFile(targetPath, doc.content);
14628
- }
14629
- }
14630
- async function writeAllDepsToCache(projectRoot, response, options = {}) {
14631
- const includeDocs = options.includeDocs ?? true;
14632
- const manifest = await readDepsCacheManifest(projectRoot);
14633
- const canReuseExistingCache = manifest?.includeDocs === includeDocs;
14634
- if (!canReuseExistingCache) await clearDepsCache(projectRoot);
14635
- const previousCached = canReuseExistingCache ? manifest.cached_dependencies : [];
14636
- const resolvedAppIds = new Set(response.resolved_dependencies.map((dep)=>dep.app_id));
14637
- for (const dep of previousCached)if (!resolvedAppIds.has(dep.app_id)) await promises_default().rm(external_path_default().join(projectRoot, ANVIL_DEPS_DIR, dep.package_name), {
14638
- recursive: true,
14639
- force: true
14640
- });
14641
- for (const dep of response.dependencies)await writeDepToCache(projectRoot, dep);
14642
- const returnedByAppId = new Map(response.dependencies.map((dep)=>[
14643
- dep.app_id,
14644
- dep
14645
- ]));
14646
- const previousByAppId = new Map(previousCached.map((dep)=>[
14647
- dep.app_id,
14648
- dep
14649
- ]));
14650
- const cachedDependencies = response.resolved_dependencies.map((dep)=>{
14651
- const returned = returnedByAppId.get(dep.app_id);
14652
- if (returned) return cachedManifestEntry(returned, returned.package_name);
14653
- const previous = previousByAppId.get(dep.app_id);
14654
- if (!previous) return;
14655
- return cachedManifestEntry(dep, previous.package_name);
14656
- }).filter((dep)=>void 0 !== dep);
14657
- const newManifest = {
14658
- version: DEPS_MANIFEST_VERSION,
14659
- includeDocs,
14660
- resolved_dependencies: response.resolved_dependencies,
14661
- cached_dependencies: cachedDependencies
14662
- };
14663
- await promises_default().mkdir(depsDir(projectRoot), {
14664
- recursive: true
14665
- });
14666
- await promises_default().writeFile(depsManifestPath(projectRoot), `${JSON.stringify(newManifest, null, 2)}\n`);
14667
- }
14668
- async function clearDepsCache(projectRoot) {
14669
- await promises_default().rm(depsDir(projectRoot), {
14670
- recursive: true,
14671
- force: true
14672
- });
14673
- }
14674
14417
  const external_timers_promises_namespaceObject = require("timers/promises");
14675
14418
  const WANT_NOT_VALID_RE = /\bwant\s+[0-9a-f]{7,40}\s+not valid\b/i;
14676
14419
  const FETCH_RETRY_DELAY_MS = 200;
@@ -15121,6 +14864,265 @@ Promise.resolve(executeGitCredentialOperation(process.argv[2] || "get", {
15121
14864
  throw errors_createGitError.commandFailed("status", e.message);
15122
14865
  }
15123
14866
  }
14867
+ const ANVIL_DEPS_DIR = ".anvil/deps";
14868
+ const ANVIL_DEPS_MANIFEST = "manifest.json";
14869
+ const DEPS_MANIFEST_VERSION = 1;
14870
+ function formatFetchError(prefix, status, errorBody) {
14871
+ if (!errorBody) return `${prefix}: ${status}`;
14872
+ try {
14873
+ const parsed = JSON.parse(errorBody);
14874
+ if ("string" == typeof parsed.error && parsed.error.trim()) return `${prefix}: ${parsed.error} (${status})`;
14875
+ } catch {}
14876
+ return `${prefix}: ${status} ${errorBody}`;
14877
+ }
14878
+ async function fetchAllDependencies(appId, anvilUrl = resolveAnvilUrl(), options = {}) {
14879
+ const { commit, includeDocs = true, knownDependencies = [] } = options;
14880
+ const token = await auth_getValidAuthToken(anvilUrl, options.username);
14881
+ const body = {
14882
+ include_docs: includeDocs,
14883
+ known_dependencies: knownDependencies
14884
+ };
14885
+ if (commit) body.commit = commit;
14886
+ const resp = await fetch(`${anvilUrl}/ide/api/_/apps/${appId}/resolved-dependencies`, {
14887
+ method: "POST",
14888
+ headers: {
14889
+ Authorization: `Bearer ${token}`,
14890
+ "Content-Type": "application/json"
14891
+ },
14892
+ body: JSON.stringify(body)
14893
+ });
14894
+ if (!resp.ok) {
14895
+ const errorBody = await resp.text();
14896
+ throw new Error(formatFetchError("Failed to fetch dependencies", resp.status, errorBody));
14897
+ }
14898
+ return await resp.json();
14899
+ }
14900
+ async function refreshDependencyCache(projectRoot, appId, anvilUrl = resolveAnvilUrl(), options = {}) {
14901
+ const includeDocs = options.includeDocs ?? true;
14902
+ const commit = options.commit ?? await new git_GitService(projectRoot).getCommitId();
14903
+ const knownDependencies = await getKnownDependenciesForCache(projectRoot, includeDocs);
14904
+ const response = await fetchAllDependencies(appId, anvilUrl, {
14905
+ username: options.username,
14906
+ commit,
14907
+ includeDocs,
14908
+ knownDependencies
14909
+ });
14910
+ if (!response.resolved_dependencies.length) {
14911
+ await clearDepsCache(projectRoot);
14912
+ return {
14913
+ response,
14914
+ addedGitignoreEntry: false
14915
+ };
14916
+ }
14917
+ const addedGitignoreEntry = await ensureProjectGitignoreIgnoresAnvilDir(projectRoot);
14918
+ await writeAllDepsToCache(projectRoot, response, {
14919
+ includeDocs
14920
+ });
14921
+ return {
14922
+ response,
14923
+ addedGitignoreEntry
14924
+ };
14925
+ }
14926
+ function depsDir(projectRoot) {
14927
+ return external_path_default().join(projectRoot, ANVIL_DEPS_DIR);
14928
+ }
14929
+ function depsManifestPath(projectRoot) {
14930
+ return external_path_default().join(depsDir(projectRoot), ANVIL_DEPS_MANIFEST);
14931
+ }
14932
+ function isResolvedDependencyManifestEntry(value) {
14933
+ if (!value || "object" != typeof value) return false;
14934
+ const entry = value;
14935
+ return "string" == typeof entry.app_id && entry.app_id.length > 0 && "string" == typeof entry.commit_id && entry.commit_id.length > 0 && (void 0 === entry.branch || "string" == typeof entry.branch);
14936
+ }
14937
+ function isCachedDependencyManifestEntry(value) {
14938
+ if (!isResolvedDependencyManifestEntry(value)) return false;
14939
+ const entry = value;
14940
+ return "string" == typeof entry.package_name && entry.package_name.length > 0;
14941
+ }
14942
+ function isDepsCacheManifest(value) {
14943
+ if (!value || "object" != typeof value) return false;
14944
+ const manifest = value;
14945
+ return manifest.version === DEPS_MANIFEST_VERSION && "boolean" == typeof manifest.includeDocs && Array.isArray(manifest.resolved_dependencies) && manifest.resolved_dependencies.every(isResolvedDependencyManifestEntry) && Array.isArray(manifest.cached_dependencies) && manifest.cached_dependencies.every(isCachedDependencyManifestEntry);
14946
+ }
14947
+ async function readDepsCacheManifest(projectRoot) {
14948
+ try {
14949
+ const raw = await promises_default().readFile(depsManifestPath(projectRoot), "utf-8");
14950
+ const parsed = JSON.parse(raw);
14951
+ return isDepsCacheManifest(parsed) ? parsed : void 0;
14952
+ } catch {
14953
+ return;
14954
+ }
14955
+ }
14956
+ async function getKnownDependenciesForCache(projectRoot, includeDocs) {
14957
+ const manifest = await readDepsCacheManifest(projectRoot);
14958
+ if (!manifest || manifest.includeDocs !== includeDocs) return [];
14959
+ return manifest.resolved_dependencies.map(({ app_id, commit_id })=>({
14960
+ app_id,
14961
+ commit_id
14962
+ }));
14963
+ }
14964
+ function getDependencyWatchSubscriptionsFromManifest(manifest) {
14965
+ if (!manifest) return [];
14966
+ const cachedByAppId = new Map(manifest.cached_dependencies.map((dep)=>[
14967
+ dep.app_id,
14968
+ dep
14969
+ ]));
14970
+ return manifest.resolved_dependencies.flatMap((dep)=>{
14971
+ if (!dep.branch) return [];
14972
+ return [
14973
+ {
14974
+ appId: dep.app_id,
14975
+ branch: dep.branch,
14976
+ packageName: cachedByAppId.get(dep.app_id)?.package_name
14977
+ }
14978
+ ];
14979
+ });
14980
+ }
14981
+ function normalizeAnvilYamlDependenciesFromContent(content) {
14982
+ const parsed = external_js_yaml_default().load(content);
14983
+ if (!parsed || "object" != typeof parsed || !Array.isArray(parsed.dependencies)) return [];
14984
+ return normalizeAnvilYamlDependenciesValue(parsed.dependencies);
14985
+ }
14986
+ function normalizeAnvilYamlDependenciesValue(value) {
14987
+ if (!Array.isArray(value)) return [];
14988
+ return normalizeForComparison(value);
14989
+ }
14990
+ async function readAnvilYamlDependencies(projectRoot) {
14991
+ try {
14992
+ const content = await promises_default().readFile(external_path_default().join(projectRoot, "anvil.yaml"), "utf-8");
14993
+ return normalizeAnvilYamlDependenciesFromContent(content);
14994
+ } catch {
14995
+ return [];
14996
+ }
14997
+ }
14998
+ function anvilYamlDependenciesEqual(left, right) {
14999
+ return deepEqual(left, right);
15000
+ }
15001
+ function normalizeForComparison(value) {
15002
+ if (Array.isArray(value)) return value.map(normalizeForComparison);
15003
+ if (value && "object" == typeof value) return Object.fromEntries(Object.entries(value).sort(([left], [right])=>left.localeCompare(right)).map(([key, entryValue])=>[
15004
+ key,
15005
+ normalizeForComparison(entryValue)
15006
+ ]));
15007
+ return value;
15008
+ }
15009
+ function cachedManifestEntry(dep, packageName) {
15010
+ return {
15011
+ app_id: dep.app_id,
15012
+ commit_id: dep.commit_id,
15013
+ ...dep.branch ? {
15014
+ branch: dep.branch
15015
+ } : {},
15016
+ package_name: packageName
15017
+ };
15018
+ }
15019
+ function safeDependencyPath(filePath, kind) {
15020
+ const normalizedPath = external_path_default().normalize(filePath);
15021
+ if (external_path_default().isAbsolute(normalizedPath) || normalizedPath.startsWith("..")) throw new Error(`Invalid dependency ${kind} path: ${filePath}`);
15022
+ return normalizedPath;
15023
+ }
15024
+ async function writeDepToCache(projectRoot, dep) {
15025
+ const depDir = external_path_default().join(projectRoot, ANVIL_DEPS_DIR, dep.package_name);
15026
+ await promises_default().rm(depDir, {
15027
+ recursive: true,
15028
+ force: true
15029
+ });
15030
+ await promises_default().mkdir(external_path_default().join(depDir, "client_code"), {
15031
+ recursive: true
15032
+ });
15033
+ await promises_default().mkdir(external_path_default().join(depDir, "server_code"), {
15034
+ recursive: true
15035
+ });
15036
+ await promises_default().writeFile(external_path_default().join(depDir, "anvil.yaml"), external_js_yaml_default().dump({
15037
+ package_name: dep.package_name
15038
+ }));
15039
+ for (const mod of dep.modules ?? [])if (mod.is_package) {
15040
+ const modDir = external_path_default().join(depDir, "client_code", mod.name);
15041
+ await promises_default().mkdir(modDir, {
15042
+ recursive: true
15043
+ });
15044
+ await promises_default().writeFile(external_path_default().join(modDir, "__init__.py"), mod.code);
15045
+ } else await promises_default().writeFile(external_path_default().join(depDir, "client_code", `${mod.name}.py`), mod.code);
15046
+ for (const form of dep.forms ?? []){
15047
+ const { code, class_name, is_package, ...formTemplate } = form;
15048
+ if (is_package) {
15049
+ const formDir = external_path_default().join(depDir, "client_code", class_name);
15050
+ await promises_default().mkdir(formDir, {
15051
+ recursive: true
15052
+ });
15053
+ await promises_default().writeFile(external_path_default().join(formDir, "__init__.py"), code);
15054
+ await promises_default().writeFile(external_path_default().join(formDir, "form_template.yaml"), external_js_yaml_default().dump(formTemplate));
15055
+ } else {
15056
+ await promises_default().writeFile(external_path_default().join(depDir, "client_code", `${class_name}.py`), code);
15057
+ await promises_default().writeFile(external_path_default().join(depDir, "client_code", `${class_name}.yaml`), external_js_yaml_default().dump(formTemplate));
15058
+ }
15059
+ }
15060
+ for (const mod of dep.server_modules ?? [])if (mod.is_package) {
15061
+ const modDir = external_path_default().join(depDir, "server_code", mod.name);
15062
+ await promises_default().mkdir(modDir, {
15063
+ recursive: true
15064
+ });
15065
+ await promises_default().writeFile(external_path_default().join(modDir, "__init__.py"), mod.code);
15066
+ } else await promises_default().writeFile(external_path_default().join(depDir, "server_code", `${mod.name}.py`), mod.code);
15067
+ for (const asset of dep.assets ?? []){
15068
+ const targetPath = external_path_default().join(depDir, "theme", "assets", safeDependencyPath(asset.name, "asset"));
15069
+ await promises_default().mkdir(external_path_default().dirname(targetPath), {
15070
+ recursive: true
15071
+ });
15072
+ await promises_default().writeFile(targetPath, Buffer.from(asset.content, "base64"));
15073
+ }
15074
+ for (const doc of dep.docs ?? []){
15075
+ const targetPath = external_path_default().join(depDir, safeDependencyPath(doc.path, "doc"));
15076
+ await promises_default().mkdir(external_path_default().dirname(targetPath), {
15077
+ recursive: true
15078
+ });
15079
+ await promises_default().writeFile(targetPath, doc.content);
15080
+ }
15081
+ }
15082
+ async function writeAllDepsToCache(projectRoot, response, options = {}) {
15083
+ const includeDocs = options.includeDocs ?? true;
15084
+ const manifest = await readDepsCacheManifest(projectRoot);
15085
+ const canReuseExistingCache = manifest?.includeDocs === includeDocs;
15086
+ if (!canReuseExistingCache) await clearDepsCache(projectRoot);
15087
+ const previousCached = canReuseExistingCache ? manifest.cached_dependencies : [];
15088
+ const resolvedAppIds = new Set(response.resolved_dependencies.map((dep)=>dep.app_id));
15089
+ for (const dep of previousCached)if (!resolvedAppIds.has(dep.app_id)) await promises_default().rm(external_path_default().join(projectRoot, ANVIL_DEPS_DIR, dep.package_name), {
15090
+ recursive: true,
15091
+ force: true
15092
+ });
15093
+ for (const dep of response.dependencies)await writeDepToCache(projectRoot, dep);
15094
+ const returnedByAppId = new Map(response.dependencies.map((dep)=>[
15095
+ dep.app_id,
15096
+ dep
15097
+ ]));
15098
+ const previousByAppId = new Map(previousCached.map((dep)=>[
15099
+ dep.app_id,
15100
+ dep
15101
+ ]));
15102
+ const cachedDependencies = response.resolved_dependencies.map((dep)=>{
15103
+ const returned = returnedByAppId.get(dep.app_id);
15104
+ if (returned) return cachedManifestEntry(returned, returned.package_name);
15105
+ const previous = previousByAppId.get(dep.app_id);
15106
+ if (!previous) return;
15107
+ return cachedManifestEntry(dep, previous.package_name);
15108
+ }).filter((dep)=>void 0 !== dep);
15109
+ const newManifest = {
15110
+ version: DEPS_MANIFEST_VERSION,
15111
+ includeDocs,
15112
+ resolved_dependencies: response.resolved_dependencies,
15113
+ cached_dependencies: cachedDependencies
15114
+ };
15115
+ await promises_default().mkdir(depsDir(projectRoot), {
15116
+ recursive: true
15117
+ });
15118
+ await promises_default().writeFile(depsManifestPath(projectRoot), `${JSON.stringify(newManifest, null, 2)}\n`);
15119
+ }
15120
+ async function clearDepsCache(projectRoot) {
15121
+ await promises_default().rm(depsDir(projectRoot), {
15122
+ recursive: true,
15123
+ force: true
15124
+ });
15125
+ }
15124
15126
  const external_chokidar_namespaceObject = require("chokidar");
15125
15127
  var external_chokidar_default = /*#__PURE__*/ __webpack_require__.n(external_chokidar_namespaceObject);
15126
15128
  class FileWatcher extends Emitter {
@@ -19225,6 +19227,7 @@ print(json.dumps({"issues": issues}))
19225
19227
  try {
19226
19228
  const previousSubscriptions = this.wsClient?.getDependencySubscriptions() ?? [];
19227
19229
  const { response, addedGitignoreEntry } = await refreshDependencyCache(this.repoPath, this.appId, this.anvilUrl, {
19230
+ username: this.username,
19228
19231
  includeDocs: true
19229
19232
  });
19230
19233
  if (addedGitignoreEntry) logger_logger.info("Added /.anvil/ to .gitignore");
@@ -8,11 +8,13 @@ export interface DependencyAssetFile {
8
8
  content: string;
9
9
  }
10
10
  export interface FetchAllDependenciesOptions {
11
+ username?: string;
11
12
  commit?: string;
12
13
  includeDocs?: boolean;
13
14
  knownDependencies?: ResolvedDependencyManifestEntry[];
14
15
  }
15
16
  export interface RefreshDependencyCacheOptions {
17
+ username?: string;
16
18
  commit?: string;
17
19
  includeDocs?: boolean;
18
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/services/deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/services/deps.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anvil-works/anvil-cli",
3
- "version": "0.7.5",
3
+ "version": "0.7.7",
4
4
  "description": "CLI tool for developing Anvil apps locally",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/api.d.ts",