pacman-debian 7.2.0

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.
Files changed (233) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +440 -0
  3. package/README.zh.md +388 -0
  4. package/README_zh-CN.md +421 -0
  5. package/dist/ar.d.ts +8 -0
  6. package/dist/ar.d.ts.map +1 -0
  7. package/dist/ar.js +88 -0
  8. package/dist/ar.js.map +1 -0
  9. package/dist/cli/pacman.d.ts +2 -0
  10. package/dist/cli/pacman.d.ts.map +1 -0
  11. package/dist/cli/pacman.js +512 -0
  12. package/dist/cli/pacman.js.map +1 -0
  13. package/dist/compress.d.ts +2 -0
  14. package/dist/compress.d.ts.map +1 -0
  15. package/dist/compress.js +78 -0
  16. package/dist/compress.js.map +1 -0
  17. package/dist/config.d.ts +3 -0
  18. package/dist/config.d.ts.map +1 -0
  19. package/dist/config.js +90 -0
  20. package/dist/config.js.map +1 -0
  21. package/dist/control.d.ts +2 -0
  22. package/dist/control.d.ts.map +1 -0
  23. package/dist/control.js +31 -0
  24. package/dist/control.js.map +1 -0
  25. package/dist/core/ar.d.ts +7 -0
  26. package/dist/core/ar.d.ts.map +1 -0
  27. package/dist/core/ar.js +45 -0
  28. package/dist/core/ar.js.map +1 -0
  29. package/dist/core/compress.d.ts +2 -0
  30. package/dist/core/compress.d.ts.map +1 -0
  31. package/dist/core/compress.js +75 -0
  32. package/dist/core/compress.js.map +1 -0
  33. package/dist/core/control.d.ts +2 -0
  34. package/dist/core/control.d.ts.map +1 -0
  35. package/dist/core/control.js +29 -0
  36. package/dist/core/control.js.map +1 -0
  37. package/dist/core/deb.d.ts +4 -0
  38. package/dist/core/deb.d.ts.map +1 -0
  39. package/dist/core/deb.js +89 -0
  40. package/dist/core/deb.js.map +1 -0
  41. package/dist/core/deps.d.ts +25 -0
  42. package/dist/core/deps.d.ts.map +1 -0
  43. package/dist/core/deps.js +230 -0
  44. package/dist/core/deps.js.map +1 -0
  45. package/dist/core/options.d.ts +19 -0
  46. package/dist/core/options.d.ts.map +1 -0
  47. package/dist/core/options.js +3 -0
  48. package/dist/core/options.js.map +1 -0
  49. package/dist/core/pkgfile.d.ts +35 -0
  50. package/dist/core/pkgfile.d.ts.map +1 -0
  51. package/dist/core/pkgfile.js +162 -0
  52. package/dist/core/pkgfile.js.map +1 -0
  53. package/dist/core/tar.d.ts +13 -0
  54. package/dist/core/tar.d.ts.map +1 -0
  55. package/dist/core/tar.js +132 -0
  56. package/dist/core/tar.js.map +1 -0
  57. package/dist/core/types.d.ts +83 -0
  58. package/dist/core/types.d.ts.map +1 -0
  59. package/dist/core/types.js +3 -0
  60. package/dist/core/types.js.map +1 -0
  61. package/dist/database.d.ts +20 -0
  62. package/dist/database.d.ts.map +1 -0
  63. package/dist/database.js +181 -0
  64. package/dist/database.js.map +1 -0
  65. package/dist/db/database.d.ts +17 -0
  66. package/dist/db/database.d.ts.map +1 -0
  67. package/dist/db/database.js +145 -0
  68. package/dist/db/database.js.map +1 -0
  69. package/dist/db/dpkg-compat.d.ts +19 -0
  70. package/dist/db/dpkg-compat.d.ts.map +1 -0
  71. package/dist/db/dpkg-compat.js +150 -0
  72. package/dist/db/dpkg-compat.js.map +1 -0
  73. package/dist/db/localdb.d.ts +9 -0
  74. package/dist/db/localdb.d.ts.map +1 -0
  75. package/dist/db/localdb.js +246 -0
  76. package/dist/db/localdb.js.map +1 -0
  77. package/dist/db/sqlite.d.ts +20 -0
  78. package/dist/db/sqlite.d.ts.map +1 -0
  79. package/dist/db/sqlite.js +309 -0
  80. package/dist/db/sqlite.js.map +1 -0
  81. package/dist/deb.d.ts +5 -0
  82. package/dist/deb.d.ts.map +1 -0
  83. package/dist/deb.js +105 -0
  84. package/dist/deb.js.map +1 -0
  85. package/dist/dpkg-compat.d.ts +18 -0
  86. package/dist/dpkg-compat.d.ts.map +1 -0
  87. package/dist/dpkg-compat.js +137 -0
  88. package/dist/dpkg-compat.js.map +1 -0
  89. package/dist/i18n/en.json +109 -0
  90. package/dist/i18n/index.d.ts +3 -0
  91. package/dist/i18n/index.d.ts.map +1 -0
  92. package/dist/i18n/index.js +36 -0
  93. package/dist/i18n/index.js.map +1 -0
  94. package/dist/i18n/zh-CN.json +109 -0
  95. package/dist/index.d.ts +3 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +9 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/install.d.ts +2 -0
  100. package/dist/install.d.ts.map +1 -0
  101. package/dist/install.js +126 -0
  102. package/dist/install.js.map +1 -0
  103. package/dist/makepkg/build.d.ts +19 -0
  104. package/dist/makepkg/build.d.ts.map +1 -0
  105. package/dist/makepkg/build.js +370 -0
  106. package/dist/makepkg/build.js.map +1 -0
  107. package/dist/makepkg/index.d.ts +3 -0
  108. package/dist/makepkg/index.d.ts.map +1 -0
  109. package/dist/makepkg/index.js +84 -0
  110. package/dist/makepkg/index.js.map +1 -0
  111. package/dist/makepkg/pkgbuild.d.ts +36 -0
  112. package/dist/makepkg/pkgbuild.d.ts.map +1 -0
  113. package/dist/makepkg/pkgbuild.js +165 -0
  114. package/dist/makepkg/pkgbuild.js.map +1 -0
  115. package/dist/ops/install.d.ts +5 -0
  116. package/dist/ops/install.d.ts.map +1 -0
  117. package/dist/ops/install.js +299 -0
  118. package/dist/ops/install.js.map +1 -0
  119. package/dist/ops/query.d.ts +9 -0
  120. package/dist/ops/query.d.ts.map +1 -0
  121. package/dist/ops/query.js +189 -0
  122. package/dist/ops/query.js.map +1 -0
  123. package/dist/ops/remove.d.ts +3 -0
  124. package/dist/ops/remove.d.ts.map +1 -0
  125. package/dist/ops/remove.js +121 -0
  126. package/dist/ops/remove.js.map +1 -0
  127. package/dist/ops/upgrade.d.ts +4 -0
  128. package/dist/ops/upgrade.d.ts.map +1 -0
  129. package/dist/ops/upgrade.js +122 -0
  130. package/dist/ops/upgrade.js.map +1 -0
  131. package/dist/pacman.d.ts +2 -0
  132. package/dist/pacman.d.ts.map +1 -0
  133. package/dist/pacman.js +165 -0
  134. package/dist/pacman.js.map +1 -0
  135. package/dist/query.d.ts +5 -0
  136. package/dist/query.d.ts.map +1 -0
  137. package/dist/query.js +143 -0
  138. package/dist/query.js.map +1 -0
  139. package/dist/remove.d.ts +2 -0
  140. package/dist/remove.d.ts.map +1 -0
  141. package/dist/remove.js +82 -0
  142. package/dist/remove.js.map +1 -0
  143. package/dist/repo/config.d.ts +3 -0
  144. package/dist/repo/config.d.ts.map +1 -0
  145. package/dist/repo/config.js +146 -0
  146. package/dist/repo/config.js.map +1 -0
  147. package/dist/repo/repository.d.ts +10 -0
  148. package/dist/repo/repository.d.ts.map +1 -0
  149. package/dist/repo/repository.js +596 -0
  150. package/dist/repo/repository.js.map +1 -0
  151. package/dist/repository.d.ts +10 -0
  152. package/dist/repository.d.ts.map +1 -0
  153. package/dist/repository.js +175 -0
  154. package/dist/repository.js.map +1 -0
  155. package/dist/scripts/pacman-conf.d.ts +3 -0
  156. package/dist/scripts/pacman-conf.d.ts.map +1 -0
  157. package/dist/scripts/pacman-conf.js +74 -0
  158. package/dist/scripts/pacman-conf.js.map +1 -0
  159. package/dist/scripts/setup.d.ts +3 -0
  160. package/dist/scripts/setup.d.ts.map +1 -0
  161. package/dist/scripts/setup.js +289 -0
  162. package/dist/scripts/setup.js.map +1 -0
  163. package/dist/tar.d.ts +17 -0
  164. package/dist/tar.d.ts.map +1 -0
  165. package/dist/tar.js +148 -0
  166. package/dist/tar.js.map +1 -0
  167. package/dist/types.d.ts +80 -0
  168. package/dist/types.d.ts.map +1 -0
  169. package/dist/types.js +3 -0
  170. package/dist/types.js.map +1 -0
  171. package/dist/ui/colors.d.ts +13 -0
  172. package/dist/ui/colors.d.ts.map +1 -0
  173. package/dist/ui/colors.js +38 -0
  174. package/dist/ui/colors.js.map +1 -0
  175. package/dist/ui/format.d.ts +3 -0
  176. package/dist/ui/format.d.ts.map +1 -0
  177. package/dist/ui/format.js +15 -0
  178. package/dist/ui/format.js.map +1 -0
  179. package/dist/ui/progress.d.ts +8 -0
  180. package/dist/ui/progress.d.ts.map +1 -0
  181. package/dist/ui/progress.js +50 -0
  182. package/dist/ui/progress.js.map +1 -0
  183. package/dist/ui/prompt.d.ts +4 -0
  184. package/dist/ui/prompt.d.ts.map +1 -0
  185. package/dist/ui/prompt.js +60 -0
  186. package/dist/ui/prompt.js.map +1 -0
  187. package/lib/pac4deb/Makefile +26 -0
  188. package/lib/pac4deb/README.md +47 -0
  189. package/lib/pac4deb/include/alpm.h +166 -0
  190. package/lib/pac4deb/include/alpm_list.h +42 -0
  191. package/lib/pac4deb/libalpm.so +0 -0
  192. package/lib/pac4deb/src/alpm_list.c +102 -0
  193. package/lib/pac4deb/src/genstubs.sh +51 -0
  194. package/lib/pac4deb/src/genstubs2.sh +72 -0
  195. package/lib/pac4deb/src/genstubs3.sh +43 -0
  196. package/lib/pac4deb/src/libalpm.c +537 -0
  197. package/lib/pac4deb/src/stubs_manual.c +198 -0
  198. package/lib/pac4deb/stubs.c +6 -0
  199. package/lib/pac4deb/update_header.sh +15 -0
  200. package/package.json +41 -0
  201. package/src/cli/pacman.ts +308 -0
  202. package/src/core/ar.ts +54 -0
  203. package/src/core/compress.ts +27 -0
  204. package/src/core/control.ts +22 -0
  205. package/src/core/deb.ts +47 -0
  206. package/src/core/deps.ts +260 -0
  207. package/src/core/options.ts +20 -0
  208. package/src/core/pkgfile.ts +146 -0
  209. package/src/core/tar.ts +101 -0
  210. package/src/core/types.ts +89 -0
  211. package/src/db/database.ts +102 -0
  212. package/src/db/dpkg-compat.ts +129 -0
  213. package/src/db/localdb.ts +181 -0
  214. package/src/i18n/en.json +114 -0
  215. package/src/i18n/index.ts +32 -0
  216. package/src/i18n/zh-CN.json +114 -0
  217. package/src/index.ts +7 -0
  218. package/src/makepkg/build.ts +351 -0
  219. package/src/makepkg/index.ts +87 -0
  220. package/src/makepkg/pkgbuild.ts +146 -0
  221. package/src/ops/install.ts +260 -0
  222. package/src/ops/query.ts +117 -0
  223. package/src/ops/remove.ts +77 -0
  224. package/src/ops/upgrade.ts +87 -0
  225. package/src/repo/config.ts +96 -0
  226. package/src/repo/repository.ts +520 -0
  227. package/src/scripts/pacman-conf.ts +68 -0
  228. package/src/scripts/setup.ts +261 -0
  229. package/src/ui/colors.ts +40 -0
  230. package/src/ui/format.ts +9 -0
  231. package/src/ui/progress.ts +26 -0
  232. package/src/ui/prompt.ts +21 -0
  233. package/tsconfig.json +19 -0
