@varde-flyt/vfac 0.17.0 → 0.18.1

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
@@ -253,6 +253,12 @@ file that turns the setting off. A released connection is torn down by its
253
253
  provider afterwards, and the providing resource can only be deleted once that
254
254
  teardown is done.
255
255
 
256
+ **Two resources connected to each other hold each other**: each is the other's
257
+ provider, so both deletes are refused. Break the loop at one link — set one of
258
+ the two connections to `state: disconnected` and apply, wait until its teardown
259
+ is done, delete the resource nothing holds any more, and delete the other once
260
+ that deletion has finished.
261
+
256
262
  **A manifest never moves a connection in one apply**: pointing an existing
257
263
  connection at a different resource is refused rather than performed, because a
258
264
  file you re-apply on every push must not be able to silently move a running
package/dist/vfac.mjs CHANGED
@@ -14216,7 +14216,7 @@ function exampleResourceKey(name) {
14216
14216
  const slug = name.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^[^a-z]+/, "").replace(/-+$/, "").slice(0, 63);
14217
14217
  return RESOURCE_KEY_PATTERN.test(slug) ? slug : "";
14218
14218
  }
14219
- var DEPLOYMENT_EXAMPLE_GUARANTEE = "Product-owned configuration is complete and E2E-proven; tenant-specific secrets and Resource/provider selections are supplied by the tenant.";
14219
+ var DEPLOYMENT_EXAMPLE_GUARANTEE = "Product-owned configuration is complete and E2E-proven; tenant-specific secrets, tenant-specific values and Resource/provider selections are supplied by the tenant.";
14220
14220
 
14221
14221
  // ../product-configuration/dist/configuration-requirements.js
