@ms-cloudpack/cli 0.76.15 → 0.77.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.
@@ -0,0 +1,1242 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "extends": {
6
+ "anyOf": [
7
+ {
8
+ "type": "string"
9
+ },
10
+ {
11
+ "type": "array",
12
+ "items": {
13
+ "type": "string"
14
+ }
15
+ }
16
+ ],
17
+ "description": "Extend the configuration from another file: either an import path or a relative path (resolved from the config file's location). Relative paths or deep imports into another package (without an exports map) must include the file extension.\n\nIf an array, later files will take precedence when merging. (The current file's config always takes precedence over any extended config.)\n\nConfig merging approach:\n- Objects will be deeply merged.\n- Primitive values will be overwritten.\n- Arrays will be overwritten, EXCEPT for `packageSettings`, which will be concatenated."
18
+ },
19
+ "devServer": {
20
+ "$ref": "#/definitions/ServerConfig",
21
+ "deprecated": "- use \"server\" instead."
22
+ },
23
+ "server": {
24
+ "$ref": "#/definitions/ServerConfig",
25
+ "description": "Configuration for the dev server."
26
+ },
27
+ "telemetry": {
28
+ "$ref": "#/definitions/TelemetryConfig",
29
+ "description": "Configuration for telemetry."
30
+ },
31
+ "features": {
32
+ "$ref": "#/definitions/Features",
33
+ "description": "Enable additional Cloudpack features."
34
+ },
35
+ "helpMessage": {
36
+ "type": "string",
37
+ "description": "Help message to display when Cloudpack starts up."
38
+ },
39
+ "packageSettings": {
40
+ "type": "array",
41
+ "items": {
42
+ "$ref": "#/definitions/PackageSettings"
43
+ },
44
+ "description": "Settings to customize how packages are bundled. Later settings in the array take precedence over earlier ones."
45
+ },
46
+ "dependsOn": {
47
+ "type": "array",
48
+ "items": {
49
+ "type": "array",
50
+ "minItems": 2,
51
+ "items": [
52
+ {
53
+ "type": "string"
54
+ },
55
+ {
56
+ "type": "array",
57
+ "items": {
58
+ "type": "string"
59
+ }
60
+ }
61
+ ],
62
+ "maxItems": 2
63
+ },
64
+ "description": "Commands to execute prior to Cloudpack bundling. Each entry has a command and an array of arguments: `['command', ['arg1', 'arg2']]`."
65
+ },
66
+ "patchFilesGlobPattern": {
67
+ "type": "string",
68
+ "description": "Glob pattern to match `patch-package` patch files, relative to the project root (usually the same as the repository root).\n\nNote that if you're using `yarn patch` (v2+), those patches will be handled automatically (not by this glob pattern).",
69
+ "default": "patches/*.patch"
70
+ },
71
+ "remoteCache": {
72
+ "$ref": "#/definitions/RemoteCacheConfig",
73
+ "description": "Azure Blob Storage configuration for remote cache - uploading and downloading packages via `cloudpack sync`. If this is not provided, the remote cache will not be used."
74
+ },
75
+ "routes": {
76
+ "type": "array",
77
+ "items": {
78
+ "$ref": "#/definitions/ShorthandRoute"
79
+ },
80
+ "description": "Defines what routes to support from the app server, and which scripts will be loaded for each."
81
+ },
82
+ "neverExcludeDependencies": {
83
+ "type": "array",
84
+ "items": {
85
+ "type": "string"
86
+ },
87
+ "description": "Ignore these package names when calculating included and excluded dependencies. This is mainly intended for helper packages such as `tslib`.\n\nInclude `...` to merge with the default list (`tslib` and `@babel/runtime` as of writing)."
88
+ },
89
+ "bundlerCapabilitiesRegistry": {
90
+ "type": "object",
91
+ "additionalProperties": {
92
+ "type": "string"
93
+ },
94
+ "description": "Key value pairs of external bundler capabilities that can be enabled in the package settings.\n- Key is the name of the capability, which will be used in `PackageSettings.bundlerCapabilities`.\n- Value is the import specifier (local path or package name) for the capability module."
95
+ },
96
+ "define": {
97
+ "$ref": "#/definitions/DefineFlags",
98
+ "description": "Key value pairs that will be used to define global variables in the runtime."
99
+ },
100
+ "defaultBundler": {
101
+ "type": "string",
102
+ "description": "Advanced use only: Override the bundler that's used by default (if a package's source type doesn't indicate that a specific bundler should be used, and there are no applicable package settings). This will **significantly** decrease performance and should only be modified if `ori` is incompatible with your repo/build for some reason.\n\nIn most cases, you should use `packageSettings` to change the bundler instead: for example, if your repo's packages must be built with rspack/webpack to support some custom config, use `packageSettings: [{ match: [\"@yourscope/*\", \"your-unscoped-package\"], bundler: \"rspack\" }]`.",
103
+ "default": "ori"
104
+ },
105
+ "$schema": {
106
+ "type": "string"
107
+ }
108
+ },
109
+ "additionalProperties": false,
110
+ "description": "Per-application user-provided configuration for Cloudpack.",
111
+ "definitions": {
112
+ "ServerConfig": {
113
+ "type": "object",
114
+ "properties": {
115
+ "domain": {
116
+ "anyOf": [
117
+ {
118
+ "type": "string"
119
+ },
120
+ {
121
+ "type": "array",
122
+ "items": {
123
+ "type": "string"
124
+ }
125
+ }
126
+ ],
127
+ "description": "The domain name of the server. If multiple domains are specified, the first one will be used as the primary domain used when opening the browser."
128
+ },
129
+ "requestHeaders": {
130
+ "type": "object",
131
+ "additionalProperties": {
132
+ "type": "string"
133
+ },
134
+ "description": "Additional header key/value pairs to be added to every response.\n\nNOTE: The following header values from Cloudpack will \"win\" against by a user's config:\n- `'Cache-Control': 'no-cache'`\n- `'Access-Control-Allow-Origin': '*'`"
135
+ },
136
+ "port": {
137
+ "anyOf": [
138
+ {
139
+ "type": "number"
140
+ },
141
+ {
142
+ "type": "array",
143
+ "items": {
144
+ "type": "number"
145
+ }
146
+ }
147
+ ],
148
+ "description": "Port(s) to try when starting the server. If provided, an error will be thrown if none of the ports are available.\n\nIf no ports are provided, the server will attempt to find an available port."
149
+ },
150
+ "defaultPath": {
151
+ "type": "string",
152
+ "description": "The default path to use when opening the browser."
153
+ },
154
+ "https": {
155
+ "anyOf": [
156
+ {
157
+ "type": "boolean",
158
+ "const": true
159
+ },
160
+ {
161
+ "$ref": "#/definitions/HttpsConfig"
162
+ }
163
+ ],
164
+ "description": "The config settings for the https server. Paths to files are accepted for 'ca', 'cert', 'key', and 'pfx' settings. Everything else is passed directly to the https.createServer() method. If not provided, the server will use http."
165
+ },
166
+ "routes": {
167
+ "type": "array",
168
+ "items": {
169
+ "$ref": "#/definitions/ShorthandRoute"
170
+ },
171
+ "deprecated": "Moved to the root of the config."
172
+ }
173
+ },
174
+ "additionalProperties": false
175
+ },
176
+ "HttpsConfig": {
177
+ "type": "object",
178
+ "properties": {
179
+ "ALPNCallback": {
180
+ "not": {},
181
+ "description": "If set, this will be called when a client opens a connection using the ALPN extension. One argument will be passed to the callback: an object containing `servername` and `protocols` fields, respectively containing the server name from the SNI extension (if any) and an array of ALPN protocol name strings. The callback must return either one of the strings listed in `protocols`, which will be returned to the client as the selected ALPN protocol, or `undefined`, to reject the connection with a fatal alert. If a string is returned that does not match one of the client's ALPN protocols, an error will be thrown. This option cannot be used with the `ALPNProtocols` option, and setting both options will throw an error."
182
+ },
183
+ "allowPartialTrustChain": {
184
+ "type": "boolean",
185
+ "description": "Treat intermediate (non-self-signed) certificates in the trust CA certificate list as trusted."
186
+ },
187
+ "ca": {
188
+ "anyOf": [
189
+ {
190
+ "type": "string"
191
+ },
192
+ {
193
+ "type": "array",
194
+ "items": {
195
+ "type": "string"
196
+ }
197
+ }
198
+ ],
199
+ "description": "Optionally override the trusted CA certificates. Default is to trust the well-known CAs curated by Mozilla. Mozilla's CAs are completely replaced when CAs are explicitly specified using this option."
200
+ },
201
+ "cert": {
202
+ "anyOf": [
203
+ {
204
+ "type": "string"
205
+ },
206
+ {
207
+ "type": "array",
208
+ "items": {
209
+ "type": "string"
210
+ }
211
+ }
212
+ ],
213
+ "description": "Cert chains in PEM format. One cert chain should be provided per private key. Each cert chain should consist of the PEM formatted certificate for a provided private key, followed by the PEM formatted intermediate certificates (if any), in order, and not including the root CA (the root CA must be pre-known to the peer, see ca). When providing multiple cert chains, they do not have to be in the same order as their private keys in key. If the intermediate certificates are not provided, the peer will not be able to validate the certificate, and the handshake will fail."
214
+ },
215
+ "sigalgs": {
216
+ "type": "string",
217
+ "description": "Colon-separated list of supported signature algorithms. The list can contain digest algorithms (SHA256, MD5 etc.), public key algorithms (RSA-PSS, ECDSA etc.), combination of both (e.g 'RSA+SHA384') or TLS v1.3 scheme names (e.g. rsa_pss_pss_sha512)."
218
+ },
219
+ "ciphers": {
220
+ "type": "string",
221
+ "description": "Cipher suite specification, replacing the default. For more information, see modifying the default cipher suite. Permitted ciphers can be obtained via tls.getCiphers(). Cipher names must be uppercased in order for OpenSSL to accept them."
222
+ },
223
+ "clientCertEngine": {
224
+ "type": "string",
225
+ "description": "Name of an OpenSSL engine which can provide the client certificate."
226
+ },
227
+ "crl": {
228
+ "anyOf": [
229
+ {
230
+ "type": "string"
231
+ },
232
+ {
233
+ "type": "array",
234
+ "items": {
235
+ "type": "string"
236
+ }
237
+ }
238
+ ],
239
+ "description": "PEM formatted CRLs (Certificate Revocation Lists)."
240
+ },
241
+ "dhparam": {
242
+ "type": "string",
243
+ "description": "`'auto'` or custom Diffie-Hellman parameters, required for non-ECDHE perfect forward secrecy. If omitted or invalid, the parameters are silently discarded and DHE ciphers will not be available. ECDHE-based perfect forward secrecy will still be available."
244
+ },
245
+ "ecdhCurve": {
246
+ "type": "string",
247
+ "description": "A string describing a named curve or a colon separated list of curve NIDs or names, for example P-521:P-384:P-256, to use for ECDH key agreement. Set to auto to select the curve automatically. Use crypto.getCurves() to obtain a list of available curve names. On recent releases, openssl ecparam -list_curves will also display the name and description of each available elliptic curve. Default: tls.DEFAULT_ECDH_CURVE."
248
+ },
249
+ "honorCipherOrder": {
250
+ "type": "boolean",
251
+ "description": "Attempt to use the server's cipher suite preferences instead of the client's. When true, causes SSL_OP_CIPHER_SERVER_PREFERENCE to be set in secureOptions"
252
+ },
253
+ "key": {
254
+ "anyOf": [
255
+ {
256
+ "type": "string"
257
+ },
258
+ {
259
+ "type": "array",
260
+ "items": {
261
+ "anyOf": [
262
+ {
263
+ "type": "string"
264
+ },
265
+ {
266
+ "$ref": "#/definitions/KeyObject"
267
+ }
268
+ ]
269
+ }
270
+ }
271
+ ],
272
+ "description": "Private keys in PEM format. PEM allows the option of private keys being encrypted. Encrypted keys will be decrypted with options.passphrase. Multiple keys using different algorithms can be provided either as an array of unencrypted key strings or buffers, or an array of objects in the form {pem: <string|buffer>[, passphrase: <string>]}. The object form can only occur in an array. object.passphrase is optional. Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not."
273
+ },
274
+ "privateKeyEngine": {
275
+ "type": "string",
276
+ "description": "Name of an OpenSSL engine to get private key from. Should be used together with privateKeyIdentifier."
277
+ },
278
+ "privateKeyIdentifier": {
279
+ "type": "string",
280
+ "description": "Identifier of a private key managed by an OpenSSL engine. Should be used together with privateKeyEngine. Should not be set together with key, because both options define a private key in different ways."
281
+ },
282
+ "maxVersion": {
283
+ "$ref": "#/definitions/SecureVersion",
284
+ "description": "Optionally set the maximum TLS version to allow. One of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the `secureProtocol` option, use one or the other.\n**Default:** `'TLSv1.3'`, unless changed using CLI options. Using `--tls-max-v1.2` sets the default to `'TLSv1.2'`. Using `--tls-max-v1.3` sets the default to `'TLSv1.3'`. If multiple of the options are provided, the highest maximum is used."
285
+ },
286
+ "minVersion": {
287
+ "$ref": "#/definitions/SecureVersion",
288
+ "description": "Optionally set the minimum TLS version to allow. One of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the `secureProtocol` option, use one or the other. It is not recommended to use less than TLSv1.2, but it may be required for interoperability.\n**Default:** `'TLSv1.2'`, unless changed using CLI options. Using `--tls-v1.0` sets the default to `'TLSv1'`. Using `--tls-v1.1` sets the default to `'TLSv1.1'`. Using `--tls-min-v1.3` sets the default to 'TLSv1.3'. If multiple of the options are provided, the lowest minimum is used."
289
+ },
290
+ "passphrase": {
291
+ "type": "string",
292
+ "description": "Shared passphrase used for a single private key and/or a PFX."
293
+ },
294
+ "pfx": {
295
+ "anyOf": [
296
+ {
297
+ "type": "string"
298
+ },
299
+ {
300
+ "type": "array",
301
+ "items": {
302
+ "anyOf": [
303
+ {
304
+ "type": "string"
305
+ },
306
+ {
307
+ "$ref": "#/definitions/PxfObject"
308
+ }
309
+ ]
310
+ }
311
+ }
312
+ ],
313
+ "description": "PFX or PKCS12 encoded private key and certificate chain. pfx is an alternative to providing key and cert individually. PFX is usually encrypted, if it is, passphrase will be used to decrypt it. Multiple PFX can be provided either as an array of unencrypted PFX buffers, or an array of objects in the form {buf: <string|buffer>[, passphrase: <string>]}. The object form can only occur in an array. object.passphrase is optional. Encrypted PFX will be decrypted with object.passphrase if provided, or options.passphrase if it is not."
314
+ },
315
+ "secureOptions": {
316
+ "type": "number",
317
+ "description": "Optionally affect the OpenSSL protocol behavior, which is not usually necessary. This should be used carefully if at all! Value is a numeric bitmask of the SSL_OP_* options from OpenSSL Options"
318
+ },
319
+ "secureProtocol": {
320
+ "type": "string",
321
+ "description": "Legacy mechanism to select the TLS protocol version to use, it does not support independent control of the minimum and maximum version, and does not support limiting the protocol to TLSv1.3. Use minVersion and maxVersion instead. The possible values are listed as SSL_METHODS, use the function names as strings. For example, use 'TLSv1_1_method' to force TLS version 1.1, or 'TLS_method' to allow any TLS protocol version up to TLSv1.3. It is not recommended to use TLS versions less than 1.2, but it may be required for interoperability. Default: none, see minVersion."
322
+ },
323
+ "sessionIdContext": {
324
+ "type": "string",
325
+ "description": "Opaque identifier used by servers to ensure session state is not shared between applications. Unused by clients."
326
+ },
327
+ "ticketKeys": {
328
+ "not": {},
329
+ "description": "48-bytes of cryptographically strong pseudo-random data. See Session Resumption for more information."
330
+ },
331
+ "sessionTimeout": {
332
+ "type": "number",
333
+ "description": "The number of seconds after which a TLS session created by the server will no longer be resumable. See Session Resumption for more information. Default: 300."
334
+ },
335
+ "handshakeTimeout": {
336
+ "type": "number",
337
+ "description": "Abort the connection if the SSL/TLS handshake does not finish in the specified number of milliseconds. A 'tlsClientError' is emitted on the tls.Server object whenever a handshake times out. Default: 120000 (120 seconds)."
338
+ },
339
+ "pskIdentityHint": {
340
+ "type": "string",
341
+ "description": "hint to send to a client to help with selecting the identity during TLS-PSK negotiation. Will be ignored in TLS 1.3. Upon failing to set pskIdentityHint `tlsClientError` will be emitted with `ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED` code."
342
+ },
343
+ "secureContext": {
344
+ "$ref": "#/definitions/SecureContext",
345
+ "description": "An optional TLS context object from tls.createSecureContext()"
346
+ },
347
+ "enableTrace": {
348
+ "type": "boolean",
349
+ "description": "When enabled, TLS packet trace information is written to `stderr`. This can be used to debug TLS connection problems.",
350
+ "default": false
351
+ },
352
+ "requestCert": {
353
+ "type": "boolean",
354
+ "description": "If true the server will request a certificate from clients that connect and attempt to verify that certificate. Defaults to false."
355
+ },
356
+ "ALPNProtocols": {
357
+ "anyOf": [
358
+ {
359
+ "type": "array",
360
+ "items": {
361
+ "type": "string"
362
+ }
363
+ },
364
+ {
365
+ "type": "array",
366
+ "items": {
367
+ "not": {}
368
+ }
369
+ }
370
+ ],
371
+ "description": "An array of strings or a Buffer naming possible ALPN protocols. (Protocols should be ordered by their priority.)"
372
+ },
373
+ "SNICallback": {
374
+ "not": {},
375
+ "description": "SNICallback(servername, cb) <Function> A function that will be called if the client supports SNI TLS extension. Two arguments will be passed when called: servername and cb. SNICallback should invoke cb(null, ctx), where ctx is a SecureContext instance. (tls.createSecureContext(...) can be used to get a proper SecureContext.) If SNICallback wasn't provided the default callback with high-level API will be used (see below)."
376
+ },
377
+ "rejectUnauthorized": {
378
+ "type": "boolean",
379
+ "description": "If true the server will reject any connection which is not authorized with the list of supplied CAs. This option only has an effect if requestCert is true.",
380
+ "default": true
381
+ },
382
+ "allowHalfOpen": {
383
+ "type": "boolean",
384
+ "description": "Indicates whether half-opened TCP connections are allowed.",
385
+ "default": false
386
+ },
387
+ "pauseOnConnect": {
388
+ "type": "boolean",
389
+ "description": "Indicates whether the socket should be paused on incoming connections.",
390
+ "default": false
391
+ },
392
+ "noDelay": {
393
+ "type": "boolean",
394
+ "description": "If set to `true`, it disables the use of Nagle's algorithm immediately after a new incoming connection is received.",
395
+ "default": false
396
+ },
397
+ "keepAlive": {
398
+ "type": "boolean",
399
+ "description": "If set to `true`, it enables keep-alive functionality on the socket immediately after a new incoming connection is received, similarly on what is done in `socket.setKeepAlive([enable][, initialDelay])`.",
400
+ "default": false
401
+ },
402
+ "keepAliveInitialDelay": {
403
+ "type": "number",
404
+ "description": "If set to a positive number, it sets the initial delay before the first keepalive probe is sent on an idle socket.",
405
+ "default": 0
406
+ },
407
+ "highWaterMark": {
408
+ "type": "number",
409
+ "description": "Optionally overrides all `net.Socket`s' `readableHighWaterMark` and `writableHighWaterMark`.",
410
+ "default": "See [stream.getDefaultHighWaterMark()](https://nodejs.org/docs/latest-v20.x/api/stream.html#streamgetdefaulthighwatermarkobjectmode)."
411
+ },
412
+ "requestTimeout": {
413
+ "type": "number",
414
+ "description": "Sets the timeout value in milliseconds for receiving the entire request from the client.",
415
+ "default": 300000
416
+ },
417
+ "joinDuplicateHeaders": {
418
+ "type": "boolean",
419
+ "description": "It joins the field line values of multiple headers in a request with `, ` instead of discarding the duplicates.",
420
+ "default": false
421
+ },
422
+ "keepAliveTimeout": {
423
+ "type": "number",
424
+ "description": "The number of milliseconds of inactivity a server needs to wait for additional incoming data, after it has finished writing the last response, before a socket will be destroyed.",
425
+ "default": 5000
426
+ },
427
+ "connectionsCheckingInterval": {
428
+ "type": "number",
429
+ "description": "Sets the interval value in milliseconds to check for request and headers timeout in incomplete requests.",
430
+ "default": 30000
431
+ },
432
+ "headersTimeout": {
433
+ "type": "number",
434
+ "description": "Sets the timeout value in milliseconds for receiving the complete HTTP headers from the client. See {@link Server.headersTimeout } for more information.",
435
+ "default": 60000
436
+ },
437
+ "insecureHTTPParser": {
438
+ "type": "boolean",
439
+ "description": "Use an insecure HTTP parser that accepts invalid HTTP headers when `true`. Using the insecure parser should be avoided. See --insecure-http-parser for more information.",
440
+ "default": false
441
+ },
442
+ "maxHeaderSize": {
443
+ "type": "number",
444
+ "description": "Optionally overrides the value of `--max-http-header-size` for requests received by this server, i.e. the maximum length of request headers in bytes.",
445
+ "default": 16384
446
+ },
447
+ "requireHostHeader": {
448
+ "type": "boolean",
449
+ "description": "If set to `true`, it forces the server to respond with a 400 (Bad Request) status code to any HTTP/1.1 request message that lacks a Host header (as mandated by the specification).",
450
+ "default": true
451
+ },
452
+ "uniqueHeaders": {
453
+ "type": "array",
454
+ "items": {
455
+ "anyOf": [
456
+ {
457
+ "type": "string"
458
+ },
459
+ {
460
+ "type": "array",
461
+ "items": {
462
+ "type": "string"
463
+ }
464
+ }
465
+ ]
466
+ },
467
+ "description": "A list of response headers that should be sent only once. If the header's value is an array, the items will be joined using `; `."
468
+ },
469
+ "rejectNonStandardBodyWrites": {
470
+ "type": "boolean",
471
+ "description": "If set to `true`, an error is thrown when writing to an HTTP response which does not have a body.",
472
+ "default": false
473
+ }
474
+ },
475
+ "additionalProperties": false,
476
+ "description": "HTTPS server configuration settings."
477
+ },
478
+ "KeyObject": {
479
+ "type": "object",
480
+ "properties": {
481
+ "pem": {
482
+ "type": "string",
483
+ "description": "Private keys in PEM format."
484
+ },
485
+ "passphrase": {
486
+ "type": "string",
487
+ "description": "Optional passphrase."
488
+ }
489
+ },
490
+ "required": [
491
+ "pem"
492
+ ],
493
+ "additionalProperties": false
494
+ },
495
+ "SecureVersion": {
496
+ "type": "string",
497
+ "enum": [
498
+ "TLSv1.3",
499
+ "TLSv1.2",
500
+ "TLSv1.1",
501
+ "TLSv1"
502
+ ]
503
+ },
504
+ "PxfObject": {
505
+ "type": "object",
506
+ "properties": {
507
+ "buf": {
508
+ "type": "string",
509
+ "description": "PFX or PKCS12 encoded private key and certificate chain."
510
+ },
511
+ "passphrase": {
512
+ "type": "string",
513
+ "description": "Optional passphrase."
514
+ }
515
+ },
516
+ "required": [
517
+ "buf"
518
+ ],
519
+ "additionalProperties": false
520
+ },
521
+ "SecureContext": {
522
+ "type": "object",
523
+ "properties": {
524
+ "context": {}
525
+ },
526
+ "required": [
527
+ "context"
528
+ ],
529
+ "additionalProperties": false
530
+ },
531
+ "ShorthandRoute": {
532
+ "anyOf": [
533
+ {
534
+ "$ref": "#/definitions/ShorthandRenderedRoute"
535
+ },
536
+ {
537
+ "$ref": "#/definitions/ShorthandBootstrapRoute"
538
+ },
539
+ {
540
+ "$ref": "#/definitions/StaticRoute"
541
+ },
542
+ {
543
+ "$ref": "#/definitions/RedirectRoute"
544
+ },
545
+ {
546
+ "$ref": "#/definitions/ProxyRoute"
547
+ }
548
+ ],
549
+ "description": "Route as specified in `AppConfig` (`cloudpack.config.json`)."
550
+ },
551
+ "ShorthandRenderedRoute": {
552
+ "type": "object",
553
+ "properties": {
554
+ "match": {
555
+ "anyOf": [
556
+ {
557
+ "$ref": "#/definitions/RouteMatch"
558
+ },
559
+ {
560
+ "type": "array",
561
+ "items": {
562
+ "$ref": "#/definitions/RouteMatch"
563
+ }
564
+ }
565
+ ],
566
+ "description": "The URL path to match. Paths should usually start with a slash, e.g. `'/my-route'`. You can also use wildcards (`*`), e.g. `'/my-route/*'` to match all paths starting with `'/my-route'`.\n\nSee the [Express docs](https://expressjs.com/en/guide/routing.html#route-paths) for the full supported routing syntax.\n\nIf you need a route to match on a specific domain, you can pass an object (path, domain) in where the domain is a string which can have wildcards (`*`). e.g. `'word.*'` will match `word.com`, `word.net`, etc.\n\nUse an array to handle multiple paths with the same route handler."
567
+ },
568
+ "renderScript": {
569
+ "type": "string",
570
+ "description": "Path to a .js or .html file (relative to the app path) for rendering the route.\n\nIf a .js file, it must export a default function implementing `RenderFunction` from `@ms-cloudpack/common-types`.",
571
+ "deprecated": "Use `serverEntry` instead. (Please talk to the team if you have a scenario where\nbundling the script causes a problem.)"
572
+ },
573
+ "exportEntry": {
574
+ "type": "string",
575
+ "description": "The key in the exports map which represents the entry point app script for this route.",
576
+ "deprecated": "Use `entry` instead."
577
+ },
578
+ "entry": {
579
+ "anyOf": [
580
+ {
581
+ "type": "string"
582
+ },
583
+ {
584
+ "type": "array",
585
+ "items": {
586
+ "type": "string"
587
+ }
588
+ }
589
+ ],
590
+ "description": "Additional source file path(s) to bundle and include in the HTML. This **overwrites** any original exports map for the package.\n\nUsually this should be an actual source path, though it could also be an exports map key if necessary."
591
+ },
592
+ "serverEntry": {
593
+ "type": "string",
594
+ "description": "Path to a TS, JS, or HTML file (relative to the app path) for rendering the route on the server. (Also supports export map keys.) If a JS or TS file, it will be bundled before rendering.\n\nIf JS or TS, it must export a default function implementing `RenderRouteFunction` defined in `@ms-cloudpack/app-server`."
595
+ }
596
+ },
597
+ "additionalProperties": false,
598
+ "required": [
599
+ "match"
600
+ ],
601
+ "description": "A server-rendered route with optional shorthand `entry` info (as specified in `AppConfig`/`cloudpack.config.json`). The route is rendered by a custom server script in Cloudpack."
602
+ },
603
+ "RouteMatch": {
604
+ "anyOf": [
605
+ {
606
+ "type": "string"
607
+ },
608
+ {
609
+ "type": "object",
610
+ "properties": {
611
+ "path": {
612
+ "type": "string"
613
+ },
614
+ "domain": {
615
+ "type": "string"
616
+ }
617
+ },
618
+ "required": [
619
+ "path"
620
+ ],
621
+ "additionalProperties": false
622
+ }
623
+ ],
624
+ "description": "A route match can be a string path or an object with a path and domain."
625
+ },
626
+ "ShorthandBootstrapRoute": {
627
+ "type": "object",
628
+ "properties": {
629
+ "entry": {
630
+ "anyOf": [
631
+ {
632
+ "type": "string"
633
+ },
634
+ {
635
+ "type": "array",
636
+ "items": {
637
+ "type": "string"
638
+ }
639
+ }
640
+ ],
641
+ "description": "Additional source file path(s) to bundle and include in the HTML. This **overwrites** any original exports map for the package.\n\nUsually this should be an actual source path, though it could also be an exports map key if necessary."
642
+ },
643
+ "serverEntry": {
644
+ "type": "string",
645
+ "description": "Path to a TS, JS, or HTML file (relative to the app path) for rendering the route on the server. (Also supports export map keys.) If a JS or TS file, it will be bundled before rendering.\n\nIf JS or TS, it must export a default function implementing `RenderRouteFunction` defined in `@ms-cloudpack/app-server`."
646
+ },
647
+ "exportEntry": {
648
+ "type": "string",
649
+ "description": "The key in the exports map which represents the entry point app script for this route.",
650
+ "deprecated": "Use `entry` instead."
651
+ },
652
+ "match": {
653
+ "anyOf": [
654
+ {
655
+ "$ref": "#/definitions/RouteMatch"
656
+ },
657
+ {
658
+ "type": "array",
659
+ "items": {
660
+ "$ref": "#/definitions/RouteMatch"
661
+ }
662
+ }
663
+ ],
664
+ "description": "The URL path to match. Paths should usually start with a slash, e.g. `'/my-route'`. You can also use wildcards (`*`), e.g. `'/my-route/*'` to match all paths starting with `'/my-route'`.\n\nSee the [Express docs](https://expressjs.com/en/guide/routing.html#route-paths) for the full supported routing syntax.\n\nIf you need a route to match on a specific domain, you can pass an object (path, domain) in where the domain is a string which can have wildcards (`*`). e.g. `'word.*'` will match `word.com`, `word.net`, etc.\n\nUse an array to handle multiple paths with the same route handler."
665
+ },
666
+ "type": {
667
+ "type": "string",
668
+ "const": "bootstrap"
669
+ }
670
+ },
671
+ "required": [
672
+ "match",
673
+ "type"
674
+ ],
675
+ "additionalProperties": false,
676
+ "description": "A route that serves a bootstrap script."
677
+ },
678
+ "StaticRoute": {
679
+ "type": "object",
680
+ "properties": {
681
+ "match": {
682
+ "anyOf": [
683
+ {
684
+ "$ref": "#/definitions/RouteMatch"
685
+ },
686
+ {
687
+ "type": "array",
688
+ "items": {
689
+ "$ref": "#/definitions/RouteMatch"
690
+ }
691
+ }
692
+ ],
693
+ "description": "The URL path to match. Paths should usually start with a slash, e.g. `'/my-route'`. You can also use wildcards (`*`), e.g. `'/my-route/*'` to match all paths starting with `'/my-route'`.\n\nSee the [Express docs](https://expressjs.com/en/guide/routing.html#route-paths) for the full supported routing syntax.\n\nIf you need a route to match on a specific domain, you can pass an object (path, domain) in where the domain is a string which can have wildcards (`*`). e.g. `'word.*'` will match `word.com`, `word.net`, etc.\n\nUse an array to handle multiple paths with the same route handler."
694
+ },
695
+ "staticPath": {
696
+ "type": "string",
697
+ "description": "The path relative to the app root to static assets."
698
+ }
699
+ },
700
+ "required": [
701
+ "match",
702
+ "staticPath"
703
+ ],
704
+ "additionalProperties": false,
705
+ "description": "A route with a staticPath property serves static files from the specified path."
706
+ },
707
+ "RedirectRoute": {
708
+ "type": "object",
709
+ "properties": {
710
+ "match": {
711
+ "anyOf": [
712
+ {
713
+ "$ref": "#/definitions/RouteMatch"
714
+ },
715
+ {
716
+ "type": "array",
717
+ "items": {
718
+ "$ref": "#/definitions/RouteMatch"
719
+ }
720
+ }
721
+ ],
722
+ "description": "The URL path to match. Paths should usually start with a slash, e.g. `'/my-route'`. You can also use wildcards (`*`), e.g. `'/my-route/*'` to match all paths starting with `'/my-route'`.\n\nSee the [Express docs](https://expressjs.com/en/guide/routing.html#route-paths) for the full supported routing syntax.\n\nIf you need a route to match on a specific domain, you can pass an object (path, domain) in where the domain is a string which can have wildcards (`*`). e.g. `'word.*'` will match `word.com`, `word.net`, etc.\n\nUse an array to handle multiple paths with the same route handler."
723
+ },
724
+ "redirectTo": {
725
+ "type": "string",
726
+ "description": "The url to redirect to."
727
+ }
728
+ },
729
+ "required": [
730
+ "match",
731
+ "redirectTo"
732
+ ],
733
+ "additionalProperties": false,
734
+ "description": "A route that redirects to another url."
735
+ },
736
+ "ProxyRoute": {
737
+ "type": "object",
738
+ "properties": {
739
+ "match": {
740
+ "anyOf": [
741
+ {
742
+ "$ref": "#/definitions/RouteMatch"
743
+ },
744
+ {
745
+ "type": "array",
746
+ "items": {
747
+ "$ref": "#/definitions/RouteMatch"
748
+ }
749
+ }
750
+ ],
751
+ "description": "The URL path to match. Paths should usually start with a slash, e.g. `'/my-route'`. You can also use wildcards (`*`), e.g. `'/my-route/*'` to match all paths starting with `'/my-route'`.\n\nSee the [Express docs](https://expressjs.com/en/guide/routing.html#route-paths) for the full supported routing syntax.\n\nIf you need a route to match on a specific domain, you can pass an object (path, domain) in where the domain is a string which can have wildcards (`*`). e.g. `'word.*'` will match `word.com`, `word.net`, etc.\n\nUse an array to handle multiple paths with the same route handler."
752
+ },
753
+ "proxyTo": {
754
+ "type": "string",
755
+ "description": "The target host to proxy to. (protocol + host)."
756
+ },
757
+ "changeOrigin": {
758
+ "type": "boolean",
759
+ "description": "For virtual hosted sites."
760
+ },
761
+ "pathRewrite": {
762
+ "type": "object",
763
+ "additionalProperties": {
764
+ "type": "string"
765
+ },
766
+ "description": "Rewrite target's url path. Object-keys will be used as RegExp to match paths."
767
+ }
768
+ },
769
+ "required": [
770
+ "match",
771
+ "proxyTo"
772
+ ],
773
+ "additionalProperties": false,
774
+ "description": "A route that proxies requests to another server. This is handled by https://github.com/chimurai/http-proxy-middleware."
775
+ },
776
+ "TelemetryConfig": {
777
+ "type": "object",
778
+ "properties": {
779
+ "connectionString": {
780
+ "type": "string",
781
+ "description": "Application Insights connection string."
782
+ },
783
+ "pageLoadTimePerformanceEntry": {
784
+ "$ref": "#/definitions/PageLoadTimePerformanceEntry",
785
+ "description": "Cloudpack will query this performance entry to determine the page load time."
786
+ }
787
+ },
788
+ "additionalProperties": false
789
+ },
790
+ "PageLoadTimePerformanceEntry": {
791
+ "type": "object",
792
+ "properties": {
793
+ "name": {
794
+ "type": "string",
795
+ "description": "The name of the performance mark/measure to query."
796
+ },
797
+ "type": {
798
+ "type": "string",
799
+ "enum": [
800
+ "mark",
801
+ "measure"
802
+ ],
803
+ "description": "The type of performance entry to query.",
804
+ "default": "mark"
805
+ },
806
+ "timeout": {
807
+ "type": "number",
808
+ "description": "The maximum time in milliseconds to wait for the performance mark to be set.",
809
+ "default": "5 mins"
810
+ }
811
+ },
812
+ "required": [
813
+ "name"
814
+ ],
815
+ "additionalProperties": false,
816
+ "description": "Client and server side object for Cloudpack to detect app-specific page load time entry"
817
+ },
818
+ "Features": {
819
+ "type": "object",
820
+ "properties": {
821
+ "autoUpdateEntries": {
822
+ "type": "boolean"
823
+ },
824
+ "disableSourceMaps": {
825
+ "type": "boolean"
826
+ },
827
+ "enableCloudHosted": {
828
+ "type": "boolean"
829
+ },
830
+ "enableModuleWorkers": {
831
+ "type": "boolean"
832
+ },
833
+ "enableParcelWatcher": {
834
+ "type": "boolean"
835
+ },
836
+ "enableRemoteCacheDownloads": {
837
+ "type": "boolean"
838
+ },
839
+ "enableSSR": {
840
+ "type": "boolean"
841
+ },
842
+ "enableWatcherInFork": {
843
+ "type": "boolean"
844
+ },
845
+ "enqueueDependencies": {
846
+ "type": "boolean"
847
+ },
848
+ "evaluateDynamicImports": {
849
+ "type": "boolean"
850
+ },
851
+ "optimizeDependencies": {
852
+ "type": "boolean"
853
+ },
854
+ "relativeImportMapPaths": {
855
+ "type": "boolean"
856
+ },
857
+ "removeUnusedExports": {
858
+ "type": "boolean"
859
+ },
860
+ "resolveWebExtensions": {
861
+ "type": "boolean"
862
+ },
863
+ "syncBundles": {
864
+ "type": "boolean"
865
+ },
866
+ "syncInternalPackages": {
867
+ "type": "boolean"
868
+ },
869
+ "useSingleWebServer": {
870
+ "type": "boolean"
871
+ },
872
+ "verifyExports": {
873
+ "type": "boolean"
874
+ }
875
+ },
876
+ "additionalProperties": false,
877
+ "description": "Represents all features that can be enabled or disabled for Cloudpack."
878
+ },
879
+ "PackageSettings": {
880
+ "type": "object",
881
+ "properties": {
882
+ "match": {
883
+ "anyOf": [
884
+ {
885
+ "$ref": "#/definitions/PackageSettingsMatch"
886
+ },
887
+ {
888
+ "type": "array",
889
+ "items": {
890
+ "$ref": "#/definitions/PackageSettingsMatch"
891
+ }
892
+ }
893
+ ],
894
+ "description": "Which package(s) the settings should be applied to. A string is a shorthand for matching the name with any version (`*` to match any name). An array allows multiple matches to be specified."
895
+ },
896
+ "includedDependencies": {
897
+ "type": "array",
898
+ "items": {
899
+ "type": "string"
900
+ },
901
+ "description": "The dependencies which should be included when computing the import map. This is primarily used when devDependencies are needed by the app. This often happens when a library has a demo app which relies on devDependencies.\n\nAccepts `$devDependencies` as a special value to include all devDependencies."
902
+ },
903
+ "excludedDependencies": {
904
+ "type": "array",
905
+ "items": {
906
+ "type": "string"
907
+ },
908
+ "description": "The dependencies which should be ignored by Cloudpack verbs. For example, if \"react-native\" is a dependency which should not be included in the import map or evaluated during `init`, it can be listed here to ignore it.\n\nAccepts `$peerDependencies` as a special value to exclude all peerDependencies."
909
+ },
910
+ "inlinedDependencies": {
911
+ "type": "array",
912
+ "items": {
913
+ "type": "string"
914
+ },
915
+ "description": "Dependencies which should be inlined in the library bundled by Cloudpack. This is useful for libraries which are small and don't need to be loaded separately, have issues being resolved by the browser, or provide reusable scss files."
916
+ },
917
+ "exports": {
918
+ "$ref": "#/definitions/PackageJsonExports",
919
+ "description": "Use this exports map instead of the original entry points from package.json. (Any Cloudpack- generated exports will be merged.) This is useful if a library's exports map is missing or broken, or to skip bundling entries which aren't needed at runtime.\n\nGenerally, keys should be relative import paths starting with ./ (use . for the top-level import). Other standard exports map syntax (such as conditions) is also supported. For example: ```json { \".\": \"./lib/index.js\", \"./foo\": \"./lib/foo.js\", } ```"
920
+ },
921
+ "unsafeCjsExportNames": {
922
+ "anyOf": [
923
+ {
924
+ "type": "object",
925
+ "additionalProperties": {
926
+ "type": "array",
927
+ "items": {
928
+ "type": "string"
929
+ }
930
+ }
931
+ },
932
+ {
933
+ "type": "string",
934
+ "const": "types"
935
+ }
936
+ ],
937
+ "description": "If specified, Cloudpack will not attempt to auto-generate ESM stubs for the package, but will instead use the array of named exports you provide (per entry key). Any keys not included will have a default export, but no named exports (so `{}` means that all entries should have only a default export). An entry key is the output file path, relative to `outputPath` (with forward slashes and leading `./`) and *without* the extension (unless it's non-JS).\n\nYou can also use the special value `'types'` to generate stubs based on the TypeScript declaration file if it exists. This will generate named exports for all types in the declaration file and relative imported files.\n\nNote: This is an escape hatch and should be used with caution, as it can lead to unexpected behavior."
938
+ },
939
+ "bundler": {
940
+ "type": "string",
941
+ "description": "Forces the package to be bundled using a specific bundler."
942
+ },
943
+ "bundlerType": {
944
+ "type": "string",
945
+ "deprecated": "Use `bundler`.\n\nThis should be removed once repo configs are updated to use `bundler`."
946
+ },
947
+ "bundlerOptions": {
948
+ "type": "object",
949
+ "additionalProperties": {},
950
+ "description": "Any bundler-specific options to be merged with the calculated bundler options. `bundler` is also required if this is specified.\n\nThis is an escape hatch which is generally not recommended, since it locks the package to a specific bundler implementation. It's better to use built-in or custom bundler capabilities.\n\nWARNING: When merging package settings, `bundlerOptions` will be **overwritten** with the last specified value."
951
+ },
952
+ "inputPaths": {
953
+ "type": "array",
954
+ "items": {
955
+ "type": "string"
956
+ },
957
+ "description": "Paths used for file monitoring and input hashing. Supports glob matching. Defaults are under `@ms-cloudpack/path-utilities` in `sourceFilesGlobs`. Use `...` to include the default paths.\n\nFor input hashing, both positive and negative globs are considered. For file watching, behavior depends on the watcher backend:\n- Parcel watcher (default): only negative globs are respected for ignoring files\n- Chokidar watcher: both positive and negative globs are supported"
958
+ },
959
+ "ignoreMissingExports": {
960
+ "anyOf": [
961
+ {
962
+ "type": "boolean"
963
+ },
964
+ {
965
+ "type": "object",
966
+ "additionalProperties": {
967
+ "type": "array",
968
+ "items": {
969
+ "type": "string"
970
+ }
971
+ }
972
+ }
973
+ ],
974
+ "description": "Controls the behavior of the `verifyExports` feature when checking consumed exports from this package:\n- If true, don't check this package's exports at all.\n- If an object, this is a mapping from package import paths to export names to ignore. Examples: - To ignore top-level exports: `{ \".\": [\"badName\"] }` - To ignore exports from another path: `{ \"./lib/foo\": [\"badName\"] }`"
975
+ },
976
+ "dynamicImports": {
977
+ "type": "array",
978
+ "items": {
979
+ "type": "string"
980
+ },
981
+ "description": "Only relevant for packages bundled with rollup: globs of files that include dynamic (async) imports with non-literal paths, to be processed by `@rollup/plugin-dynamic-import-vars` (subject to that plugin's [limitations](https://www.npmjs.com/package/\\@rollup/plugin-dynamic-import-vars#limitations)). Files matching `*.dynamic.*` are automatically included.\n\nThis is not needed for ori/esbuild and webpack because they should handle these types of imports automatically."
982
+ },
983
+ "ignoredBundlerWarnings": {
984
+ "type": "array",
985
+ "items": {
986
+ "type": "string"
987
+ },
988
+ "description": "Ignore these warning messages from the bundler (partial string matches). This is intended for non-actionable messages from external dependencies which can't easily be fixed, to avoid confusing users."
989
+ },
990
+ "link": {
991
+ "$ref": "#/definitions/LinkOptions",
992
+ "description": "Settings to control how the package is linked in the resolve map."
993
+ },
994
+ "bundlerCapabilities": {
995
+ "$ref": "#/definitions/BundlerCapabilitiesOptions",
996
+ "description": "Setting to control the bundler capabilities for this package. This is used to enable or disable specific bundler capabilities."
997
+ }
998
+ },
999
+ "required": [
1000
+ "match"
1001
+ ],
1002
+ "additionalProperties": false,
1003
+ "description": "Settings overrides for bundling a package (or multiple packages, depending on `match`)."
1004
+ },
1005
+ "PackageSettingsMatch": {
1006
+ "anyOf": [
1007
+ {
1008
+ "type": "string"
1009
+ },
1010
+ {
1011
+ "$ref": "#/definitions/PackageSettingsMatchObject"
1012
+ }
1013
+ ],
1014
+ "description": "Which package(s) the settings should be applied to. A string is a shorthand for matching the name with any version (`*` to match any name)."
1015
+ },
1016
+ "PackageSettingsMatchObject": {
1017
+ "type": "object",
1018
+ "properties": {
1019
+ "name": {
1020
+ "type": "string",
1021
+ "description": "Name of the package. Can use a trailing wildcard (e.g. `@scope/*`). `*` to match any name.\n\nTo negate a match, use `!` as the first character (e.g. `!@scope/foo` or `!@scope/*`)."
1022
+ },
1023
+ "version": {
1024
+ "type": "string",
1025
+ "description": "Version of the package. Unspecified matches any version.\n\nNote that if the package version is a prerelease, it will only match `*` or ranges that explicitly include prereleases. For example, `^1.0.0` will not match `1.0.1-beta.0`."
1026
+ }
1027
+ },
1028
+ "required": [
1029
+ "name"
1030
+ ],
1031
+ "additionalProperties": false
1032
+ },
1033
+ "PackageJsonExports": {
1034
+ "anyOf": [
1035
+ {
1036
+ "$ref": "#/definitions/PackageJsonExportsValue"
1037
+ },
1038
+ {
1039
+ "$ref": "#/definitions/PackageJsonExportsObject"
1040
+ },
1041
+ {
1042
+ "type": "array",
1043
+ "items": {
1044
+ "$ref": "#/definitions/PackageJsonExports"
1045
+ }
1046
+ }
1047
+ ],
1048
+ "description": "Entry points of a package, optionally with conditions and subpath exports. Used as `PackageJson.exports`."
1049
+ },
1050
+ "PackageJsonExportsValue": {
1051
+ "anyOf": [
1052
+ {
1053
+ "type": "null"
1054
+ },
1055
+ {
1056
+ "type": "string"
1057
+ },
1058
+ {
1059
+ "type": "object",
1060
+ "properties": {
1061
+ "browser": {
1062
+ "$ref": "#/definitions/PackageJsonExportsValue"
1063
+ },
1064
+ "default": {
1065
+ "$ref": "#/definitions/PackageJsonExportsValue"
1066
+ },
1067
+ "deno": {
1068
+ "$ref": "#/definitions/PackageJsonExportsValue"
1069
+ },
1070
+ "electron": {
1071
+ "$ref": "#/definitions/PackageJsonExportsValue"
1072
+ },
1073
+ "import": {
1074
+ "$ref": "#/definitions/PackageJsonExportsValue"
1075
+ },
1076
+ "module": {
1077
+ "$ref": "#/definitions/PackageJsonExportsValue"
1078
+ },
1079
+ "node-addons": {
1080
+ "$ref": "#/definitions/PackageJsonExportsValue"
1081
+ },
1082
+ "node": {
1083
+ "$ref": "#/definitions/PackageJsonExportsValue"
1084
+ },
1085
+ "react-native": {
1086
+ "$ref": "#/definitions/PackageJsonExportsValue"
1087
+ },
1088
+ "require": {
1089
+ "$ref": "#/definitions/PackageJsonExportsValue"
1090
+ }
1091
+ },
1092
+ "additionalProperties": {
1093
+ "$ref": "#/definitions/PackageJsonExportsValue"
1094
+ }
1095
+ },
1096
+ {
1097
+ "type": "array",
1098
+ "items": {
1099
+ "$ref": "#/definitions/PackageJsonExportsValue"
1100
+ }
1101
+ }
1102
+ ],
1103
+ "description": "The value of an `PackageJson.exports` object key. Note at the root of the object, keys can be represented either by a condition, or a `string` to provide import paths (such as \"./foo\"). At subsequent levels within the object, only conditions (string which don't start with \".\") can be used as keys."
1104
+ },
1105
+ "PackageJsonExportsObject": {
1106
+ "type": "object",
1107
+ "additionalProperties": {
1108
+ "$ref": "#/definitions/PackageJsonExportsValue"
1109
+ },
1110
+ "description": "Definition of the root exports object. Keys can be either conditions or import paths."
1111
+ },
1112
+ "LinkOptions": {
1113
+ "type": "object",
1114
+ "properties": {
1115
+ "duplicatedDependencyBehavior": {
1116
+ "type": "string",
1117
+ "enum": [
1118
+ "force-host-version",
1119
+ "allow-duplication",
1120
+ "force-remote-version"
1121
+ ],
1122
+ "description": "Controls the behavior of duplicated dependencies in the resolve map when running `cloudpack link`.\n\n- `allow-duplication` (default): allow multiple versions of the same package to exist in the resolve map to satisfy semver.\n- `force-host-version`: the package will be deduplicated to the version of the host package, ignoring semver requirements.\n- `force-remote-version`: the package will be deduplicated to the version of the remote package, ignoring semver requirements.\n\nNote: These settings only apply when the resolve strategy is set to the default `dedupe`."
1123
+ }
1124
+ },
1125
+ "additionalProperties": false,
1126
+ "description": "Options for when a package is linked in the resolve map."
1127
+ },
1128
+ "BundlerCapabilitiesOptions": {
1129
+ "type": "object",
1130
+ "additionalProperties": {
1131
+ "type": [
1132
+ "object",
1133
+ "boolean"
1134
+ ]
1135
+ },
1136
+ "properties": {
1137
+ "asset-inline": {
1138
+ "anyOf": [
1139
+ {
1140
+ "type": "object",
1141
+ "properties": {
1142
+ "extensions": {
1143
+ "type": "array",
1144
+ "items": {
1145
+ "type": "string"
1146
+ }
1147
+ }
1148
+ },
1149
+ "required": [
1150
+ "extensions"
1151
+ ],
1152
+ "additionalProperties": false,
1153
+ "description": "Inlines assets into the bundle. Options: List of file extensions to inline. Do not include the leading dot."
1154
+ },
1155
+ {
1156
+ "type": "boolean"
1157
+ }
1158
+ ]
1159
+ },
1160
+ "density": {
1161
+ "type": "boolean"
1162
+ },
1163
+ "alias": {
1164
+ "anyOf": [
1165
+ {
1166
+ "type": "object",
1167
+ "additionalProperties": {
1168
+ "type": "string"
1169
+ },
1170
+ "description": "Adds aliases to externalized packages."
1171
+ },
1172
+ {
1173
+ "type": "boolean"
1174
+ }
1175
+ ]
1176
+ },
1177
+ "resolve-web-extensions": {
1178
+ "anyOf": [
1179
+ {
1180
+ "type": "boolean",
1181
+ "description": "Enables React Native type resolution of .web.ts extensions. Options: object is empty because it's just an indicator. No options are needed."
1182
+ },
1183
+ {
1184
+ "type": "boolean"
1185
+ }
1186
+ ]
1187
+ }
1188
+ },
1189
+ "description": "Options used in `PackageSettings` to configure or disable bundler capabilities.\n- Key: capability name, either internal (Cloudpack-provided) or external (as specified in `AppConfig.bundlerCapabilitiesRegistry`)\n- Value: options object to configure the capability, or false to disable it."
1190
+ },
1191
+ "RemoteCacheConfig": {
1192
+ "type": "object",
1193
+ "properties": {
1194
+ "storageAccount": {
1195
+ "type": "string",
1196
+ "description": "The name of the Azure Blob Storage account."
1197
+ },
1198
+ "container": {
1199
+ "type": "string",
1200
+ "description": "The name of the container to use for the remote cache. Container must already exist."
1201
+ },
1202
+ "tenantId": {
1203
+ "type": "string",
1204
+ "description": "The Microsoft Entra tenant (directory) ID. This will ensure that only users from this tenant can access the remote cache."
1205
+ }
1206
+ },
1207
+ "required": [
1208
+ "storageAccount",
1209
+ "container"
1210
+ ],
1211
+ "additionalProperties": false,
1212
+ "description": "Azure Blob Storage configuration for remote cache - uploading and downloading packages via `cloudpack sync`."
1213
+ },
1214
+ "DefineFlags": {
1215
+ "type": "object",
1216
+ "additionalProperties": {
1217
+ "anyOf": [
1218
+ {
1219
+ "type": "string"
1220
+ },
1221
+ {
1222
+ "type": "number"
1223
+ },
1224
+ {
1225
+ "type": "boolean"
1226
+ },
1227
+ {
1228
+ "type": "array",
1229
+ "items": {
1230
+ "type": [
1231
+ "string",
1232
+ "number",
1233
+ "boolean"
1234
+ ]
1235
+ }
1236
+ }
1237
+ ]
1238
+ },
1239
+ "description": "DefineFlags is an interface that represents a collection of global variables that will be defined on the window object. Each define flag is represented by a key-value pair"
1240
+ }
1241
+ }
1242
+ }