@ni-kismet/sl-webapp-nipkg 0.3.0 → 1.0.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.
package/README.md CHANGED
@@ -10,6 +10,7 @@ A flexible tool for packaging web applications into SystemLink WebApp `.nipkg` f
10
10
 
11
11
  - 🚀 **Easy Integration**: Works seamlessly with any web application
12
12
  - 📦 **Automated Packaging**: Builds and packages your app in one command
13
+ - 🏪 **App Store Ready**: Embed rich catalog metadata — display name, icon, screenshots, category, license, and more
13
14
  - 🚢 **SystemLink Deployment**: Create/update WebApps and upload `.nipkg` content from CLI
14
15
  - 🔐 **Secure Authentication**: `login`/`logout` commands store credentials per-host — no secrets in config files
15
16
  - ⚙️ **Flexible Configuration**: Optional config files - use CLI flags or JSON config
@@ -73,15 +74,19 @@ sl-webapp-nipkg build \
73
74
 
74
75
  ```json
75
76
  {
77
+ "package": "my-webapp",
76
78
  "maintainer": "John Doe <john.doe@company.com>",
77
79
  "displayName": "My WebApp",
80
+ "section": "WebApps",
81
+ "license": "MIT",
82
+ "appStoreCategory": "Dashboard",
83
+ "appStoreType": "webapp",
78
84
  "buildDir": "dist",
79
- "buildCommand": "npm run build",
80
- "userVisible": true
85
+ "buildCommand": "npm run build"
81
86
  }
82
87
  ```
83
88
 
84
- **Note:** The `name`, `version`, and `description` are auto-detected from your `package.json` if present.
89
+ **Note:** The `package`, `version`, `description`, `homepage`, and `license` are auto-populated from your `package.json` when using `init`. Other fields must be specified explicitly in `nipkg.config.json` if needed.
85
90
 
86
91
  4. **Build and package**:
87
92
 
@@ -163,7 +168,25 @@ sl-webapp-nipkg build \
163
168
 
164
169
  ### `sl-webapp-nipkg init`
165
170
 
166
- Initialize a `nipkg.config.json` file in the current directory.
171
+ Initialize a `nipkg.config.json` file in the current directory. Auto-populates `package`, `maintainer`, `homepage`, and `license` from `package.json`, and sets `section: "WebApps"` and `appStoreType: "webapp"` as defaults.
172
+
173
+ ### `sl-webapp-nipkg generate-manifest`
174
+
175
+ Generate a `manifest.json` for App Store submission from `nipkg.config.json`. Copies all metadata fields while excluding build-only fields (`buildDir`, `buildCommand`, `outputDir`, `buildSuffix`, `deployment`).
176
+
177
+ #### Options
178
+
179
+ - `--config <path>` - Path to nipkg config file (default: `nipkg.config.json`)
180
+ - `--output <path>` - Output path for manifest file (default: `manifest.json`)
181
+ - `--nipkg-file <filename>` - Filename of the `.nipkg` to reference in the manifest
182
+
183
+ #### Example
184
+
185
+ ```bash
186
+ # Generate manifest after build
187
+ sl-webapp-nipkg build
188
+ sl-webapp-nipkg generate-manifest --nipkg-file my-app_1.0.0_all.nipkg
189
+ ```
167
190
 
168
191
  ### `sl-webapp-nipkg login`
169
192
 
