@ductape/sdk 0.1.116 → 0.1.120

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.
@@ -207,7 +207,11 @@ class CloudService {
207
207
  throw new CloudError(`Product builder does not support ${createMethod}`, 'UNSUPPORTED_COMPONENT');
208
208
  }
209
209
  try {
210
- await b[createMethod](data);
210
+ // throwErrorIfExists=true is required here: every create* method silently no-ops
211
+ // (resolves without error) when the tag already exists unless told otherwise, which
212
+ // would skip the updateMethod fallback below entirely and leave the caller believing
213
+ // a no-op succeeded as a real persist.
214
+ await b[createMethod](data, true);
211
215
  }
212
216
  catch (createErr) {
213
217
  const createMsg = createErr instanceof Error ? createErr.message : String(createErr);
@@ -1 +1 @@
1
- {"version":3,"file":"cloud.service.js","sourceRoot":"","sources":["../../src/cloud/cloud.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloud.service.js","sourceRoot":"","sources":["../../src/cloud/cloud.service.ts"],"names":[],"mappings":"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"}
@@ -1556,6 +1556,12 @@ class ProductsBuilderService {
1556
1556
  console.log(`${logPrefix} All product environments have broker configs`);
1557
1557
  console.log(`${logPrefix} Sending create request to API...`);
1558
1558
  await this.productApi.updateProduct(this.product_id, Object.assign(Object.assign({}, data), { component: enums_1.ProductComponents.MESSAGEBROKER, action: enums_1.RequestAction.CREATE }), this.getUserAccess());
1559
+ // brokerCache may have cached a `null` (not-found) result for this tag from an
1560
+ // earlier lookup on this same builder instance (proxy caches builder instances
1561
+ // per workspace, so this instance can outlive a single request). Without this,
1562
+ // every subsequent fetchMessageBroker(tag) call — including events topics
1563
+ // list/get/create — keeps returning the stale not-found result forever.
1564
+ await this.refreshProductState();
1559
1565
  console.log(`${logPrefix} Message broker ${data.tag} created successfully`);
1560
1566
  }
1561
1567
  else {
@@ -1664,6 +1670,10 @@ class ProductsBuilderService {
1664
1670
  console.log(`${logPrefix} Final env breakdown - Unchanged: ${unchanged.length}, Overwrite: ${overwrite.length}, New: ${newEnvs.length}`);
1665
1671
  console.log(`${logPrefix} Sending update request to API...`);
1666
1672
  await this.productApi.updateProduct(this.product_id, Object.assign(Object.assign(Object.assign({ _id }, messageBroker), data), { component: enums_1.ProductComponents.MESSAGEBROKER, action: enums_1.RequestAction.UPDATE }), this.getUserAccess());
1673
+ // See the matching comment in createMessageBroker: without this, a stale cached
1674
+ // entry (under either the old or new tag) survives the update indefinitely on a
1675
+ // proxy-cached builder instance.
1676
+ await this.refreshProductState();
1667
1677
  console.log(`${logPrefix} Message broker ${tag} updated successfully`);
1668
1678
  }
1669
1679
  catch (e) {
@@ -1715,6 +1725,9 @@ class ProductsBuilderService {
1715
1725
  component: enums_1.ProductComponents.MESSAGEBROKER,
1716
1726
  action: enums_1.RequestAction.DELETE,
1717
1727
  }, this.getUserAccess());
1728
+ // See the matching comment in createMessageBroker: without this, a stale cached
1729
+ // "found" entry survives the delete indefinitely on a proxy-cached builder instance.
1730
+ await this.refreshProductState();
1718
1731
  }
1719
1732
  catch (e) {
1720
1733
  throw e;
@@ -1787,7 +1800,7 @@ class ProductsBuilderService {
1787
1800
  }
1788
1801
  else {
1789
1802
  if (throwErrorIfExists)
1790
- throw new Error(`Database ${data.tag} already exists`);
1803
+ throw new Error(`Storage ${data.tag} already exists`);
1791
1804
  }
1792
1805
  }
1793
1806
  async updateStorage(tag, data) {
@@ -5107,16 +5120,47 @@ class ProductsBuilderService {
5107
5120
  }
5108
5121
  }
5109
5122
  }
5110
- await this.productApi.updateProduct(this.product_id, Object.assign(Object.assign({}, data), { component: enums_1.ProductComponents.FEATURE, action: enums_1.RequestAction.CREATE }), this.getUserAccess());
5123
+ try {
5124
+ await this.productApi.updateProduct(this.product_id, Object.assign(Object.assign({}, data), { component: enums_1.ProductComponents.FEATURE, action: enums_1.RequestAction.CREATE }), this.getUserAccess());
5125
+ }
5126
+ catch (createErr) {
5127
+ // The by-tag existence check above (fetchFeature) is known to false-negative
5128
+ // under backend read lag -- confirmed by tags that unambiguously already exist
5129
+ // (verified via the always-consistent list-all endpoint) still failing this
5130
+ // check, especially under the ~30-way concurrent defineFeature() calls this SDK
5131
+ // makes on a typical app boot. If the backend now rejects this as a duplicate,
5132
+ // the feature was there all along and this is that false negative resolving
5133
+ // itself -- fall through to the read-back below instead of failing the caller.
5134
+ const isDuplicate = createErr instanceof Error && /already exists|duplicate|in use/i.test(createErr.message);
5135
+ if (!isDuplicate)
5136
+ throw createErr;
5137
+ }
5111
5138
  // A successful mutation response is insufficient: execution and Workbench
5112
5139
  // use the catalogue read API. Confirm that exact path can observe the write.
5113
- for (let attempt = 0; attempt < 5; attempt += 1) {
5140
+ // Widened from the original 5x50-200ms budget (~500ms total): that was proven
5141
+ // too tight against real backend read lag, which is on the order of seconds
5142
+ // under concurrent boot-time load, not milliseconds.
5143
+ let delay = 100;
5144
+ for (let attempt = 0; attempt < 8; attempt += 1) {
5114
5145
  const persisted = await this.fetchFeature(data.tag);
5115
5146
  if (persisted)
5116
5147
  return persisted;
5117
- if (attempt < 4)
5118
- await new Promise((resolve) => setTimeout(resolve, 50 * (attempt + 1)));
5148
+ if (attempt < 7) {
5149
+ await new Promise((resolve) => setTimeout(resolve, delay));
5150
+ delay = Math.min(delay * 2, 3000);
5151
+ }
5119
5152
  }
5153
+ // The by-tag read path is still lagging. Fall back to the list-all endpoint,
5154
+ // which every observed case shows is immediately consistent -- if the feature
5155
+ // shows up there, the write is real and the by-tag path is just slow, so don't
5156
+ // fail the caller (e.g. a boot-time feature registration) over that.
5157
+ const all = await this.fetchFeatures();
5158
+ const viaList = all.find((feature) => feature.tag === data.tag);
5159
+ if (viaList)
5160
+ return viaList;
5161
+ // Genuinely unconfirmed on every read path we have, including the always-reliable
5162
+ // list-all endpoint -- this is no longer just a lagging read, so fail loudly
5163
+ // instead of pretending the write succeeded.
5120
5164
  throw new Error(`Feature catalogue write was acknowledged but ${data.tag} could not be read back`);
5121
5165
  }
5122
5166
  else {
@@ -5156,11 +5200,35 @@ class ProductsBuilderService {
5156
5200
  }
5157
5201
  async fetchFeatures() {
5158
5202
  const components = await this.productApi.fetchProductComponents(this.product_id, 'feature', this.getUserAccess());
5159
- return components;
5203
+ if (Array.isArray(components) && components.length > 0) {
5204
+ return components;
5205
+ }
5206
+ // Compatibility path for rolling backend deployments. The full-product
5207
+ // endpoint and Workbench read the canonical embedded `features` array,
5208
+ // while older /components/:id/feature handlers can incorrectly return an
5209
+ // empty list. Always perform a fresh product read before concluding that a
5210
+ // product has no features.
5211
+ const product = await this.productApi.fetchProduct(this.product_id, this.getUserAccess());
5212
+ const rawProduct = product;
5213
+ const byTag = new Map();
5214
+ for (const feature of [
5215
+ ...(rawProduct.features || []),
5216
+ ...(rawProduct.workflows || []),
5217
+ ]) {
5218
+ if ((feature === null || feature === void 0 ? void 0 : feature.tag) && feature.deleted !== true && !byTag.has(feature.tag)) {
5219
+ byTag.set(feature.tag, feature);
5220
+ }
5221
+ }
5222
+ return Array.from(byTag.values());
5160
5223
  }
5161
5224
  async fetchFeature(tag) {
5162
5225
  const component = await this.productApi.fetchProductComponentByTag(this.product_id, 'feature', tag, this.getUserAccess());
5163
- return component;
5226
+ if (component)
5227
+ return component;
5228
+ // Keep tag lookup consistent with fetchFeatures()/Workbench when an older
5229
+ // feature-component endpoint is still serving traffic.
5230
+ const features = await this.fetchFeatures();
5231
+ return features.find((feature) => feature.tag === tag) || null;
5164
5232
  }
5165
5233
  async deleteFeature(tag) {
5166
5234
  try {