busroot-sdk 0.0.8-dev.2920950808 → 0.0.8-dev.2924506298

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 (2) hide show
  1. package/build/index.js +62 -16
  2. package/package.json +1 -1
package/build/index.js CHANGED
@@ -369,7 +369,7 @@ var require_error_key = __commonJS({
369
369
  Object.defineProperty(exports2, "__esModule", { value: true });
370
370
  exports2.TARGET_STATION_NOT_FOUND = exports2.INVALID_PARTS_PER_CYCLE = exports2.PARTS_PER_CYCLE_NOT_ALLOWED_FOR_STATION = exports2.SCHEDULE_CANNOT_STOP_FUTURE = exports2.SCHEDULE_NON_PROD_OR_ENDED = exports2.SCHEDULE_CANNOT_CUT_SHORT = exports2.SCHEDULE_AUTO_ENDED_BY_QUANTITY = exports2.SCHEDULE_NOT_STARTED_OR_ENDED = exports2.ACTUAL_START_IN_PAST = exports2.PLANNED_START_IN_PAST = exports2.SCHEDULE_CANNOT_CHANGE_PROD_TO_NON_PROD = exports2.SCHEDULE_CANNOT_CHANGE_NON_PROD_TO_PROD = exports2.SCHEDULE_CANNOT_SET_PRIORITY_AFTER_START = exports2.SCHEDULE_ALREADY_STARTED_CANNOT_EDIT_START = exports2.SCHEDULE_ALREADY_ENDED = exports2.UNSUPPORTED_SCHEDULE_OPERATION = exports2.INVALID_RESOLUTION_MODE = exports2.EXISTED_EVENT = exports2.INVALID_SEARCH_TEXT = exports2.INVALID_SKIP = exports2.INVALID_LIMIT = exports2.INVALID_WINDOW_TIME = exports2.INVALID_NOTIFICATION_PREFERENCE = exports2.OVERLAPPED_SHIFT = exports2.INVALID_SHIFT_NAME = exports2.INVALID_WEEK_DAY = exports2.INVALID_FILE_TYPE = exports2.INVALID_HEADER_FIELDS = exports2.DELETE_LAST_SHIFT_PATTERN = exports2.INVALID_ACTUAL_START_AT_STATE = exports2.INVALID_DOMAIN = exports2.SKU_NOT_FOUND = exports2.STATION_GROUP_NOT_FOUND = exports2.WORK_ORDER_ENDED = exports2.SCHEDULE_NOT_FOUND = exports2.INVALID_SKU = exports2.INVALID_SCHEDULE = exports2.EXPIRED_TOKEN = exports2.UNAUTHORIZED_USER = exports2.UNAUTHENTICATED_USER = exports2.SHIFT_PATTERN_NOT_FOUND = exports2.INVALID_SHIFT_PATTERN_TITLE = exports2.INVALID_SHIFT_PATTERN_ID = exports2.INVALID_DELETE_SHIFTS = exports2.UNSUPPORTED_SHIFT_OVER_MID_NIGHT = exports2.INVALID_SHIFTS = exports2.INVALID_PLANTCODE = exports2.INVALID_RANGECODE = exports2.INTERNAL_SERVER_ERROR = exports2.CACHE_NOT_COMPLETE = void 0;
371
371
  exports2.INVALID_USER_ACCOUNT = exports2.NO_ACCOUNT_AVAILABLE = exports2.EXPIRED_USER = exports2.USER_IS_BLOCKED = exports2.INVALID_USER = exports2.USER_ALREADY_EXISTS = exports2.USER_NOT_FOUND = exports2.MULTIPLE_ACCOUNT_ASSOCIATED = exports2.UNSUPPORTED_USER_OPERATION = exports2.EMAIL_TYPE_NOT_FOUND = exports2.INVALID_STATION_CODE = exports2.DUPLICATED_STATION_CODE = exports2.DUPLICATED_STATION_GROUP_CODE = exports2.INVALID_INPUT = exports2.DUPLICATED_SKU_CODE = exports2.INVALID_SKU_CODE = exports2.TOO_LARGE = exports2.BUSINESS_CONFLICT = exports2.FORBIDDEN = exports2.INVALID_ACCESS_CODE = exports2.EXPIRED_API_KEY = exports2.UNSUPPORTED_ARCHIVE_LAST_PLANT = exports2.PLANT_NOT_EXISTS = exports2.NOT_EMPTY_STATION_GROUP = exports2.INVALID_AGGREGATE_WINDOW = exports2.DUPLICATED_SCHEDULE = exports2.INVALID_SCHEDULE_ORDER_TYPE = exports2.INVALID_SKU_GROUP_NAME = exports2.SKU_GROUP_NOT_FOUND = exports2.INVALID_SKU_GROUP = exports2.INVALID_DOWNTIMNE_DURATION_THRESHOLD_MULTIPLIER = exports2.REASON_NOT_DOWNTIME_TYPE = exports2.MANUAL_DOWNTIME_NO_ACTIVE_SCHEDULE = exports2.MANUAL_DOWNTIME_ALREADY_ONGOING = exports2.CACHE_WARMING_DISABLED = exports2.MANUAL_DOWNTIME_DISABLED = exports2.DOWNTIME_NOT_MANUAL = exports2.DOWNTIME_NOT_FOUND = exports2.STATION_NOT_FOUND = exports2.TASK_COMPLETION_MISSED = exports2.TASK_COMPLETION_ALREADY_COMPLETED = exports2.TASK_COMPLETION_NOT_FOUND = exports2.TASK_LIST_NOT_FOUND = exports2.TASK_NOT_FOUND = exports2.REPORTED_BY_REQUIRED = exports2.REASON_NOTE_REQUIRED = exports2.REASON_NOT_ALLOWED_FOR_STATION = exports2.REASON_NOT_FOUND = exports2.SKU_REQUIRED = exports2.STATION_REASSIGN_CROSS_GROUP = void 0;
372
- exports2.TOO_MANY_ACCESS_CODE_ATTEMPTS = exports2.TOO_MANY_REQUESTS = exports2.HISTORICAL_CORRECTION_LIMIT_REACHED = exports2.HISTORICAL_CORRECTION_CURSOR_RESET_FAILED = exports2.HISTORICAL_CORRECTION_WINDOW_EXPIRED = exports2.SCHEDULE_NOT_CORRECTABLE = exports2.HISTORICAL_CORRECTION_NOT_ALLOWED = exports2.PRODUCTION_EXCEEDS_MAX_COUNT = exports2.PRODUCTION_BLOCKED_BY_MANUAL_DOWNTIME = exports2.PRODUCTION_CORRECTION_NOT_ALLOWED = exports2.PRODUCTION_QUANTITY_BELOW_ZERO = exports2.INVALID_PRODUCTION_ID = exports2.RESET_EXCEED_30_DAYS = exports2.INVALID_REASON_CODE = exports2.SELF_REFERENCING_CODE = exports2.PARENT_CODE_IN_USE = exports2.DUPLICATED_REASON_CODE = exports2.DATABASE_ERROR_MESSAGE = exports2.INVALID_API_KEY = exports2.UNSUPPORTED_API_KEY_OPERATION = exports2.ACCOUNT_ARCHIVED = exports2.ACCOUNT_DENIED = exports2.ACCOUNT_NOT_FOUND = exports2.ACCOUNT_MISMATCH = exports2.USER_ACCOUNT_IS_BLOCKED = exports2.ACCOUNT_NOT_SELECTED = void 0;
372
+ exports2.TOO_MANY_ACCESS_CODE_ATTEMPTS = exports2.TOO_MANY_REQUESTS = exports2.HISTORICAL_CORRECTION_LIMIT_REACHED = exports2.HISTORICAL_CORRECTION_CURSOR_RESET_FAILED = exports2.HISTORICAL_CORRECTION_WINDOW_EXPIRED = exports2.SCHEDULE_NOT_CORRECTABLE = exports2.HISTORICAL_CORRECTION_NOT_ALLOWED = exports2.PRODUCTION_EXCEEDS_MAX_COUNT = exports2.PRODUCTION_BLOCKED_BY_MANUAL_DOWNTIME = exports2.PRODUCTION_CORRECTION_NOT_ALLOWED = exports2.PRODUCTION_QUANTITY_BELOW_ZERO = exports2.INVALID_PRODUCTION_ID = exports2.RESET_EXCEED_30_DAYS = exports2.INVALID_REASON_CODE = exports2.SELF_REFERENCING_CODE = exports2.PARENT_CODE_IN_USE = exports2.DUPLICATED_REASON_CODE = exports2.DATABASE_ERROR_MESSAGE = exports2.INVALID_API_KEY = exports2.UNSUPPORTED_API_KEY_OPERATION = exports2.ACCOUNT_ARCHIVED = exports2.ACCOUNT_DENIED = exports2.ACCOUNT_NOT_FOUND = exports2.MANIFEST_REVISION_MISMATCH = exports2.MANIFEST_REVISION_REQUIRED = exports2.PRECONDITION_REQUIRED = exports2.ACCOUNT_MISMATCH = exports2.USER_ACCOUNT_IS_BLOCKED = exports2.ACCOUNT_NOT_SELECTED = void 0;
373
373
  exports2.CACHE_NOT_COMPLETE = "cacheNotComplete";
374
374
  exports2.INTERNAL_SERVER_ERROR = "internalServerError";
375
375
  exports2.INVALID_RANGECODE = "invalidRangeCode";
@@ -473,6 +473,9 @@ var require_error_key = __commonJS({
473
473
  exports2.ACCOUNT_NOT_SELECTED = "accountNotSelected";
474
474
  exports2.USER_ACCOUNT_IS_BLOCKED = "userAccountIsBlocked";
475
475
  exports2.ACCOUNT_MISMATCH = "accountMismatch";
476
+ exports2.PRECONDITION_REQUIRED = "preconditionRequired";
477
+ exports2.MANIFEST_REVISION_REQUIRED = "manifestRevisionRequired";
478
+ exports2.MANIFEST_REVISION_MISMATCH = "manifestRevisionMismatch";
476
479
  exports2.ACCOUNT_NOT_FOUND = "accountNotFound";
477
480
  exports2.ACCOUNT_DENIED = "accountDenied";
478
481
  exports2.ACCOUNT_ARCHIVED = "accountArchived";
@@ -1686,9 +1689,11 @@ var require_account = __commonJS({
1686
1689
  "../../packages/common/build/schemas/account.js"(exports2) {
1687
1690
  "use strict";
1688
1691
  Object.defineProperty(exports2, "__esModule", { value: true });
1689
- exports2.MANIFEST_HISTORY_MODEL = exports2.ACCOUNT_MODEL = void 0;
1692
+ exports2.MANIFEST_SOURCE_UNKNOWN = exports2.MANIFEST_SOURCE_REPO = exports2.MANIFEST_HISTORY_MODEL = exports2.ACCOUNT_MODEL = void 0;
1690
1693
  exports2.ACCOUNT_MODEL = "account";
1691
1694
  exports2.MANIFEST_HISTORY_MODEL = "manifest_history";
1695
+ exports2.MANIFEST_SOURCE_REPO = "repo";
1696
+ exports2.MANIFEST_SOURCE_UNKNOWN = "unknown";
1692
1697
  }
1693
1698
  });
1694
1699
 
@@ -10898,6 +10903,35 @@ var require_plant3 = __commonJS({
10898
10903
  }
10899
10904
  });
10900
10905
 
10906
+ // ../../packages/common/build/utils/manifest-revision.js
10907
+ var require_manifest_revision = __commonJS({
10908
+ "../../packages/common/build/utils/manifest-revision.js"(exports2) {
10909
+ "use strict";
10910
+ Object.defineProperty(exports2, "__esModule", { value: true });
10911
+ exports2.ManifestRevisionMismatchError = void 0;
10912
+ exports2.manifestRevision = manifestRevision;
10913
+ exports2.isManifestRevisionMismatch = isManifestRevisionMismatch;
10914
+ var crypto_1 = require("crypto");
10915
+ function manifestRevision(manifestJson) {
10916
+ return (0, crypto_1.createHash)("sha256").update(manifestJson ?? "").digest("hex");
10917
+ }
10918
+ var MANIFEST_REVISION_MISMATCH_ERROR = "ManifestRevisionMismatchError";
10919
+ var ManifestRevisionMismatchError = class extends Error {
10920
+ constructor(accountId, expectedRevision, currentRevision) {
10921
+ super(`Manifest of ${accountId} is at revision ${currentRevision}, expected ${expectedRevision}`);
10922
+ this.accountId = accountId;
10923
+ this.expectedRevision = expectedRevision;
10924
+ this.currentRevision = currentRevision;
10925
+ this.name = MANIFEST_REVISION_MISMATCH_ERROR;
10926
+ }
10927
+ };
10928
+ exports2.ManifestRevisionMismatchError = ManifestRevisionMismatchError;
10929
+ function isManifestRevisionMismatch(error) {
10930
+ return error instanceof Error && error.name === MANIFEST_REVISION_MISMATCH_ERROR;
10931
+ }
10932
+ }
10933
+ });
10934
+
10901
10935
  // ../../packages/common/build/utils/manifest-helpers.js
10902
10936
  var require_manifest_helpers = __commonJS({
10903
10937
  "../../packages/common/build/utils/manifest-helpers.js"(exports2) {
@@ -10916,6 +10950,7 @@ var require_manifest_helpers = __commonJS({
10916
10950
  var base_account_1 = require_base_account();
10917
10951
  var manifest_1 = require_manifest();
10918
10952
  var feature_flags_1 = require_feature_flags();
10953
+ var manifest_revision_1 = require_manifest_revision();
10919
10954
  var LEGACY_FLAG_RENAMES = {
10920
10955
  allowCycleTimeAnalysis: "enableCycleTimeAnalysis",
10921
10956
  allowProductionCorrection: "enableProductionCorrection",
@@ -11068,21 +11103,32 @@ var require_manifest_helpers = __commonJS({
11068
11103
  }
11069
11104
  return { ...manifest, account };
11070
11105
  }
11106
+ var UPDATE_MANIFEST_MAX_ATTEMPTS = 3;
11071
11107
  async function updateManifest(accountRepository, accountId, mutate) {
11072
- const account = await accountRepository.raw(accountId);
11073
- if (!account) {
11074
- throw new Error(`Account not found: ${accountId}`);
11075
- }
11076
- if (!account.manifestJson) {
11077
- const empty = { ...exports2.EMPTY_MANIFEST, account: { ...exports2.EMPTY_MANIFEST.account, id: accountId } };
11078
- account.manifestJson = JSON.stringify(empty);
11079
- await accountRepository.save([account]);
11080
- }
11081
- const manifest = manifest_1.ManifestSchema.parse(normalizeManifest(JSON.parse(account.manifestJson)));
11082
- mutate(manifest);
11083
- manifest_1.ManifestSchema.parse(manifest);
11084
- await accountRepository.save([{ ...account, manifestJson: JSON.stringify(manifest) }]);
11085
- return manifest;
11108
+ for (let attempt = 1; ; attempt++) {
11109
+ const account = await accountRepository.raw(accountId);
11110
+ if (!account) {
11111
+ throw new Error(`Account not found: ${accountId}`);
11112
+ }
11113
+ if (!account.manifestJson) {
11114
+ const empty = { ...exports2.EMPTY_MANIFEST, account: { ...exports2.EMPTY_MANIFEST.account, id: accountId } };
11115
+ account.manifestJson = JSON.stringify(empty);
11116
+ await accountRepository.save([account]);
11117
+ }
11118
+ const manifest = manifest_1.ManifestSchema.parse(normalizeManifest(JSON.parse(account.manifestJson)));
11119
+ mutate(manifest);
11120
+ manifest_1.ManifestSchema.parse(manifest);
11121
+ try {
11122
+ await accountRepository.save([{ ...account, manifestJson: JSON.stringify(manifest) }], {
11123
+ expectedRevision: (0, manifest_revision_1.manifestRevision)(account.manifestJson)
11124
+ });
11125
+ return manifest;
11126
+ } catch (e) {
11127
+ if (!(0, manifest_revision_1.isManifestRevisionMismatch)(e) || attempt >= UPDATE_MANIFEST_MAX_ATTEMPTS) {
11128
+ throw e;
11129
+ }
11130
+ }
11131
+ }
11086
11132
  }
11087
11133
  }
11088
11134
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "busroot-sdk",
3
- "version": "0.0.8-dev.2920950808",
3
+ "version": "0.0.8-dev.2924506298",
4
4
  "description": "An SDK for accessing Busroot from output.industries",
5
5
  "homepage": "https://www.output.industries",
6
6
  "main": "./build/index.js",