@@ -358,33 +381,56 @@ Precedence: CLI flags > environment variables > stored login credential (`sl-web
358
381
 
359
382
  | Property | Type | Required | Description |
360
383
  | -------- | ---- | -------- | ----------- |
361
- | `name` | string | ❌ | Package name (auto-detected from package.json or directory name) |
384
+ | `package` | string | ❌ | Unique package identifier — lowercase with hyphens/dots/underscores (auto-detected from package.json) |
385
+ | `name` | string | ❌ | **Deprecated.** Use `package` instead |
362
386
  | `version` | string | ❌ | Package version (auto-detected from package.json, defaults to 1.0.0) |
363
- | `description` | string | ❌ | Package description (auto-detected from package.json, defaults to empty) |
387
+ | `displayName` | string | ❌ | Human-readable display name shown in the catalog card |
388
+ | `description` | string | ❌ | Short description (auto-detected from package.json) |
389
+ | `section` | string | ❌ | Package section (e.g. `'WebApps'`) |
364
390
  | `maintainer` | string | ❌ | Maintainer information (defaults to 'Unknown') |
365
- | `architecture` | string | ❌ | Target architecture (default: 'all') |
366
- | `displayName` | string | ❌ | Display name for the package |
367
- | `buildDir` | string | ❌* | Build output directory (e.g., 'dist', 'build') - *Required if not provided via CLI |
368
- | `buildCommand` | string | ❌ | Custom build command (default: 'npm run build') |
369
- | `outputDir` | string | ❌ | Custom nipkg output directory (default: 'dist/nipkg') |
391
+ | `homepage` | string | ❌ | Homepage / repository URL (auto-detected from package.json) |
392
+ | `license` | string | ❌ | SPDX license identifier — **required for App Store submissions** (auto-detected from package.json) |
393
+ | `appStoreCategory` | string | | App Store category (e.g. `'Dashboard'`, `'Data Analysis'`) |
394
+ | `appStoreType` | string | ❌ | Resource type: `'webapp'`, `'notebook'`, or `'dashboard'` |
395
+ | `appStoreAuthor` | string | ❌ | Author / company name shown in the catalog |
396
+ | `appStoreTags` | string | ❌ | Comma-separated search tags (e.g. `'assets,calibration'`) |
397
+ | `appStoreRepo` | string | ❌ | Source repository URL |
398
+ | `appStoreMinServerVersion` | string | ❌ | Minimum SystemLink server version (e.g. `'2024 Q4'`) |
399
+ | `iconFile` | string | ❌ | Path to app icon (SVG or PNG, max 128×128 px) — base64-embedded in package |
400
+ | `screenshotFiles` | string[] | ❌ | Paths to up to 3 screenshot files (PNG, max 800×600 px) — base64-embedded in package |
401
+ | `tags` | string | ❌ | Standard nipkg `Tags:` field (falls back to `appStoreTags` if omitted) |
402
+ | `extraControlFields` | object | ❌ | Arbitrary extra control file fields written verbatim as `Key: value` lines |
403
+ | `architecture` | string | ❌ | Target architecture (default: `'windows_all'` for App Store packages) |
404
+ | `userVisible` | boolean \| `'yes'` \| `'no'` | ❌ | Whether the package appears in the App Store catalog (default: `'yes'`) |
405
+ | `buildDir` | string | ❌* | Build output directory (e.g., `'dist'`, `'build'`) — *Required if not provided via CLI |
406
+ | `buildCommand` | string | ❌ | Custom build command (default: `'npm run build'`) |
407
+ | `outputDir` | string | ❌ | Custom nipkg output directory (default: `'dist/nipkg'`) |
370
408
  | `buildSuffix` | string | ❌ | Optional suffix for package filename (e.g., build ID for CI/CD) |
371
409
  | `depends` | string[] | ❌ | Package dependencies |
372
- | `userVisible` | boolean | ❌ | Whether package is user visible |
373
410
  | `deployment` | object | ❌ | SystemLink deployment defaults used by `deploy` command |
374
411
 
375
412
  ### Example Configuration
376
413
 
377
414
  ```json
378
415
  {
379
- "name": "my-webapp",
416
+ "package": "my-webapp",
380
417
  "version": "1.2.3",
381
- "description": "A SystemLink WebApp for National Instruments",
418
+ "description": "A SystemLink WebApp for National Instruments",
419
+ "displayName": "My WebApp",
420
+ "section": "WebApps",
382
421
  "maintainer": "John Doe <john.doe@company.com>",
422
+ "homepage": "https://github.com/org/my-webapp",
423
+ "license": "MIT",
424
+ "appStoreCategory": "Dashboard",
425
+ "appStoreType": "webapp",
426
+ "appStoreAuthor": "Acme Corp",
427
+ "appStoreTags": "assets,calibration",
428
+ "appStoreMinServerVersion": "2024 Q4",
429
+ "iconFile": "assets/icon.svg",
383
430
  "architecture": "all",
384
- "displayName": "My WebApp",
431
+ "userVisible": "yes",
385
432
  "buildDir": "dist",
386
433
  "buildCommand": "npm run build",
387
- "userVisible": true,
388
434
  "depends": [
389
435
  "ni-systemlink-server >= 2023.1"
390
436
  ],
@@ -513,12 +559,16 @@ npm run package:nipkg
513
559
  import { SystemLinkNipkgBuilder, NipkgConfig, BuildOptions } from '@ni-kismet/sl-webapp-nipkg';
514
560
 
515
561
  const config: NipkgConfig = {
516
- name: 'my-app',
562
+ package: 'my-app',
517
563
  version: '1.0.0',
518
564
  description: 'My SystemLink WebApp',
565
+ displayName: 'My App',
566
+ section: 'WebApps',
519
567
  maintainer: 'John Doe <john@example.com>',
568
+ license: 'MIT',
569
+ appStoreCategory: 'Dashboard',
570
+ appStoreType: 'webapp',
520
571
  buildDir: 'dist',
521
- userVisible: true
522
572
  };
523
573
 
524
574
  const options: BuildOptions = {
package/dist/builder.d.ts CHANGED
@@ -1,4 +1,8 @@
1
1
  import { NipkgConfig, BuildOptions } from './types.js';
2
+ /**
3
+ * Read a file from disk and return it as a base64-encoded data URI.
4
+ */
5
+ export declare function encodeFileAsBase64(filePath: string): string;
2
6
  export declare class SystemLinkNipkgBuilder {
3
7
  private readonly config;
4
8
  private readonly options;
@@ -8,6 +12,10 @@ export declare class SystemLinkNipkgBuilder {
8
12
  * Build the complete nipkg package
9
13
  */
10
14
  build(): Promise<void>;
15
+ /**
16
+ * Build the complete control file content with all standard and custom fields.
17
+ */
18
+ buildControlFileContent(): string;
11
19
  /**
12
20
  * Get the package name from CLI options, config, or package.json
13
21
  */
@@ -36,5 +44,9 @@ export declare class SystemLinkNipkgBuilder {
36
44
  * Package the application into .nipkg format
37
45
  */
38
46
  private packageApplication;
47
+ /**
48
+ * Resolve userVisible to 'yes' or 'no' string for the control file.
49
+ */
50
+ private resolveUserVisible;
39
51
  }
40
52
  //# sourceMappingURL=builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAMvD,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB;IAM3D;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BnC;;OAEG;IACH,OAAO,CAAC,OAAO;IA4Bf;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,UAAU;IA2BlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqCvB;;OAEG;YACW,sBAAsB;IAwCpC;;OAEG;YACW,kBAAkB;CAkEnC"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA0FvD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAa3D;AAoBD,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB;IAM3D;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BnC;;OAEG;IACI,uBAAuB,IAAI,MAAM;IA2ExC;;OAEG;IACH,OAAO,CAAC,OAAO;IAgCf;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,UAAU;IA2BlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqCvB;;OAEG;YACW,sBAAsB;IAwCpC;;OAEG;YACW,kBAAkB;IA0EhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAU7B"}
package/dist/builder.js CHANGED
@@ -1,12 +1,125 @@
1
1
  /* eslint-disable no-console */
2
2
  import fs from 'fs-extra';
3
3
  import path from 'path';
4
+ import zlib from 'zlib';
4
5
  import { execSync } from 'child_process';
5
6
  import chalk from 'chalk';
6
7
  import { createRequire } from 'node:module';
7
8
  const require = createRequire(import.meta.url);
8
9
  // eslint-disable-next-line @typescript-eslint/naming-convention
9
10
  const { Deboa } = require('deboa');
11
+ const AR_MAGIC = '!<arch>\n';
12
+ function parseAr(buffer) {
13
+ if (buffer.toString('ascii', 0, 8) !== AR_MAGIC) {
14
+ throw new Error('Not a valid ar archive');
15
+ }
16
+ const members = [];
17
+ let offset = 8;
18
+ while (offset + 60 <= buffer.length) {
19
+ const name = buffer.toString('ascii', offset, offset + 16).trim().replace(/\/$/, '');
20
+ const date = buffer.toString('ascii', offset + 16, offset + 28).trim();
21
+ const uid = buffer.toString('ascii', offset + 28, offset + 34).trim();
22
+ const gid = buffer.toString('ascii', offset + 34, offset + 40).trim();
23
+ const mode = buffer.toString('ascii', offset + 40, offset + 48).trim();
24
+ const size = parseInt(buffer.toString('ascii', offset + 48, offset + 58).trim(), 10);
25
+ offset += 60;
26
+ members.push({
27
+ name,
28
+ headerFields: { date, uid, gid, mode },
29
+ data: buffer.subarray(offset, offset + size),
30
+ });
31
+ offset += size;
32
+ if (offset % 2 !== 0) {
33
+ offset += 1;
34
+ }
35
+ }
36
+ return members;
37
+ }
38
+ function buildAr(members) {
39
+ const parts = [Buffer.from(AR_MAGIC, 'ascii')];
40
+ for (const member of members) {
41
+ const header = Buffer.alloc(60, 0x20); // space-filled
42
+ const nameField = `${member.name}/`;
43
+ header.write(nameField.slice(0, 16), 0, 16, 'ascii');
44
+ header.write(member.headerFields.date, 16, member.headerFields.date.length, 'ascii');
45
+ header.write(member.headerFields.uid, 28, member.headerFields.uid.length, 'ascii');
46
+ header.write(member.headerFields.gid, 34, member.headerFields.gid.length, 'ascii');
47
+ header.write(member.headerFields.mode, 40, member.headerFields.mode.length, 'ascii');
48
+ const sizeStr = member.data.length.toString();
49
+ header.write(sizeStr, 48, sizeStr.length, 'ascii');
50
+ header.write('`\n', 58, 2, 'ascii');
51
+ parts.push(header, Buffer.from(member.data));
52
+ if (member.data.length % 2 !== 0) {
53
+ parts.push(Buffer.from('\n'));
54
+ }
55
+ }
56
+ return Buffer.concat(parts);
57
+ }
58
+ function createTarGzSingleFile(filename, content) {
59
+ const header = Buffer.alloc(512);
60
+ header.write(filename, 0, Math.min(Buffer.byteLength(filename, 'utf-8'), 100), 'utf-8');
61
+ header.write('0000644\0', 100, 8, 'ascii');
62
+ header.write('0000000\0', 108, 8, 'ascii');
63
+ header.write('0000000\0', 116, 8, 'ascii');
64
+ const sizeOctal = content.length.toString(8).padStart(11, '0');
65
+ header.write(`${sizeOctal}\0`, 124, 12, 'ascii');
66
+ const mtimeOctal = Math.floor(Date.now() / 1000).toString(8).padStart(11, '0');
67
+ header.write(`${mtimeOctal}\0`, 136, 12, 'ascii');
68
+ header.write(' ', 148, 8, 'ascii'); // placeholder for checksum
69
+ header.write('0', 156, 1, 'ascii'); // typeflag: regular file
70
+ header.write('ustar\0', 257, 6, 'ascii');
71
+ header.write('00', 263, 2, 'ascii');
72
+ let chksum = 0;
73
+ for (let i = 0; i < 512; i++) {
74
+ chksum += header[i];
75
+ }
76
+ header.write(`${chksum.toString(8).padStart(6, '0')}\0 `, 148, 8, 'ascii');
77
+ const paddedLen = Math.ceil(content.length / 512) * 512;
78
+ const dataBlock = Buffer.alloc(paddedLen);
79
+ content.copy(dataBlock);
80
+ const endBlock = Buffer.alloc(1024); // two zero blocks
81
+ return zlib.gzipSync(Buffer.concat([header, dataBlock, endBlock]));
82
+ }
83
+ /**
84
+ * Read a file from disk and return it as a base64-encoded data URI.
85
+ */
86
+ export function encodeFileAsBase64(filePath) {
87
+ const resolved = path.resolve(filePath);
88
+ const data = fs.readFileSync(resolved);
89
+ const ext = path.extname(filePath).toLowerCase();
90
+ let mime;
91
+ switch (ext) {
92
+ case '.svg':
93
+ mime = 'image/svg+xml';
94
+ break;
95
+ case '.png':
96
+ mime = 'image/png';
97
+ break;
98
+ case '.jpg':
99
+ case '.jpeg':
100
+ mime = 'image/jpeg';
101
+ break;
102
+ default: mime = 'application/octet-stream';
103
+ }
104
+ return `data:${mime};base64,${data.toString('base64')}`;
105
+ }
106
+ /**
107
+ * Replace the control file inside a .deb archive with new content.
108
+ * The .deb is an ar archive containing control.tar.gz.
109
+ */
110
+ async function patchDebControlFile(debPath, controlContent) {
111
+ const debBuffer = await fs.readFile(debPath);
112
+ const members = parseAr(debBuffer);
113
+ const newControlTarGz = createTarGzSingleFile('./control', Buffer.from(controlContent, 'utf-8'));
114
+ const controlIdx = members.findIndex(m => m.name.startsWith('control.tar'));
115
+ if (controlIdx === -1) {
116
+ throw new Error('control.tar.gz not found in .deb archive');
117
+ }
118
+ members[controlIdx].name = 'control.tar.gz';
119
+ members[controlIdx].data = newControlTarGz;
120
+ const newAr = buildAr(members);
121
+ await fs.writeFile(debPath, newAr);
122
+ }
10
123
  export class SystemLinkNipkgBuilder {
11
124
  config;
12
125
  options;
@@ -40,14 +153,90 @@ export class SystemLinkNipkgBuilder {
40
153
  process.exit(1);
41
154
  }
42
155
  }
156
+ /**
157
+ * Build the complete control file content with all standard and custom fields.
158
+ */
159
+ buildControlFileContent() {
160
+ const lines = [];
161
+ // Standard fields
162
+ lines.push(`Package: ${this.getName()}`);
163
+ lines.push(`Version: ${this.getVersion()}`);
164
+ if (this.config.section) {
165
+ lines.push(`Section: ${this.config.section}`);
166
+ }
167
+ lines.push('Priority: optional');
168
+ lines.push(`Architecture: ${this.config.architecture ?? 'all'}`);
169
+ lines.push(`Maintainer: ${this.getMaintainer()}`);
170
+ if (this.config.depends !== undefined && this.config.depends.length > 0) {
171
+ lines.push(`Depends: ${this.config.depends.join(', ')}`);
172
+ }
173
+ if (this.config.homepage) {
174
+ lines.push(`Homepage: ${this.config.homepage}`);
175
+ }
176
+ const tags = this.config.tags ?? this.config.appStoreTags;
177
+ if (tags) {
178
+ lines.push(`Tags: ${tags}`);
179
+ }
180
+ const description = this.getDescription();
181
+ lines.push(`Description: ${description}`);
182
+ // Extended binary (XB-) attributes — prefix required by NI Package Manager convention.
183
+ // The Feed Service strips the XB- prefix when populating metadata.attributes.
184
+ lines.push('XB-Plugin: file');
185
+ if (this.config.displayName) {
186
+ lines.push(`XB-DisplayName: ${this.config.displayName}`);
187
+ }
188
+ lines.push(`XB-UserVisible: ${this.resolveUserVisible()}`);
189
+ lines.push(`XB-DisplayVersion: ${this.getVersion()}`);
190
+ if (this.config.appStoreCategory) {
191
+ lines.push(`XB-AppStoreCategory: ${this.config.appStoreCategory}`);
192
+ }
193
+ if (this.config.iconFile) {
194
+ lines.push(`XB-AppStoreIcon: ${encodeFileAsBase64(this.config.iconFile)}`);
195
+ }
196
+ if (this.config.screenshotFiles?.[0]) {
197
+ lines.push(`XB-AppStoreScreenshot1: ${encodeFileAsBase64(this.config.screenshotFiles[0])}`);
198
+ }
199
+ if (this.config.screenshotFiles?.[1]) {
200
+ lines.push(`XB-AppStoreScreenshot2: ${encodeFileAsBase64(this.config.screenshotFiles[1])}`);
201
+ }
202
+ if (this.config.screenshotFiles?.[2]) {
203
+ lines.push(`XB-AppStoreScreenshot3: ${encodeFileAsBase64(this.config.screenshotFiles[2])}`);
204
+ }
205
+ if (this.config.appStoreAuthor) {
206
+ lines.push(`XB-AppStoreAuthor: ${this.config.appStoreAuthor}`);
207
+ }
208
+ if (this.config.appStoreType) {
209
+ lines.push(`XB-AppStoreType: ${this.config.appStoreType}`);
210
+ }
211
+ if (this.config.appStoreTags) {
212
+ lines.push(`XB-AppStoreTags: ${this.config.appStoreTags}`);
213
+ }
214
+ if (this.config.appStoreRepo) {
215
+ lines.push(`XB-AppStoreRepo: ${this.config.appStoreRepo}`);
216
+ }
217
+ if (this.config.license) {
218
+ lines.push(`XB-AppStoreLicense: ${this.config.license}`);
219
+ }
220
+ if (this.config.appStoreMinServerVersion) {
221
+ lines.push(`XB-AppStoreMinServerVersion: ${this.config.appStoreMinServerVersion}`);
222
+ }
223
+ // General escape hatch
224
+ for (const [key, value] of Object.entries(this.config.extraControlFields ?? {})) {
225
+ lines.push(`${key}: ${value}`);
226
+ }
227
+ return `${lines.join('\n')}\n`;
228
+ }
43
229
  /**
44
230
  * Get the package name from CLI options, config, or package.json
45
231
  */
46
232
  getName() {
47
- // Priority: CLI option > config > package.json > directory name
233
+ // Priority: CLI option > config.package > config.name > package.json > directory name
48
234
  if (this.options.name) {
49
235
  return this.options.name;
50
236
  }
237
+ if (this.config.package) {
238
+ return this.config.package;
239
+ }
51
240
  // If name is explicitly set in config, use it
52
241
  if (this.config.name) {
53
242
  return this.config.name;
@@ -216,6 +405,10 @@ export class SystemLinkNipkgBuilder {
216
405
  console.log(chalk.yellow(`🗑️ Removed existing package: ${pkg}`));
217
406
  }));
218
407
  }
408
+ // Validate license (required for App Store submissions)
409
+ if (!this.config.license) {
410
+ console.log(chalk.yellow('⚠️ No "license" field in config — required for App Store submissions'));
411
+ }
219
412
  console.log(chalk.blue('📦 Packaging application...'));
220
413
  try {
221
414
  // Prepare source directory with ApplicationFiles_64 structure
@@ -228,7 +421,7 @@ export class SystemLinkNipkgBuilder {
228
421
  : `${this.getName()}_${this.getVersion()}_${architecture}`;
229
422
  const debPath = path.join(nipkgDir, `${packageName}.deb`);
230
423
  const nipkgPath = path.join(nipkgDir, `${packageName}.nipkg`);
231
- // Build control file options
424
+ // Build control file options (standard fields only — deboa drops custom ones)
232
425
  const depends = this.config.depends ? this.config.depends.join(', ') : undefined;
233
426
  const controlFileOptions = {
234
427
  maintainer: this.getMaintainer(),
@@ -237,8 +430,6 @@ export class SystemLinkNipkgBuilder {
237
430
  version: this.getVersion(),
238
431
  architecture,
239
432
  ...(depends && { depends }),
240
- ...(this.config.displayName && { displayName: this.config.displayName }),
241
- ...(this.config.userVisible !== undefined && { userVisible: String(this.config.userVisible) }),
242
433
  };
243
434
  // Use Deboa to create the .deb file
244
435
  if (this.options.verbose) {
@@ -251,6 +442,9 @@ export class SystemLinkNipkgBuilder {
251
442
  targetFileName: `${packageName}`,
252
443
  });
253
444
  await deboa.package();
445
+ // Patch the control file with all fields (standard + App Store + custom)
446
+ const controlContent = this.buildControlFileContent();
447
+ await patchDebControlFile(debPath, controlContent);
254
448
  // Clean up temp source directory
255
449
  await fs.remove(sourceDir);
256
450
  // Rename .deb to .nipkg
@@ -262,5 +456,18 @@ export class SystemLinkNipkgBuilder {
262
456
  throw new Error(`Packaging failed: ${error.message}`);
263
457
  }
264
458
  }
459
+ /**
460
+ * Resolve userVisible to 'yes' or 'no' string for the control file.
461
+ */
462
+ resolveUserVisible() {
463
+ const uv = this.config.userVisible;
464
+ if (uv === undefined) {
465
+ return 'yes';
466
+ }
467
+ if (typeof uv === 'boolean') {
468
+ return uv ? 'yes' : 'no';
469
+ }
470
+ return uv;
471
+ }
265
472
  }
266
473
  //# sourceMappingURL=builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}