@milaboratories/pl-middle-layer 1.69.2 → 1.71.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.
Files changed (46) hide show
  1. package/dist/index.cjs +0 -2
  2. package/dist/index.d.ts +1 -2
  3. package/dist/index.js +1 -2
  4. package/dist/middle_layer/build_stamp.cjs +1 -1
  5. package/dist/middle_layer/build_stamp.js +1 -1
  6. package/dist/middle_layer/middle_layer.cjs +14 -45
  7. package/dist/middle_layer/middle_layer.cjs.map +1 -1
  8. package/dist/middle_layer/middle_layer.d.ts +8 -15
  9. package/dist/middle_layer/middle_layer.d.ts.map +1 -1
  10. package/dist/middle_layer/middle_layer.js +14 -45
  11. package/dist/middle_layer/middle_layer.js.map +1 -1
  12. package/dist/middle_layer/template_list.cjs.map +1 -1
  13. package/dist/middle_layer/template_list.d.ts +1 -6
  14. package/dist/middle_layer/template_list.d.ts.map +1 -1
  15. package/dist/middle_layer/template_list.js.map +1 -1
  16. package/dist/model/index.cjs +0 -2
  17. package/dist/model/index.d.ts +1 -2
  18. package/dist/model/index.js +1 -2
  19. package/dist/model/template_export.cjs +5 -1
  20. package/dist/model/template_export.cjs.map +1 -1
  21. package/dist/model/template_export.d.ts +3 -0
  22. package/dist/model/template_export.d.ts.map +1 -1
  23. package/dist/model/template_export.js +5 -1
  24. package/dist/model/template_export.js.map +1 -1
  25. package/dist/model/template_serializer.cjs +2 -0
  26. package/dist/model/template_serializer.cjs.map +1 -1
  27. package/dist/model/template_serializer.d.ts.map +1 -1
  28. package/dist/model/template_serializer.js +2 -0
  29. package/dist/model/template_serializer.js.map +1 -1
  30. package/package.json +13 -13
  31. package/src/middle_layer/middle_layer.ts +21 -57
  32. package/src/middle_layer/template_list.ts +2 -5
  33. package/src/middle_layer/templates.test.ts +11 -20
  34. package/src/model/index.ts +0 -1
  35. package/src/model/template_export.test.ts +41 -5
  36. package/src/model/template_export.ts +11 -3
  37. package/src/model/template_serializer.test.ts +26 -3
  38. package/src/model/template_serializer.ts +2 -0
  39. package/dist/model/template_share.cjs +0 -42
  40. package/dist/model/template_share.cjs.map +0 -1
  41. package/dist/model/template_share.d.ts +0 -27
  42. package/dist/model/template_share.d.ts.map +0 -1
  43. package/dist/model/template_share.js +0 -42
  44. package/dist/model/template_share.js.map +0 -1
  45. package/src/model/template_share.test.ts +0 -78
  46. package/src/model/template_share.ts +0 -52
package/dist/index.cjs CHANGED
@@ -15,7 +15,6 @@ const require_template_parser = require("./model/template_parser.cjs");
15
15
  const require_template_resolve = require("./model/template_resolve.cjs");
16
16
  const require_template_apply = require("./model/template_apply.cjs");
17
17
  const require_template_serializer = require("./model/template_serializer.cjs");
18
- const require_template_share = require("./model/template_share.cjs");
19
18
  require("./model/index.cjs");
20
19
  const require_project = require("./mutator/project.cjs");
21
20
  const require_data = require("./pool/data.cjs");
@@ -113,7 +112,6 @@ exports.resolveTemplateEntries = require_template_resolve.resolveTemplateEntries
113
112
  exports.runGc = require_template_cache.runGc;
114
113
  exports.stringifyProjectTemplateV1 = require_template_serializer.stringifyProjectTemplateV1;
115
114
  exports.templateBlockPackProvider = require_template_provider.templateBlockPackProvider;
116
- exports.unshareableTemplateEntries = require_template_share.unshareableTemplateEntries;
117
115
  var _platforma_sdk_model = require("@platforma-sdk/model");
