@crowdedkingdoms/crowdyjs 17.0.0-dev.1 → 17.0.1-dev.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/MIGRATION.md CHANGED
@@ -62,6 +62,10 @@ Added:
62
62
 
63
63
  Behaviour worth knowing:
64
64
 
65
+ - **17.0.1:** a bound save whose `expectedRevisionId` is older than the project
66
+ the provider last returned is refused as `CrowdyStudioRevisionConflictError`
67
+ before any commit. 17.0.0 rode the provider's own commit onto the branch in
68
+ that case (found by the local end-to-end proof, not by a user).
65
69
  - Bind, unbind and refresh refuse over unsaved edits and re-read the project
66
70
  afterwards (`reloadProject`), because `TAKE_REPOSITORY` and `refresh`
67
71
  replace its files and every path gives it a new `github.sha`.
@@ -1 +1 @@
1
- {"version":3,"file":"crowdyStudio.d.ts","sourceRoot":"","sources":["../../src/domains/crowdyStudio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAalD,OAAO,EAIL,KAAK,8BAA8B,EACnC,KAAK,oCAAoC,EAEzC,KAAK,mBAAmB,EAExB,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,EACrC,KAAK,4BAA4B,EAClC,MAAM,4BAA4B,CAAC;AA2BpC;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAgB,YAAW,2BAA2B;IAMrD,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,qFAAqF;IACrF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;gBAE1C,OAAO,EAAE,aAAa;IAI7C,YAAY,CAChB,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAUlC,UAAU,CACd,KAAK,EAAE,wBAAwB,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GACtD,OAAO,CAAC,mBAAmB,CAAC;IAQzB,aAAa,CACjB,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC,mBAAmB,CAAC;IAoBzB,WAAW,CACf,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,mBAAmB,CAAC;IAoE/B;;;;;;;;;OASG;YACW,gBAAgB;YA4FhB,QAAQ;IAgBhB,wBAAwB,CAC5B,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAUjC,uBAAuB,CAC3B,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,yBAAyB,CAAC;IAc/B,eAAe,CACnB,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,yBAAyB,EAAE,CAAC;IASjC,mBAAmB,CACvB,KAAK,EAAE,oCAAoC,GAC1C,OAAO,CAAC,mBAAmB,CAAC;IAuB/B,OAAO,CAAC,QAAQ;YAKF,OAAO;CAiBtB"}
1
+ {"version":3,"file":"crowdyStudio.d.ts","sourceRoot":"","sources":["../../src/domains/crowdyStudio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAalD,OAAO,EAIL,KAAK,8BAA8B,EACnC,KAAK,oCAAoC,EAEzC,KAAK,mBAAmB,EAExB,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,EACrC,KAAK,4BAA4B,EAClC,MAAM,4BAA4B,CAAC;AA2BpC;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAgB,YAAW,2BAA2B;IAMrD,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,qFAAqF;IACrF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;gBAE1C,OAAO,EAAE,aAAa;IAI7C,YAAY,CAChB,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAUlC,UAAU,CACd,KAAK,EAAE,wBAAwB,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GACtD,OAAO,CAAC,mBAAmB,CAAC;IAQzB,aAAa,CACjB,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC,mBAAmB,CAAC;IAoBzB,WAAW,CACf,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,mBAAmB,CAAC;IAoE/B;;;;;;;;;OASG;YACW,gBAAgB;YAiHhB,QAAQ;IAgBhB,wBAAwB,CAC5B,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAUjC,uBAAuB,CAC3B,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,yBAAyB,CAAC;IAc/B,eAAe,CACnB,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,yBAAyB,EAAE,CAAC;IASjC,mBAAmB,CACvB,KAAK,EAAE,oCAAoC,GAC1C,OAAO,CAAC,mBAAmB,CAAC;IAuB/B,OAAO,CAAC,QAAQ;YAKF,OAAO;CAiBtB"}
@@ -135,6 +135,25 @@ export class CrowdyStudioAPI {
135
135
  if (!startSha) {
136
136
  throw new Error('The bound project has no mirror commit; refresh it from GitHub first.');
137
137
  }
138
+ // The caller's precondition is the revision IT read. The baseline is the
139
+ // project this provider last returned; the two agree whenever the caller
140
+ // saved or re-read through here. A caller holding an older revision must
141
+ // not ride the baseline's commit onto the branch — that is exactly the
142
+ // lost update the STUDIO path's server-side CAS refuses.
143
+ if (input.expectedRevisionId !== baseline.revision.id) {
144
+ let remoteProject;
145
+ try {
146
+ remoteProject = await this.getProject({
147
+ appId: input.appId,
148
+ gridId: input.gridId,
149
+ projectId: input.projectId,
150
+ });
151
+ }
152
+ catch {
153
+ // The conflict remains actionable if the follow-up read fails.
154
+ }
155
+ throw new CrowdyStudioRevisionConflictError(`CROWDY_STUDIO_REVISION_CONFLICT: expected project revision ${input.expectedRevisionId}; current revision is ${baseline.revision.id}.`, remoteProject);
156
+ }
138
157
  try {
139
158
  if (metadataChanged(baseline, input)) {
140
159
  await this.request(CrowdyStudioProjectSaveDocument, {
package/dist/index.d.ts CHANGED
@@ -47,7 +47,7 @@
47
47
  * or internal tooling, never an untrusted browser.
48
48
  */
49
49
  /** The published package version. Mirrors `package.json`. */
50
- export declare const VERSION = "17.0.0-dev.1";
50
+ export declare const VERSION = "17.0.1-dev.1";
51
51
  export { LbCookieStore } from './lb-cookie-store.js';
52
52
  export { CrowdyClient, createCrowdyClient, type CrowdyClientConfig, } from './crowdy-client.js';
53
53
  export { CROWDY_DEFAULT_TIER, CROWDY_DEFAULT_HOST, CROWDY_DEFAULT_HTTP_ORIGIN, CROWDY_DEFAULT_WS_ORIGIN, } from './default-origin.js';
package/dist/index.js CHANGED
@@ -47,7 +47,7 @@
47
47
  * or internal tooling, never an untrusted browser.
48
48
  */
49
49
  /** The published package version. Mirrors `package.json`. */
50
- export const VERSION = '17.0.0-dev.1';
50
+ export const VERSION = '17.0.1-dev.1';
51
51
  export { LbCookieStore } from './lb-cookie-store.js';
52
52
  export { CrowdyClient, createCrowdyClient, } from './crowdy-client.js';
53
53
  // The tier this build defaults to, exported so a consumer can PRINT what it is
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crowdedkingdoms/crowdyjs",
3
- "version": "17.0.0-dev.1",
3
+ "version": "17.0.1-dev.1",
4
4
  "description": "Browser-first Crowded Kingdoms SDK with GraphQL, realtime, and local Rust authoring support",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",