@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.
- package/dist/index.cjs +0 -2
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -2
- package/dist/middle_layer/build_stamp.cjs +1 -1
- package/dist/middle_layer/build_stamp.js +1 -1
- package/dist/middle_layer/middle_layer.cjs +14 -45
- package/dist/middle_layer/middle_layer.cjs.map +1 -1
- package/dist/middle_layer/middle_layer.d.ts +8 -15
- package/dist/middle_layer/middle_layer.d.ts.map +1 -1
- package/dist/middle_layer/middle_layer.js +14 -45
- package/dist/middle_layer/middle_layer.js.map +1 -1
- package/dist/middle_layer/template_list.cjs.map +1 -1
- package/dist/middle_layer/template_list.d.ts +1 -6
- package/dist/middle_layer/template_list.d.ts.map +1 -1
- package/dist/middle_layer/template_list.js.map +1 -1
- package/dist/model/index.cjs +0 -2
- package/dist/model/index.d.ts +1 -2
- package/dist/model/index.js +1 -2
- package/dist/model/template_export.cjs +5 -1
- package/dist/model/template_export.cjs.map +1 -1
- package/dist/model/template_export.d.ts +3 -0
- package/dist/model/template_export.d.ts.map +1 -1
- package/dist/model/template_export.js +5 -1
- package/dist/model/template_export.js.map +1 -1
- package/dist/model/template_serializer.cjs +2 -0
- package/dist/model/template_serializer.cjs.map +1 -1
- package/dist/model/template_serializer.d.ts.map +1 -1
- package/dist/model/template_serializer.js +2 -0
- package/dist/model/template_serializer.js.map +1 -1
- package/package.json +13 -13
- package/src/middle_layer/middle_layer.ts +21 -57
- package/src/middle_layer/template_list.ts +2 -5
- package/src/middle_layer/templates.test.ts +11 -20
- package/src/model/index.ts +0 -1
- package/src/model/template_export.test.ts +41 -5
- package/src/model/template_export.ts +11 -3
- package/src/model/template_serializer.test.ts +26 -3
- package/src/model/template_serializer.ts +2 -0
- package/dist/model/template_share.cjs +0 -42
- package/dist/model/template_share.cjs.map +0 -1
- package/dist/model/template_share.d.ts +0 -27
- package/dist/model/template_share.d.ts.map +0 -1
- package/dist/model/template_share.js +0 -42
- package/dist/model/template_share.js.map +0 -1
- package/src/model/template_share.test.ts +0 -78
- 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,
|
|
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
|
|
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 };
|
|
@@ -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
|
-
*
|
|
657
|
-
*
|
|
658
|
-
*
|
|
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
|
|
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,
|
|
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
|
|
698
|
-
*
|
|
699
|
-
async
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|