14222
14222
  function configurationRequirements(configuration) {
@@ -15077,6 +15077,7 @@ function isBlockedHost(hostname) {
15077
15077
  }
15078
15078
 
15079
15079
  // ../product-contracts/dist/deployment-example.schema.js
15080
+ var MAX_TENANT_INPUTS = 8;
15080
15081
  var DeploymentExampleSchema = external_exports.object({
15081
15082
  /** The heading a customer reads above the example. */
15082
15083
  title: external_exports.string().min(3).max(80),
@@ -15105,12 +15106,29 @@ var DeploymentExampleSchema = external_exports.object({
15105
15106
  * created and again only to set a new one — and never written into a
15106
15107
  * manifest. A secret resent on an unchanged re-apply is written again.
15107
15108
  */
15108
- secretInputs: external_exports.array(external_exports.string().regex(CONFIGURATION_PROPERTY_NAME_REGEX)).max(MAX_CONFIGURATION_CHILDREN).optional()
15109
- }).strict().describe("The recommended deployment for this release. Required for a NEW release; optional in the schema because releases published before the field existed are immutable. " + DEPLOYMENT_EXAMPLE_GUARANTEE + " Secret settings are named in secretInputs and never given a value here.");
15109
+ secretInputs: external_exports.array(external_exports.string().regex(CONFIGURATION_PROPERTY_NAME_REGEX)).max(MAX_CONFIGURATION_CHILDREN).optional(),
15110
+ /**
15111
+ * The ordinary — NOT secret — settings the tenant answers, BY NAME.
15112
+ *
15113
+ * A value only the tenant can know and nothing may default: the address of
15114
+ * the person who administers the Resource first. The example carries NO
15115
+ * value for one — the document a reader copies carries it present and
15116
+ * empty, and the tenant types it — so an example applied unchanged is
15117
+ * refused for that setting by name rather than deployed with a placeholder.
15118
+ * Unlike a secret, the value belongs in the manifest.
15119
+ *
15120
+ * Each must be a setting every deployment must answer, with no default, that
15121
+ * no other rule reads: whether the example is complete cannot depend on a
15122
+ * value the publisher never gave.
15123
+ */
15124
+ tenantInputs: external_exports.array(external_exports.string().regex(CONFIGURATION_PROPERTY_NAME_REGEX)).max(MAX_TENANT_INPUTS).optional()
15125
+ }).strict().describe("The recommended deployment for this release. Required for a NEW release; optional in the schema because releases published before the field existed are immutable. " + DEPLOYMENT_EXAMPLE_GUARANTEE + " Secret settings are named in secretInputs and never given a value here; so are the ordinary settings the tenant answers, named in tenantInputs.");
15110
15126
  var SECRET_INPUT_SEGMENT = CONFIGURATION_PROPERTY_NAME_REGEX.source.slice(1, -1);
15111
- var SecretInputV2Schema = external_exports.string().regex(new RegExp(`^(?:${SECRET_INPUT_SEGMENT}|(?:/${SECRET_INPUT_SEGMENT}){2,${MAX_CONFIGURATION_DEPTH}})$`)).refine((raw) => secretPathOf(raw) !== null, {
15112
- message: 'A secret input is a root setting name, or a configuration path such as "/group/setting" with no list index.'
15127
+ var settingInputV2Schema = (what) => external_exports.string().regex(new RegExp(`^(?:${SECRET_INPUT_SEGMENT}|(?:/${SECRET_INPUT_SEGMENT}){2,${MAX_CONFIGURATION_DEPTH}})$`)).refine((raw) => secretPathOf(raw) !== null, {
15128
+ message: `A ${what} is a root setting name, or a configuration path such as "/group/setting" with no list index.`
15113
15129
  });
15130
+ var SecretInputV2Schema = settingInputV2Schema("secret input");
15131
+ var TenantInputV2Schema = settingInputV2Schema("tenant input");
15114
15132
  var DeploymentExampleV2Schema = DeploymentExampleSchema.extend({
15115
15133
  /**
15116
15134
  * The secret settings a deployment of this example supplies, BY CANONICAL
@@ -15120,7 +15138,12 @@ var DeploymentExampleV2Schema = DeploymentExampleSchema.extend({
15120
15138
  * here, so a reader knows every `--secret` flag the create needs before
15121
15139
  * running it. The values are the tenant's and never written into a manifest.
15122
15140
  */
15123
- secretInputs: external_exports.array(SecretInputV2Schema).max(MAX_CONFIGURATION_CHILDREN).optional()
15141
+ secretInputs: external_exports.array(SecretInputV2Schema).max(MAX_CONFIGURATION_CHILDREN).optional(),
15142
+ /**
15143
+ * The ordinary settings the tenant answers, BY CANONICAL PATH —
15144
+ * `/administrator/email`. See the v1 field; only the spelling differs.
15145
+ */
15146
+ tenantInputs: external_exports.array(TenantInputV2Schema).max(MAX_TENANT_INPUTS).optional()
15124
15147
  });
15125
15148
 
15126
15149
  // ../product-contracts/dist/portfolio.js
@@ -19165,7 +19188,7 @@ function renderOperation(operationId, data) {
19165
19188
  const cause2 = failure["cause"];
19166
19189
  const named = reportedSettings[0];
19167
19190
  lines.push(
19168
- retryable ? ` Another attempt can succeed: ${again}.` : named !== void 0 ? ` Correct \`${named}\` in your manifest, then \`vfac apply\` it${data["type"] === "PRODUCT_INSTANCE_UPGRADE" ? ` and ${again}` : ""}. Repeating it unchanged fails the same way.` : cause2 === "unknown" ? ` The platform could not classify this, so there is nothing here to correct. Read the whole record with \`vfac get operation ${operationId} --output json\`, and quote that id if you ask for help. Repeating it unchanged fails the same way.` : ` Repeating this unchanged fails again \u2014 fix what the lines above name, then ${again}${changeIt}.`
19191
+ named !== void 0 ? ` Correct \`${named}\` in your manifest, then \`vfac apply\` it${data["type"] === "PRODUCT_INSTANCE_UPGRADE" ? ` and ${again}` : ""}. Repeating it unchanged fails the same way.` : retryable ? ` Another attempt can succeed: ${again}.` : cause2 === "unknown" ? ` The platform could not classify this, so there is nothing here to correct. Read the whole record with \`vfac get operation ${operationId} --output json\`, and quote that id if you ask for help. Repeating it unchanged fails the same way.` : ` Repeating this unchanged fails again \u2014 fix what the lines above name, then ${again}${changeIt}.`
19169
19192
  );
19170
19193
  }
19171
19194
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@varde-flyt/vfac",
3
- "version": "0.17.0",
3
+ "version": "0.18.1",
4
4
  "description": "Deploy and manage Varde Flyt Products from a manifest.",
5
5
  "repository": {
6
6
  "type": "git",