118
116
  Object.keys(_platforma_sdk_model).forEach(function(k) {
119
117
  if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
package/dist/index.d.ts CHANGED
@@ -7,7 +7,6 @@ import { KindAwareRegistry, kindCapableRegistryIds, templateBlockPackProvider }
7
7
  import "./block_registry/index.js";
8
8
  import { BlockArgsAuthorKeyPrefix, ProjectCreatedTimestamp, ProjectField, ProjectId, ProjectLastModifiedTimestamp, ProjectListEntry, ProjectMetaKey, ProjectResourceType, ProjectStructureAuthorKey, ProjectStructureKey, SchemaVersionCurrent, SchemaVersionKey } from "./model/project_model.js";
9
9
  import { TemplateExportProblem } from "./model/template_export.js";
10
- import { TemplateShareProblem, unshareableTemplateEntries } from "./model/template_share.js";
11
10
  import { AcceptanceFieldPrefix, EnvelopeAcceptance, EnvelopeData, EnvelopeMode, EnvelopePayload, EnvelopePayloadKind, EnvelopeProject, EnvelopeSchemaVersion, EnvelopeSchemaVersionCurrent, ProjectChangeAction, ProjectFieldUuid, ShareId, ShareProjectsOptions, ShareTemplateOptions, SharedEnvelopeResourceType, SharingDecision, SharingOutboxField, SharingOutboxResourceType, SharingStateField, SharingStateResourceType, acceptanceField, acceptanceFieldLogin, asShareId, canGrantToEveryone, canImpersonate, decisionField, decodeEnvelopeData, envelopeProjectMap, isAcceptanceField, newShareId, normalizeEnvelopeData } from "./model/sharing_model.js";
12
11
  import { CreateProjectFromTemplateOutcome, SaveProjectAsTemplateOutcome, ShareTemplateOutcome, StoredTemplateData, TemplateId, TemplateListEntry, TemplatesField } from "./middle_layer/template_list.js";
13
12
  import { ProjectTemplateExportOutcome, locationOf, stringifyProjectTemplateV1 } from "./model/template_serializer.js";
@@ -36,4 +35,4 @@ export * from "@platforma-sdk/model";
36
35
  export * from "@milaboratories/pl-model-middle-layer";
37
36
  export * from "@milaboratories/pl-deployments";
38
37
  export * from "@milaboratories/pl-client";
39
- export { ACCESS_COUNT_KEY, ACCESS_KEY_PREFIX, AcceptanceFieldPrefix, type AppliedEntry, BlockArgsAuthorKeyPrefix, BlockPackExplicit, type BlockPackProvider, BlockPackRegistry, BlockPackSpecAny, BlockPackSpecPrepared, CachedTemplate, CentralBlockRegistry, CheckNetworkOpts, type CreateProjectFromTemplateOutcome, DefaultDriverKitOpsPaths, DefaultDriverKitOpsSettings, DefaultMiddleLayerOpsPaths, DefaultMiddleLayerOpsSettings, DriverKitOps, DriverKitOpsConstructor, DriverKitOpsPaths, DriverKitOpsSettings, EnvelopeAcceptance, EnvelopeData, EnvelopeMode, EnvelopePayload, EnvelopePayloadKind, EnvelopeProject, EnvelopeSchemaVersion, EnvelopeSchemaVersionCurrent, type ExactResolution, ExplicitTemplate, type FieldType, FrontendFromFolder, FrontendFromFolderData, FrontendFromFolderResourceType, FrontendFromLocalTgz, FrontendFromLocalTgzData, FrontendFromLocalTgzResourceType, FrontendFromUrl, FrontendFromUrlData, FrontendFromUrlResourceType, FrontendSpec, GC_ACCESS_THRESHOLD, GC_MAX_ENTRIES, type InternalLsDriver, KindAwareRegistry, type KindResolution, MiddleLayer, MiddleLayerDebugOptions, MiddleLayerDriverKit, MiddleLayerOps, MiddleLayerOpsConstructor, MiddleLayerOpsPaths, MiddleLayerOpsSettings, type OutgoingShare, type PendingShare, PreparedTemplate, Project, ProjectChangeAction, ProjectCreatedTimestamp, type ProjectField, ProjectFieldUuid, type ProjectId, ProjectLastModifiedTimestamp, type ProjectListEntry, ProjectMetaKey, ProjectResourceType, ProjectStructureAuthorKey, ProjectStructureKey, type ProjectTemplateExportOutcome, ProjectsField, ProjectsResourceType, type ResolvedEntry, type ResourceType, type SaveProjectAsTemplateOutcome, SchemaVersionCurrent, SchemaVersionKey, ShareId, ShareProjectsOptions, ShareTemplateOptions, type ShareTemplateOutcome, SharedEnvelopeResourceType, SharingDecision, SharingOutboxField, SharingOutboxResourceType, SharingStateField, SharingStateResourceType, type StoredTemplateData, type TemplateApplyProblem, type TemplateApplyReport, TemplateCacheFieldName, TemplateCacheStat, TemplateCacheType, TemplateEntryRejected, type TemplateExportProblem, TemplateFromFile, TemplateFromRegistry, type TemplateId, type TemplateListEntry, type TemplateParseOutcome, type TemplateResolveOutcome, type TemplateShareProblem, TemplateSpecAny, TemplateSpecPrepared, TemplatesField, TengoTemplateGet, TengoTemplateGetRegistry, TengoTemplateGetTemplate, TengoTemplateGetTemplateURI, TengoTemplatePack, TengoTemplatePackConvert, TengoTemplatePackConvertTemplate, TengoTemplatePackConvertTemplatePack, type TreeSnapshotMiss, TreeSnapshotOps, type TreeSnapshotStat, V1CentralDevSnapshotRegistry, V1CentralRegistry, V2RegistryProvider, acceptanceField, acceptanceFieldLogin, asShareId, cacheBlockPackTemplate, canGrantToEveryone, canImpersonate, checkNetwork, createRenderTemplate, decisionField, decodeEnvelopeData, deriveGlobalPObjectId, deriveLocalPObjectId, dropTemplateCache, duplicateProject, envelopeProjectMap, flattenTemplateTree, getDevV1PacketMtime, getDevV2PacketMtime, getFromPackV2Mtime, getOrCreateTemplateCache, initDriverKit, initNetworkCheck, invalidateTemplateCacheId, isAcceptanceField, kindCapableRegistryIds, loadTemplate, loadTemplateCached, locationOf, newShareId, normalizeEnvelopeData, parseBlockPackName, parseFinalPObjectCollection, parseProjectTemplateV1Yaml, prepareTemplateSpec, resolveTemplateEntries, runGc, stringifyProjectTemplateV1, templateBlockPackProvider, unshareableTemplateEntries };
38
+ export { ACCESS_COUNT_KEY, ACCESS_KEY_PREFIX, AcceptanceFieldPrefix, type AppliedEntry, BlockArgsAuthorKeyPrefix, BlockPackExplicit, type BlockPackProvider, BlockPackRegistry, BlockPackSpecAny, BlockPackSpecPrepared, CachedTemplate, CentralBlockRegistry, CheckNetworkOpts, type CreateProjectFromTemplateOutcome, DefaultDriverKitOpsPaths, DefaultDriverKitOpsSettings, DefaultMiddleLayerOpsPaths, DefaultMiddleLayerOpsSettings, DriverKitOps, DriverKitOpsConstructor, DriverKitOpsPaths, DriverKitOpsSettings, EnvelopeAcceptance, EnvelopeData, EnvelopeMode, EnvelopePayload, EnvelopePayloadKind, EnvelopeProject, EnvelopeSchemaVersion, EnvelopeSchemaVersionCurrent, type ExactResolution, ExplicitTemplate, type FieldType, FrontendFromFolder, FrontendFromFolderData, FrontendFromFolderResourceType, FrontendFromLocalTgz, FrontendFromLocalTgzData, FrontendFromLocalTgzResourceType, FrontendFromUrl, FrontendFromUrlData, FrontendFromUrlResourceType, FrontendSpec, GC_ACCESS_THRESHOLD, GC_MAX_ENTRIES, type InternalLsDriver, KindAwareRegistry, type KindResolution, MiddleLayer, MiddleLayerDebugOptions, MiddleLayerDriverKit, MiddleLayerOps, MiddleLayerOpsConstructor, MiddleLayerOpsPaths, MiddleLayerOpsSettings, type OutgoingShare, type PendingShare, PreparedTemplate, Project, ProjectChangeAction, ProjectCreatedTimestamp, type ProjectField, ProjectFieldUuid, type ProjectId, ProjectLastModifiedTimestamp, type ProjectListEntry, ProjectMetaKey, ProjectResourceType, ProjectStructureAuthorKey, ProjectStructureKey, type ProjectTemplateExportOutcome, ProjectsField, ProjectsResourceType, type ResolvedEntry, type ResourceType, type SaveProjectAsTemplateOutcome, SchemaVersionCurrent, SchemaVersionKey, ShareId, ShareProjectsOptions, ShareTemplateOptions, type ShareTemplateOutcome, SharedEnvelopeResourceType, SharingDecision, SharingOutboxField, SharingOutboxResourceType, SharingStateField, SharingStateResourceType, type StoredTemplateData, type TemplateApplyProblem, type TemplateApplyReport, TemplateCacheFieldName, TemplateCacheStat, TemplateCacheType, TemplateEntryRejected, type TemplateExportProblem, TemplateFromFile, TemplateFromRegistry, type TemplateId, type TemplateListEntry, type TemplateParseOutcome, type TemplateResolveOutcome, TemplateSpecAny, TemplateSpecPrepared, TemplatesField, TengoTemplateGet, TengoTemplateGetRegistry, TengoTemplateGetTemplate, TengoTemplateGetTemplateURI, TengoTemplatePack, TengoTemplatePackConvert, TengoTemplatePackConvertTemplate, TengoTemplatePackConvertTemplatePack, type TreeSnapshotMiss, TreeSnapshotOps, type TreeSnapshotStat, V1CentralDevSnapshotRegistry, V1CentralRegistry, V2RegistryProvider, acceptanceField, acceptanceFieldLogin, asShareId, cacheBlockPackTemplate, canGrantToEveryone, canImpersonate, checkNetwork, createRenderTemplate, decisionField, decodeEnvelopeData, deriveGlobalPObjectId, deriveLocalPObjectId, dropTemplateCache, duplicateProject, envelopeProjectMap, flattenTemplateTree, getDevV1PacketMtime, getDevV2PacketMtime, getFromPackV2Mtime, getOrCreateTemplateCache, initDriverKit, initNetworkCheck, invalidateTemplateCacheId, isAcceptanceField, kindCapableRegistryIds, loadTemplate, loadTemplateCached, locationOf, newShareId, normalizeEnvelopeData, parseBlockPackName, parseFinalPObjectCollection, parseProjectTemplateV1Yaml, prepareTemplateSpec, resolveTemplateEntries, runGc, stringifyProjectTemplateV1, templateBlockPackProvider };
package/dist/index.js CHANGED
@@ -14,7 +14,6 @@ import { parseProjectTemplateV1Yaml } from "./model/template_parser.js";
14
14
  import { parseBlockPackName, resolveTemplateEntries } from "./model/template_resolve.js";
15
15
  import { TemplateEntryRejected } from "./model/template_apply.js";
16
16
  import { locationOf, stringifyProjectTemplateV1 } from "./model/template_serializer.js";
17
- import { unshareableTemplateEntries } from "./model/template_share.js";
18
17
  import "./model/index.js";
19
18
  import { duplicateProject } from "./mutator/project.js";
20
19
  import { deriveGlobalPObjectId, deriveLocalPObjectId } from "./pool/data.js";
@@ -30,4 +29,4 @@ export * from "@platforma-sdk/model";
30
29
  export * from "@milaboratories/pl-model-middle-layer";
31
30
  export * from "@milaboratories/pl-deployments";
32
31
  export * from "@milaboratories/pl-client";
33
- export { ACCESS_COUNT_KEY, ACCESS_KEY_PREFIX, AcceptanceFieldPrefix, BlockArgsAuthorKeyPrefix, BlockPackRegistry, CentralBlockRegistry, DefaultDriverKitOpsPaths, DefaultDriverKitOpsSettings, DefaultMiddleLayerOpsPaths, DefaultMiddleLayerOpsSettings, EnvelopeSchemaVersionCurrent, FrontendFromFolderResourceType, FrontendFromLocalTgzResourceType, FrontendFromUrlResourceType, GC_ACCESS_THRESHOLD, GC_MAX_ENTRIES, MiddleLayer, Project, ProjectCreatedTimestamp, ProjectLastModifiedTimestamp, ProjectMetaKey, ProjectResourceType, ProjectStructureAuthorKey, ProjectStructureKey, ProjectsField, ProjectsResourceType, SchemaVersionCurrent, SchemaVersionKey, SharedEnvelopeResourceType, SharingOutboxField, SharingOutboxResourceType, SharingStateField, SharingStateResourceType, TemplateCacheFieldName, TemplateCacheType, TemplateEntryRejected, TemplatesField, TengoTemplateGet, TengoTemplateGetRegistry, TengoTemplateGetTemplate, TengoTemplateGetTemplateURI, TengoTemplatePack, TengoTemplatePackConvert, TengoTemplatePackConvertTemplate, TengoTemplatePackConvertTemplatePack, V1CentralDevSnapshotRegistry, V1CentralRegistry, V2RegistryProvider, acceptanceField, acceptanceFieldLogin, asShareId, cacheBlockPackTemplate, canGrantToEveryone, canImpersonate, checkNetwork, createRenderTemplate, decisionField, decodeEnvelopeData, deriveGlobalPObjectId, deriveLocalPObjectId, dropTemplateCache, duplicateProject, envelopeProjectMap, flattenTemplateTree, getDevV1PacketMtime, getDevV2PacketMtime, getFromPackV2Mtime, getOrCreateTemplateCache, initDriverKit, initNetworkCheck, invalidateTemplateCacheId, isAcceptanceField, kindCapableRegistryIds, loadTemplate, loadTemplateCached, locationOf, newShareId, normalizeEnvelopeData, parseBlockPackName, parseFinalPObjectCollection, parseProjectTemplateV1Yaml, prepareTemplateSpec, resolveTemplateEntries, runGc, stringifyProjectTemplateV1, templateBlockPackProvider, unshareableTemplateEntries };
32
+ export { ACCESS_COUNT_KEY, ACCESS_KEY_PREFIX, AcceptanceFieldPrefix, BlockArgsAuthorKeyPrefix, BlockPackRegistry, CentralBlockRegistry, DefaultDriverKitOpsPaths, DefaultDriverKitOpsSettings, DefaultMiddleLayerOpsPaths, DefaultMiddleLayerOpsSettings, EnvelopeSchemaVersionCurrent, FrontendFromFolderResourceType, FrontendFromLocalTgzResourceType, FrontendFromUrlResourceType, GC_ACCESS_THRESHOLD, GC_MAX_ENTRIES, MiddleLayer, Project, ProjectCreatedTimestamp, ProjectLastModifiedTimestamp, ProjectMetaKey, ProjectResourceType, ProjectStructureAuthorKey, ProjectStructureKey, ProjectsField, ProjectsResourceType, SchemaVersionCurrent, SchemaVersionKey, SharedEnvelopeResourceType, SharingOutboxField, SharingOutboxResourceType, SharingStateField, SharingStateResourceType, TemplateCacheFieldName, TemplateCacheType, TemplateEntryRejected, TemplatesField, TengoTemplateGet, TengoTemplateGetRegistry, TengoTemplateGetTemplate, TengoTemplateGetTemplateURI, TengoTemplatePack, TengoTemplatePackConvert, TengoTemplatePackConvertTemplate, TengoTemplatePackConvertTemplatePack, V1CentralDevSnapshotRegistry, V1CentralRegistry, V2RegistryProvider, acceptanceField, acceptanceFieldLogin, asShareId, cacheBlockPackTemplate, canGrantToEveryone, canImpersonate, checkNetwork, createRenderTemplate, decisionField, decodeEnvelopeData, deriveGlobalPObjectId, deriveLocalPObjectId, dropTemplateCache, duplicateProject, envelopeProjectMap, flattenTemplateTree, getDevV1PacketMtime, getDevV2PacketMtime, getFromPackV2Mtime, getOrCreateTemplateCache, initDriverKit, initNetworkCheck, invalidateTemplateCacheId, isAcceptanceField, kindCapableRegistryIds, loadTemplate, loadTemplateCached, locationOf, newShareId, normalizeEnvelopeData, parseBlockPackName, parseFinalPObjectCollection, parseProjectTemplateV1Yaml, prepareTemplateSpec, resolveTemplateEntries, runGc, stringifyProjectTemplateV1, templateBlockPackProvider };
@@ -1,7 +1,7 @@
1
1
  //#region src/middle_layer/build_stamp.ts
2
2
  function injectedStamp() {
3
3
  try {
4
- return "2f8b0ce483fa-dirty-1788868576066";
4
+ return "33e84565e1cd-dirty-1788882771138";
5
5
  } catch {
6
6
  return;
7
7
  }
@@ -1,7 +1,7 @@
1
1
  //#region src/middle_layer/build_stamp.ts
2
2
  function injectedStamp() {
3
3
  try {
4
- return "2f8b0ce483fa-dirty-1788868576042";
4
+ return "33e84565e1cd-dirty-1788882771115";
5
5
  } catch {
6
6
  return;
7
7
  }
@@ -7,7 +7,6 @@ const require_template = require("../mutator/template.cjs");
7
7
  const require_sharing_model = require("../model/sharing_model.cjs");
8
8
  const require_template_resolve = require("../model/template_resolve.cjs");
9
9
  const require_template_apply = require("../model/template_apply.cjs");
10
- const require_template_share = require("../model/template_share.cjs");
11
10
  const require_block_pack = require("../mutator/block-pack/block_pack.cjs");
12
11
  const require_index$1 = require("../debug/index.cjs");
13
12
  const require_project = require("../mutator/project.cjs");
@@ -653,25 +652,22 @@ var MiddleLayer = class MiddleLayer {
653
652
  * The cost of that is the donor's receipt: nobody can write an acceptance onto a read-only
654
653
  * envelope, so a template share never reports who accepted it.
655
654
  *
656
- * A template holding a block installed from a folder on this machine is refused rather than sent,
657
- * with every offending entry named. {@link checkTemplateShareable} answers the same question
658
- * without attempting the share, so a UI can state it on the template itself.
655
+ * Nothing about the document is checked: a stored template is shareable by virtue of existing.
656
+ * An entry the recipient cannot resolve a block installed from a folder on the sender's
657
+ * machine, say is theirs to see when they preview or apply it, where every unresolvable entry
658
+ * is named anyway.
659
659
  *
660
660
  * @param id template to share
661
661
  * @param options recipients XOR everyone, plus the title recipients see
662
662
  */
663
663
  async shareTemplate(id, options) {
664
- const loaded = await this.loadShareableTemplate(id);
665
- if (!loaded.ok) return {
666
- ok: false,
667
- problems: loaded.problems
668
- };
664
+ const template = await this.loadTemplateForShare(id);
669
665
  const everyone = "everyone" in options;
670
666
  const sender = this.currentUserLogin ?? "";
671
667
  const expiresAt = everyone ? null : Date.now() + this.env.ops.envelopeTtlMs;
672
668
  let shareId;
673
669
  await this.pl.withWriteTx("MLShareTemplate", async (tx) => {
674
- const { envelope, data } = require_sharing.buildTemplateShareEnvelope(tx, this.sharingOutboxResourceId, loaded.template, {
670
+ const { envelope, data } = require_sharing.buildTemplateShareEnvelope(tx, this.sharingOutboxResourceId, template, {
675
671
  sender,
676
672
  title: options.title,
677
673
  expiresAt
@@ -681,24 +677,13 @@ var MiddleLayer = class MiddleLayer {
681
677
  await tx.commit();
682
678
  });
683
679
  await this.sharingOutboxTree.refreshState();
684
- return {
685
- ok: true,
686
- shareId
687
- };
688
- }
689
- /**
690
- * Every entry of a stored template that stands in the way of sharing it, empty for a template
691
- * that can be shared. Reads the template and nothing else, so a UI can state the refusal on the
692
- * template itself instead of only when the user tries to share it.
693
- */
694
- async checkTemplateShareable(id) {
695
- return require_template_share.unshareableTemplateEntries((await this.getTemplateData(id)).document);
680
+ return { shareId };
696
681
  }
697
- /** The document and the label of a template that may be shared, or every entry that stops it.
698
- * The label is what the recipient's own list will show, so it travels with the document. */
699
- async loadShareableTemplate(id) {
682
+ /** The document and the label of a template about to be shared. The label is what the
683
+ * recipient's own list will show, so it travels with the document. */
684
+ async loadTemplateForShare(id) {
700
685
  const rid = await this.resolveTemplateId(id);
701
- const template = await this.pl.withReadTx("MLReadTemplateForShare", async (tx) => {
686
+ return await this.pl.withReadTx("MLReadTemplateForShare", async (tx) => {
702
687
  const rd = await tx.getResourceData(rid, false);
703
688
  if (rd.data === void 0) throw new Error(`Template ${id} carries no document.`);
704
689
  return {
@@ -706,15 +691,6 @@ var MiddleLayer = class MiddleLayer {
706
691
  label: await tx.getKValueJson(rid, require_template_list.TemplateLabelKey)
707
692
  };
708
693
  });
709
- const problems = require_template_share.unshareableTemplateEntries(template.document);
710
- if (problems.length > 0) return {
711
- ok: false,
712
- problems
713
- };
714
- return {
715
- ok: true,
716
- template
717
- };
718
694
  }
719
695
  /**
720
696
  * Changes a share in place (same {@link ShareId}), in one write transaction: re-snapshots live
@@ -735,12 +711,10 @@ var MiddleLayer = class MiddleLayer {
735
711
  * `opts.templateId` is required for, and only used by, a share that carries a template: a stored
736
712
  * template is immutable, so an improved one is a different template and the share cannot re-read
737
713
  * the one it started from — the caller names the new target. Every other option means the same
738
- * thing for both kinds of share. Sharing the named template must be permitted (see
739
- * {@link checkTemplateShareable}) or this throws.
714
+ * thing for both kinds of share.
740
715
  */
741
716
  async changeShare(shareId, opts = {}) {
742
- const target = opts.templateId === void 0 ? void 0 : await this.loadShareableTemplate(opts.templateId);
743
- if (target !== void 0 && !target.ok) throw new Error(`changeShare: template ${opts.templateId} cannot be shared: ${describeShareProblems(target.problems)}`);
717
+ const target = opts.templateId === void 0 ? void 0 : await this.loadTemplateForShare(opts.templateId);
744
718
  await this.pl.withWriteTx("MLChangeShare", async (tx) => {
745
719
  const old = await this.resolveOutboxEnvelope(tx, shareId);
746
720
  if (old === void 0) throw new Error(`changeShare: no live share with id ${shareId} in the outbox.`);
@@ -752,7 +726,7 @@ var MiddleLayer = class MiddleLayer {
752
726
  if (target === void 0) throw new Error(`changeShare: share ${shareId} carries a template, so it needs an explicit target template — a stored template never changes, so an improved one is a different template.`);
753
727
  const recipients = everyone ? [] : opts.recipients ?? priorRecipients;
754
728
  tx.removeField((0, _milaboratories_pl_client.field)(this.sharingOutboxResourceId, old.fieldName));
755
- const { envelope } = require_sharing.buildTemplateShareEnvelope(tx, this.sharingOutboxResourceId, target.template, {
729
+ const { envelope } = require_sharing.buildTemplateShareEnvelope(tx, this.sharingOutboxResourceId, target, {
756
730
  sender: self,
757
731
  title: opts.title === void 0 ? old.data.title : opts.title.trim(),
758
732
  expiresAt: everyone ? null : Date.now() + this.env.ops.envelopeTtlMs,
@@ -1244,11 +1218,6 @@ var MiddleLayer = class MiddleLayer {
1244
1218
  return new MiddleLayer(env, driverKit, driverKit.signer, projects, templates, sharingOutbox, sharingState, openedProjects, projectListTC.tree, templateListTC.tree, outgoingTC.tree, sharingStateTree, pendingSharesTree, v2RegistryProvider, projectListTC.computable, templateListTC.computable, outgoingTC.computable, pendingShares, liveEnvelopes);
1245
1219
  }
1246
1220
  };
1247
- /** Refusal reasons as one line, each naming the entry it belongs to, so a throw that escapes to a
1248
- * log still says which block stands in the way. */
1249
- function describeShareProblems(problems) {
1250
- return problems.map((p) => `${p.entryId}: ${p.error}`).join("; ");
1251
- }
1252
1221
  //#endregion
1253
1222
  exports.MiddleLayer = MiddleLayer;
1254
1223