package/dist/tar.js ADDED
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.iterateTar = iterateTar;
37
+ exports.listTarEntries = listTarEntries;
38
+ exports.readFileFromTar = readFileFromTar;
39
+ exports.extractTar = extractTar;
40
+ const fs = __importStar(require("node:fs"));
41
+ const path = __importStar(require("node:path"));
42
+ function parseOctal(buf, start, len) {
43
+ const str = buf.subarray(start, start + len).toString('utf8').replace(/\0/g, '').trim();
44
+ return parseInt(str, 8) || 0;
45
+ }
46
+ function trimNull(s) {
47
+ return s.replace(/\0/g, '').trim();
48
+ }
49
+ function readHeader(buf) {
50
+ if (buf.length < 512)
51
+ return null;
52
+ const allZero = buf.subarray(0, 512).every(b => b === 0);
53
+ if (allZero)
54
+ return null;
55
+ const name = trimNull(buf.subarray(0, 100).toString('utf8'));
56
+ const prefix = trimNull(buf.subarray(345, 500).toString('utf8'));
57
+ const mode = parseOctal(buf, 100, 8);
58
+ const size = parseOctal(buf, 124, 12);
59
+ const typeflag = String.fromCharCode(buf[156]);
60
+ const linkname = trimNull(buf.subarray(157, 257).toString('utf8'));
61
+ const fullName = prefix ? `${prefix}/${name}` : name;
62
+ let type = 'unknown';
63
+ if (typeflag === '0' || typeflag === '\0')
64
+ type = 'file';
65
+ else if (typeflag === '5')
66
+ type = 'directory';
67
+ else if (typeflag === '2')
68
+ type = 'symlink';
69
+ return { name: fullName, mode, size, type, linkname };
70
+ }
71
+ function* iterateTar(buf) {
72
+ let offset = 0;
73
+ while (offset < buf.length) {
74
+ if (offset + 512 > buf.length)
75
+ break;
76
+ const hdr = readHeader(buf.subarray(offset));
77
+ if (!hdr)
78
+ break;
79
+ offset += 512;
80
+ const paddedSize = Math.ceil(hdr.size / 512) * 512;
81
+ let data = null;
82
+ if (hdr.type === 'file' && hdr.size > 0) {
83
+ data = buf.subarray(offset, offset + hdr.size);
84
+ }
85
+ yield {
86
+ name: hdr.name,
87
+ type: hdr.type,
88
+ size: hdr.size,
89
+ data,
90
+ linkname: hdr.linkname,
91
+ mode: hdr.mode,
92
+ };
93
+ offset += paddedSize;
94
+ }
95
+ }
96
+ function listTarEntries(buf) {
97
+ const entries = [];
98
+ for (const entry of iterateTar(buf)) {
99
+ entries.push({ name: entry.name, type: entry.type, size: entry.size });
100
+ }
101
+ return entries;
102
+ }
103
+ function readFileFromTar(buf, filePath) {
104
+ for (const entry of iterateTar(buf)) {
105
+ if (entry.name === filePath && entry.data) {
106
+ return entry.data;
107
+ }
108
+ }
109
+ return null;
110
+ }
111
+ function extractTar(buf, dest, filter) {
112
+ const extracted = [];
113
+ for (const entry of iterateTar(buf)) {
114
+ if (filter && !filter(entry.name))
115
+ continue;
116
+ let targetPath = entry.name;
117
+ if (targetPath.startsWith('./'))
118
+ targetPath = targetPath.slice(2);
119
+ if (targetPath.startsWith('/'))
120
+ targetPath = targetPath.slice(1);
121
+ if (!targetPath)
122
+ continue;
123
+ const fullPath = path.resolve(dest, targetPath);
124
+ if (!fullPath.startsWith(path.resolve(dest))) {
125
+ continue;
126
+ }
127
+ extracted.push(`/${targetPath}`);
128
+ if (entry.type === 'directory') {
129
+ fs.mkdirSync(fullPath, { recursive: true, mode: entry.mode || 0o755 });
130
+ }
131
+ else if (entry.type === 'file') {
132
+ fs.mkdirSync(path.dirname(fullPath), { recursive: true, mode: 0o755 });
133
+ if (entry.data) {
134
+ fs.writeFileSync(fullPath, entry.data, { mode: entry.mode || 0o644 });
135
+ }
136
+ }
137
+ else if (entry.type === 'symlink') {
138
+ fs.mkdirSync(path.dirname(fullPath), { recursive: true });
139
+ try {
140
+ fs.unlinkSync(fullPath);
141
+ }
142
+ catch { }
143
+ fs.symlinkSync(entry.linkname, fullPath);
144
+ }
145
+ }
146
+ return extracted;
147
+ }
148
+ //# sourceMappingURL=tar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tar.js","sourceRoot":"","sources":["../src/tar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ export interface DebControl {
2
+ package: string;
3
+ version: string;
4
+ architecture: string;
5
+ maintainer?: string;
6
+ description?: string;
7
+ depends?: string;
8
+ 'pre-depends'?: string;
9
+ 'recommends'?: string;
10
+ 'suggests'?: string;
11
+ conflicts?: string;
12
+ breaks?: string;
13
+ provides?: string;
14
+ 'installed-size'?: string;
15
+ section?: string;
16
+ priority?: string;
17
+ homepage?: string;
18
+ [key: string]: string | undefined;
19
+ }
20
+ export interface DebPackage {
21
+ path: string;
22
+ control: DebControl;
23
+ controlTar: Buffer;
24
+ dataTar: Buffer;
25
+ }
26
+ export interface InstalledPackage {
27
+ name: string;
28
+ version: string;
29
+ architecture: string;
30
+ description: string;
31
+ depends?: string;
32
+ 'pre-depends'?: string;
33
+ conflicts?: string;
34
+ provides?: string;
35
+ maintainer?: string;
36
+ homepage?: string;
37
+ controlSection?: string;
38
+ controlPriority?: string;
39
+ installedSize?: number;
40
+ installTime: number;
41
+ reason: 'explicit' | 'dependency';
42
+ files: string[];
43
+ }
44
+ export interface RepoPkg {
45
+ package: string;
46
+ version: string;
47
+ architecture: string;
48
+ description?: string;
49
+ depends?: string;
50
+ 'pre-depends'?: string;
51
+ conflicts?: string;
52
+ provides?: string;
53
+ filename: string;
54
+ size?: number;
55
+ sha256?: string;
56
+ repo: string;
57
+ }
58
+ export interface RepoConfig {
59
+ name: string;
60
+ server: string;
61
+ dist: string;
62
+ components: string[];
63
+ }
64
+ export interface Config {
65
+ architecture: string;
66
+ repos: RepoConfig[];
67
+ }
68
+ export interface Database {
69
+ packages: Map<string, InstalledPackage>;
70
+ fileIndex: Map<string, string>;
71
+ }
72
+ export interface Transaction {
73
+ id: string;
74
+ timestamp: number;
75
+ action: 'install' | 'remove';
76
+ package: string;
77
+ version: string;
78
+ completed: boolean;
79
+ }
80
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ export declare const color: {
2
+ repo: (s: string) => string;
3
+ pkg: (s: string) => string;
4
+ local: (s: string) => string;
5
+ error: (s: string) => string;
6
+ warn: (s: string) => string;
7
+ ok: (s: string) => string;
8
+ muted: (s: string) => string;
9
+ title: (s: string) => string;
10
+ size: (s: string) => string;
11
+ rate: (s: string) => string;
12
+ };
13
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/ui/colors.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,KAAK;cAJY,MAAM,KAAK,MAAM;aAAjB,MAAM,KAAK,MAAM;eAAjB,MAAM,KAAK,MAAM;eAAjB,MAAM,KAAK,MAAM;cAAjB,MAAM,KAAK,MAAM;YAAjB,MAAM,KAAK,MAAM;eAAjB,MAAM,KAAK,MAAM;eAAjB,MAAM,KAAK,MAAM;cAAjB,MAAM,KAAK,MAAM;cAAjB,MAAM,KAAK,MAAM;CAe9C,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ // ANSI escape codes matching official pacman colors.
3
+ // sync repos = magenta, local repos = blue, pkg names = green
4
+ // errors = red, warnings = yellow
5
+ // Controlled by `Color` in pacman.conf [options].
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.color = void 0;
8
+ const config_1 = require("../repo/config");
9
+ const esc = (n) => `\x1b[${n}m`;
10
+ const ansi = {
11
+ magenta: esc(35), green: esc(32), blue: esc(34), red: esc(31),
12
+ yellow: esc(33), cyan: esc(36), dim: esc(2), bold: esc(1), reset: esc(0),
13
+ };
14
+ let enabled = false;
15
+ function checkConfig() {
16
+ try {
17
+ const cfg = (0, config_1.loadConfig)();
18
+ enabled = cfg.color;
19
+ }
20
+ catch { }
21
+ }
22
+ checkConfig();
23
+ function c(code) {
24
+ return (s) => (enabled ? `${code}${s}${ansi.reset}` : s);
25
+ }
26
+ exports.color = {
27
+ repo: c(ansi.magenta),
28
+ pkg: c(ansi.green),
29
+ local: c(ansi.blue),
30
+ error: c(ansi.bold + ansi.red),
31
+ warn: c(ansi.yellow),
32
+ ok: c(ansi.green),
33
+ muted: c(ansi.dim),
34
+ title: c(ansi.bold),
35
+ size: c(ansi.magenta),
36
+ rate: c(ansi.cyan),
37
+ };
38
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/ui/colors.ts"],"names":[],"mappings":";AAAA,qDAAqD;AACrD,8DAA8D;AAC9D,kCAAkC;AAClC,kDAAkD;;;AAElD,2CAA4C;AAE5C,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;AAExC,MAAM,IAAI,GAAG;IACX,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IAC7D,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;CACzE,CAAC;AAEF,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,mBAAU,GAAE,CAAC;QACzB,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AACD,WAAW,EAAE,CAAC;AAEd,SAAS,CAAC,CAAC,IAAY;IACrB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAEY,QAAA,KAAK,GAAG;IACnB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACrB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACnB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACpB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACjB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAClB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACnB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function formatBytes(n: number): string;
2
+ export declare function pkgLabel(name: string, version: string): string;
3
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/ui/format.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatBytes = formatBytes;
4
+ exports.pkgLabel = pkgLabel;
5
+ function formatBytes(n) {
6
+ if (n < 1024)
7
+ return `${n} B`;
8
+ if (n < 1048576)
9
+ return `${(n / 1024).toFixed(1)} KiB`;
10
+ return `${(n / 1048576).toFixed(2)} MiB`;
11
+ }
12
+ function pkgLabel(name, version) {
13
+ return `${name}-${version}`;
14
+ }
15
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/ui/format.ts"],"names":[],"mappings":";;AAAA,kCAIC;AAED,4BAEC;AARD,SAAgB,WAAW,CAAC,CAAS;IACnC,IAAI,CAAC,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,GAAG,OAAO;QAAE,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACvD,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3C,CAAC;AAED,SAAgB,QAAQ,CAAC,IAAY,EAAE,OAAe;IACpD,OAAO,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function humanSize(n: number, dec: number): {
2
+ val: string;
3
+ unit: string;
4
+ };
5
+ export declare function drawProgressBar(pct: number, cols: number): string;
6
+ export declare function formatRate(rate: number): string;
7
+ export declare function formatETA(eta: number): string;
8
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/ui/progress.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAQ/E;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7C"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.humanSize = humanSize;
4
+ exports.drawProgressBar = drawProgressBar;
5
+ exports.formatRate = formatRate;
6
+ exports.formatETA = formatETA;
7
+ function humanSize(n, dec) {
8
+ const abs = Math.abs(n);
9
+ let v, u;
10
+ if (abs < 1024) {
11
+ v = n;
12
+ u = 'B';
13
+ }
14
+ else if (abs < 1048576) {
15
+ v = n / 1024;
16
+ u = 'KiB';
17
+ }
18
+ else if (abs < 1073741824) {
19
+ v = n / 1048576;
20
+ u = 'MiB';
21
+ }
22
+ else {
23
+ v = n / 1073741824;
24
+ u = 'GiB';
25
+ }
26
+ return { val: v.toFixed(dec), unit: u };
27
+ }
28
+ function drawProgressBar(pct, cols) {
29
+ const barLen = Math.max(Math.floor((cols - 55) * 0.35), 8);
30
+ const hashes = Math.round(pct / 100 * barLen);
31
+ return '#'.repeat(hashes) + '-'.repeat(Math.max(barLen - hashes, 0));
32
+ }
33
+ function formatRate(rate) {
34
+ if (rate < 9.995) {
35
+ const s = humanSize(rate, 2);
36
+ return `${s.val.padStart(4)} ${s.unit}/s`;
37
+ }
38
+ if (rate < 99.95) {
39
+ const s = humanSize(rate, 1);
40
+ return `${s.val.padStart(4)} ${s.unit}/s`;
41
+ }
42
+ const s = humanSize(rate, 0);
43
+ return `${s.val.padStart(4)} ${s.unit}/s`;
44
+ }
45
+ function formatETA(eta) {
46
+ if (eta <= 0 || eta >= 7200)
47
+ return '--:--';
48
+ return `${String(Math.floor(eta / 60)).padStart(2, '0')}:${String(Math.floor(eta % 60)).padStart(2, '0')}`;
49
+ }
50
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/ui/progress.ts"],"names":[],"mappings":";;AAAA,8BAQC;AAED,0CAIC;AAED,gCAIC;AAED,8BAGC;AAzBD,SAAgB,SAAS,CAAC,CAAS,EAAE,GAAW;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAS,EAAE,CAAS,CAAC;IACzB,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,GAAG,CAAC;IAAC,CAAC;SAC9B,IAAI,GAAG,GAAG,OAAO,EAAE,CAAC;QAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAAC,CAAC,GAAG,KAAK,CAAC;IAAC,CAAC;SAC/C,IAAI,GAAG,GAAG,UAAU,EAAE,CAAC;QAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QAAC,CAAC,GAAG,KAAK,CAAC;IAAC,CAAC;SACrD,CAAC;QAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;QAAC,CAAC,GAAG,KAAK,CAAC;IAAC,CAAC;IACvC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED,SAAgB,eAAe,CAAC,GAAW,EAAE,IAAY;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC;IAC9C,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,SAAgB,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QAAC,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;IAAC,CAAC;IAC9F,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QAAC,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;IAAC,CAAC;IAC9F,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;AAC1E,CAAC;AAED,SAAgB,SAAS,CAAC,GAAW;IACnC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,OAAO,CAAC;IAC5C,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC7G,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare let noconfirm: boolean;
2
+ export declare function setNoConfirm(val: boolean): void;
3
+ export declare function confirm(prompt: string, defaultYes?: boolean): Promise<boolean>;
4
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/ui/prompt.ts"],"names":[],"mappings":"AAEA,eAAO,IAAI,SAAS,SAAQ,CAAC;AAE7B,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAE/C;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,OAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAYpF"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.noconfirm = void 0;
37
+ exports.setNoConfirm = setNoConfirm;
38
+ exports.confirm = confirm;
39
+ const readline = __importStar(require("node:readline"));
40
+ exports.noconfirm = false;
41
+ function setNoConfirm(val) {
42
+ exports.noconfirm = val;
43
+ }
44
+ function confirm(prompt, defaultYes = true) {
45
+ if (exports.noconfirm)
46
+ return Promise.resolve(defaultYes);
47
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
48
+ const suffix = defaultYes ? '[Y/n]' : '[y/N]';
49
+ return new Promise(resolve => {
50
+ rl.question(`${prompt} ${suffix} `, answer => {
51
+ rl.close();
52
+ const a = answer.trim().toLowerCase();
53
+ if (a === '')
54
+ resolve(defaultYes);
55
+ else
56
+ resolve(a === 'y' || a === 'yes');
57
+ });
58
+ });
59
+ }
60
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/ui/prompt.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,oCAEC;AAED,0BAYC;AApBD,wDAA0C;AAE/B,QAAA,SAAS,GAAG,KAAK,CAAC;AAE7B,SAAgB,YAAY,CAAC,GAAY;IACvC,iBAAS,GAAG,GAAG,CAAC;AAClB,CAAC;AAED,SAAgB,OAAO,CAAC,MAAc,EAAE,aAAsB,IAAI;IAChE,IAAI,iBAAS;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,EAAE,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE;YAC3C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO,CAAC,UAAU,CAAC,CAAC;;gBAC7B,OAAO,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,26 @@
1
+ CC ?= gcc
2
+ CFLAGS ?= -O2 -fPIC
3
+ CFLAGS += -Iinclude -Wno-unused-parameter
4
+ LDFLAGS += -shared -ldl
5
+
6
+ SRC = $(wildcard src/*.c)
7
+ OBJ = $(SRC:.c=.o)
8
+ TARGET = libalpm.so
9
+
10
+ .PHONY: all clean install
11
+
12
+ all: $(TARGET)
13
+
14
+ $(TARGET): $(OBJ)
15
+ $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
16
+
17
+ %.o: %.c
18
+ $(CC) $(CFLAGS) -c -o $@ $<
19
+
20
+ clean:
21
+ rm -f $(TARGET) src/*.o
22
+
23
+ install: $(TARGET)
24
+ install -Dm755 $(TARGET) /usr/local/lib/$(TARGET)
25
+ ldconfig
26
+ @echo "Installed to /usr/local/lib/$(TARGET)"
@@ -0,0 +1,47 @@
1
+ # pac4deb-libalpm
2
+
3
+ A drop-in replacement for Arch Linux's `libalpm.so`, reading from pacman-debian's database (`/var/lib/pacman-debian/`). Enables native AUR helpers like `yay`, `expac`, `pkgfile` to run on Debian without modification.
4
+
5
+ ## What is libalpm?
6
+
7
+ Arch Linux's package management core library (C). `pacman`, `yay`, `expac` and other Arch tools link against it to query databases, resolve dependencies, and manage transactions — all at the C API level rather than through the `pacman` CLI binary.
8
+
9
+ ## How it works
10
+
11
+ ```
12
+ yay ──────┐
13
+ expac ────┤
14
+ pkgfile ──┼─ libalpm.so (this project)
15
+ │ ├─ reads /var/lib/pacman-debian/status.json
16
+ │ ├─ reads /var/cache/pacman-debian/packages/*.json
17
+ │ └─ wraps pacman-debian for transactions
18
+
19
+ └─ (real libalpm reads /var/lib/pacman/local/*/desc)
20
+ ```
21
+
22
+ Instead of reading Arch's file-based package database, this library reads pacman-debian's JSON database and exposes the same C API. AUR helpers and other libalpm-dependent tools become usable on Debian without porting.
23
+
24
+ ## Build
25
+
26
+ ```bash
27
+ make
28
+ sudo make install
29
+ ```
30
+
31
+ ## API Coverage
32
+
33
+ Implements the most commonly used subset of libalpm's public API:
34
+
35
+ | Group | Functions |
36
+ |-------|-----------|
37
+ | Handle | `alpm_initialize`, `alpm_release` |
38
+ | Databases | `alpm_db_register_local`, `alpm_db_register_sync`, `alpm_db_unregister_all` |
39
+ | Package access | `alpm_db_get_pkg`, `alpm_db_get_pkgcache` |
40
+ | Package properties | `alpm_pkg_get_name`, `alpm_pkg_get_version`, `alpm_pkg_get_desc`, `alpm_pkg_get_url`, `alpm_pkg_get_arch`, `alpm_pkg_get_builddate`, `alpm_pkg_get_installdate`, `alpm_pkg_get_reason`, `alpm_pkg_get_base64_sig`, `alpm_pkg_free` |
41
+ | Lists | `alpm_list_add`, `alpm_list_remove`, `alpm_list_free`, `alpm_list_count`, `alpm_list_nth`, etc. |
42
+ | Options | `alpm_option_add_cachedir`, `alpm_option_set_dbpath`, `alpm_option_get_localdb`, `alpm_option_get_syncdbs` |
43
+ | Logging | `alpm_logaction`, `alpm_option_set_logfile` |
44
+
45
+ ## License
46
+
47
+ GNU General Public License v3.0