@okf/ootils 1.44.2 → 1.46.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/browser.d.mts +103 -13
- package/dist/browser.d.ts +103 -13
- package/dist/browser.js +71 -1
- package/dist/browser.mjs +69 -1
- package/dist/node.d.mts +106 -13
- package/dist/node.d.ts +106 -13
- package/dist/node.js +80 -1
- package/dist/node.mjs +75 -1
- package/dist/universal.d.mts +103 -13
- package/dist/universal.d.ts +103 -13
- package/dist/universal.js +71 -1
- package/dist/universal.mjs +69 -1
- package/package.json +1 -1
package/dist/universal.d.ts
CHANGED
|
@@ -767,7 +767,7 @@ declare namespace BASE_BULLMQ_CONFIG {
|
|
|
767
767
|
}
|
|
768
768
|
export { workerConfig_11 as workerConfig };
|
|
769
769
|
}
|
|
770
|
-
namespace
|
|
770
|
+
namespace CONTENT_DOC_COLAB_SESH_SIDE_EFFECTS_QUEUE {
|
|
771
771
|
let id_12: string;
|
|
772
772
|
export { id_12 as id };
|
|
773
773
|
export namespace queueConfig_12 {
|
|
@@ -807,7 +807,7 @@ declare namespace BASE_BULLMQ_CONFIG {
|
|
|
807
807
|
}
|
|
808
808
|
export { workerConfig_12 as workerConfig };
|
|
809
809
|
}
|
|
810
|
-
namespace
|
|
810
|
+
namespace SARVAM_TRANSCRIPTION_QUEUE {
|
|
811
811
|
let id_13: string;
|
|
812
812
|
export { id_13 as id };
|
|
813
813
|
export namespace queueConfig_13 {
|
|
@@ -847,7 +847,7 @@ declare namespace BASE_BULLMQ_CONFIG {
|
|
|
847
847
|
}
|
|
848
848
|
export { workerConfig_13 as workerConfig };
|
|
849
849
|
}
|
|
850
|
-
namespace
|
|
850
|
+
namespace INTERCOM_CONVERSATIONS_QUEUE {
|
|
851
851
|
let id_14: string;
|
|
852
852
|
export { id_14 as id };
|
|
853
853
|
export namespace queueConfig_14 {
|
|
@@ -887,7 +887,7 @@ declare namespace BASE_BULLMQ_CONFIG {
|
|
|
887
887
|
}
|
|
888
888
|
export { workerConfig_14 as workerConfig };
|
|
889
889
|
}
|
|
890
|
-
namespace
|
|
890
|
+
namespace TAG_SYNC_PLAN_QUEUE {
|
|
891
891
|
let id_15: string;
|
|
892
892
|
export { id_15 as id };
|
|
893
893
|
export namespace queueConfig_15 {
|
|
@@ -927,11 +927,13 @@ declare namespace BASE_BULLMQ_CONFIG {
|
|
|
927
927
|
}
|
|
928
928
|
export { workerConfig_15 as workerConfig };
|
|
929
929
|
}
|
|
930
|
-
namespace
|
|
930
|
+
namespace TAG_SYNC_BATCH_QUEUE {
|
|
931
931
|
let id_16: string;
|
|
932
932
|
export { id_16 as id };
|
|
933
933
|
export namespace queueConfig_16 {
|
|
934
934
|
export namespace defaultJobOptions_16 {
|
|
935
|
+
let attempts_16: number;
|
|
936
|
+
export { attempts_16 as attempts };
|
|
935
937
|
export namespace backoff_16 {
|
|
936
938
|
let type_16: string;
|
|
937
939
|
export { type_16 as type };
|
|
@@ -939,8 +941,6 @@ declare namespace BASE_BULLMQ_CONFIG {
|
|
|
939
941
|
export { delay_16 as delay };
|
|
940
942
|
}
|
|
941
943
|
export { backoff_16 as backoff };
|
|
942
|
-
let attempts_16: number;
|
|
943
|
-
export { attempts_16 as attempts };
|
|
944
944
|
let removeOnComplete_16: number;
|
|
945
945
|
export { removeOnComplete_16 as removeOnComplete };
|
|
946
946
|
let removeOnFail_16: number;
|
|
@@ -967,13 +967,11 @@ declare namespace BASE_BULLMQ_CONFIG {
|
|
|
967
967
|
}
|
|
968
968
|
export { workerConfig_16 as workerConfig };
|
|
969
969
|
}
|
|
970
|
-
namespace
|
|
970
|
+
namespace SCHEDULED_EXTERNAL_SYNC_QUEUE {
|
|
971
971
|
let id_17: string;
|
|
972
972
|
export { id_17 as id };
|
|
973
973
|
export namespace queueConfig_17 {
|
|
974
974
|
export namespace defaultJobOptions_17 {
|
|
975
|
-
let attempts_17: number;
|
|
976
|
-
export { attempts_17 as attempts };
|
|
977
975
|
export namespace backoff_17 {
|
|
978
976
|
let type_17: string;
|
|
979
977
|
export { type_17 as type };
|
|
@@ -981,8 +979,8 @@ declare namespace BASE_BULLMQ_CONFIG {
|
|
|
981
979
|
export { delay_17 as delay };
|
|
982
980
|
}
|
|
983
981
|
export { backoff_17 as backoff };
|
|
984
|
-
let
|
|
985
|
-
export {
|
|
982
|
+
let attempts_17: number;
|
|
983
|
+
export { attempts_17 as attempts };
|
|
986
984
|
let removeOnComplete_17: number;
|
|
987
985
|
export { removeOnComplete_17 as removeOnComplete };
|
|
988
986
|
let removeOnFail_17: number;
|
|
@@ -1009,6 +1007,48 @@ declare namespace BASE_BULLMQ_CONFIG {
|
|
|
1009
1007
|
}
|
|
1010
1008
|
export { workerConfig_17 as workerConfig };
|
|
1011
1009
|
}
|
|
1010
|
+
namespace REINDEX_QUEUE {
|
|
1011
|
+
let id_18: string;
|
|
1012
|
+
export { id_18 as id };
|
|
1013
|
+
export namespace queueConfig_18 {
|
|
1014
|
+
export namespace defaultJobOptions_18 {
|
|
1015
|
+
let attempts_18: number;
|
|
1016
|
+
export { attempts_18 as attempts };
|
|
1017
|
+
export namespace backoff_18 {
|
|
1018
|
+
let type_18: string;
|
|
1019
|
+
export { type_18 as type };
|
|
1020
|
+
let delay_18: number;
|
|
1021
|
+
export { delay_18 as delay };
|
|
1022
|
+
}
|
|
1023
|
+
export { backoff_18 as backoff };
|
|
1024
|
+
let delay_19: number;
|
|
1025
|
+
export { delay_19 as delay };
|
|
1026
|
+
let removeOnComplete_18: number;
|
|
1027
|
+
export { removeOnComplete_18 as removeOnComplete };
|
|
1028
|
+
let removeOnFail_18: number;
|
|
1029
|
+
export { removeOnFail_18 as removeOnFail };
|
|
1030
|
+
}
|
|
1031
|
+
export { defaultJobOptions_18 as defaultJobOptions };
|
|
1032
|
+
export namespace streams_18 {
|
|
1033
|
+
export namespace events_18 {
|
|
1034
|
+
let maxLen_18: number;
|
|
1035
|
+
export { maxLen_18 as maxLen };
|
|
1036
|
+
}
|
|
1037
|
+
export { events_18 as events };
|
|
1038
|
+
}
|
|
1039
|
+
export { streams_18 as streams };
|
|
1040
|
+
}
|
|
1041
|
+
export { queueConfig_18 as queueConfig };
|
|
1042
|
+
export namespace workerConfig_18 {
|
|
1043
|
+
let concurrency_18: number;
|
|
1044
|
+
export { concurrency_18 as concurrency };
|
|
1045
|
+
let lockDuration_18: number;
|
|
1046
|
+
export { lockDuration_18 as lockDuration };
|
|
1047
|
+
let maxStalledCount_18: number;
|
|
1048
|
+
export { maxStalledCount_18 as maxStalledCount };
|
|
1049
|
+
}
|
|
1050
|
+
export { workerConfig_18 as workerConfig };
|
|
1051
|
+
}
|
|
1012
1052
|
}
|
|
1013
1053
|
|
|
1014
1054
|
interface PlatformContextContentItem {
|
|
@@ -1054,6 +1094,24 @@ interface MergeParams {
|
|
|
1054
1094
|
*/
|
|
1055
1095
|
declare const mergeAnnoDataIntoAnnotationsTags: ({ prevObj, newLexValue, thisBlockValuePath, author, }: MergeParams) => any;
|
|
1056
1096
|
|
|
1097
|
+
/**
|
|
1098
|
+
* Is this tpl block a collab-editable field? ONE definition, used by BOTH
|
|
1099
|
+
* sides so they can never disagree:
|
|
1100
|
+
* - okf-sub loadContentDocument builds the server-side editable allowlist
|
|
1101
|
+
* from it (the flush drops writes outside that list)
|
|
1102
|
+
* - okf-fe ViewBlockGenerator derives per-block editability from it
|
|
1103
|
+
*
|
|
1104
|
+
* Editable = binds to a real content path. Exclusions:
|
|
1105
|
+
* - no valuePath (display-only blocks) / the odd "." valuePath some legacy
|
|
1106
|
+
* tpls carry (see getTypesForSchemaFromTpl, which skips it too)
|
|
1107
|
+
* - kp_-prefixed segments (publish status, lifecycle dates, author refs —
|
|
1108
|
+
* machinery, not content). NOTE: non-block system fields (lastActivity,
|
|
1109
|
+
* tagId...) are excluded by construction anyway — they're never tpl
|
|
1110
|
+
* blocks; this regex only guards block-defined kp_ paths.
|
|
1111
|
+
*/
|
|
1112
|
+
declare const COLLAB_SYSTEM_PATH_REGEX: RegExp;
|
|
1113
|
+
declare function isCollabEditableBlock(block: any): boolean;
|
|
1114
|
+
|
|
1057
1115
|
declare const parseSpecialConfigSyntax: ({ config, content, returnUndefinedIfReplacementWordNotFound }: {
|
|
1058
1116
|
config: string | object;
|
|
1059
1117
|
content: Record<string, any>;
|
|
@@ -1276,6 +1334,21 @@ declare const processAuthorAndCommonFilters: (allTpls: any[], filterScopes: stri
|
|
|
1276
1334
|
filterType: string;
|
|
1277
1335
|
valuePath: string;
|
|
1278
1336
|
};
|
|
1337
|
+
} | {
|
|
1338
|
+
filterId: string;
|
|
1339
|
+
blockId: string;
|
|
1340
|
+
display: string;
|
|
1341
|
+
value: string;
|
|
1342
|
+
filterKey: string | undefined;
|
|
1343
|
+
source: {
|
|
1344
|
+
filterType: string;
|
|
1345
|
+
scope: string;
|
|
1346
|
+
profileTypes?: undefined;
|
|
1347
|
+
};
|
|
1348
|
+
target: {
|
|
1349
|
+
filterType: string;
|
|
1350
|
+
valuePath: string;
|
|
1351
|
+
};
|
|
1279
1352
|
})[];
|
|
1280
1353
|
}[];
|
|
1281
1354
|
};
|
|
@@ -1405,6 +1478,7 @@ declare const _self_managed_buildDocHierarchyConfig: ({ combinedDocumentBlocks,
|
|
|
1405
1478
|
filters: any[];
|
|
1406
1479
|
rollups: any[];
|
|
1407
1480
|
rollupDisplayMap: Record<string, string>;
|
|
1481
|
+
childByParentId: Record<string, any>;
|
|
1408
1482
|
}[];
|
|
1409
1483
|
};
|
|
1410
1484
|
target: {
|
|
@@ -1565,6 +1639,7 @@ declare const autoGenFilterConfigsFromTpl: ({ selectedTpls, allTpls, filterScope
|
|
|
1565
1639
|
filters: any[];
|
|
1566
1640
|
rollups: any[];
|
|
1567
1641
|
rollupDisplayMap: Record<string, string>;
|
|
1642
|
+
childByParentId: Record<string, any>;
|
|
1568
1643
|
}[];
|
|
1569
1644
|
};
|
|
1570
1645
|
target: {
|
|
@@ -1631,6 +1706,21 @@ declare const autoGenFilterConfigsFromTpl: ({ selectedTpls, allTpls, filterScope
|
|
|
1631
1706
|
filterType: string;
|
|
1632
1707
|
valuePath: string;
|
|
1633
1708
|
};
|
|
1709
|
+
} | {
|
|
1710
|
+
filterId: string;
|
|
1711
|
+
blockId: string;
|
|
1712
|
+
display: string;
|
|
1713
|
+
value: string;
|
|
1714
|
+
filterKey: string | undefined;
|
|
1715
|
+
source: {
|
|
1716
|
+
filterType: string;
|
|
1717
|
+
scope: string;
|
|
1718
|
+
profileTypes?: undefined;
|
|
1719
|
+
};
|
|
1720
|
+
target: {
|
|
1721
|
+
filterType: string;
|
|
1722
|
+
valuePath: string;
|
|
1723
|
+
};
|
|
1634
1724
|
})[];
|
|
1635
1725
|
})[];
|
|
1636
1726
|
} | null)[];
|
|
@@ -1970,4 +2060,4 @@ declare class BlockRegistry {
|
|
|
1970
2060
|
/** Singleton instance — the one registry shared across the app. */
|
|
1971
2061
|
declare const blockRegistry: BlockRegistry;
|
|
1972
2062
|
|
|
1973
|
-
export { BASE_BULLMQ_CONFIG, type BlockCapabilities, type BlockDef, BlockRegistry, CHUNKING_PRESETS, ELASTIC_MAPPING_PRESETS, FILTER_IDS, MONGO_SCHEMA_PRESETS, TEMP_removeDuplicateFilters, UI_CONTENT, _self_managed_buildAnnoHierarchyConfig, _self_managed_buildDocHierarchyConfig, _self_managed_getFixedAnnoRollupBlocks, _self_managed_getFixedAnnoTagBlock, autoGenFilterConfigsFromTpl, blockRegistry, buildFilterConfigurations, collectMarkIdsInOrder, compareAndGroupBlocks, deleteVal, extractAllBlocksFromTpl, extractAndOrganizeBlocks, genCleanCamelCaseId, genTagId, generateFilterKey, getAnnoFilterBucketKey, getFilterKeyForBlock, getPlatformContextContent, getRollupPossibilities, getRoutePathToContentTypeLanding, getRoutePathToEditContent, getRoutePathToModerateContent, getRoutePathToMyContent, getRoutePathToPublishedContent, getRoutePathToReviewDashboard, getRoutePathToTCI, getRoutePathToTagCategoryLanding, getVal, isTplAnnotationEnabled, mergeAnnoDataIntoAnnotationsTags, parseSpecialConfigSyntax, plainTextToLexical, processAuthorAndCommonFilters, _recursExtractBlocks as recursivelyExtractBlocks, segrigateDocs, setVal, toArray };
|
|
2063
|
+
export { BASE_BULLMQ_CONFIG, type BlockCapabilities, type BlockDef, BlockRegistry, CHUNKING_PRESETS, COLLAB_SYSTEM_PATH_REGEX, ELASTIC_MAPPING_PRESETS, FILTER_IDS, MONGO_SCHEMA_PRESETS, TEMP_removeDuplicateFilters, UI_CONTENT, _self_managed_buildAnnoHierarchyConfig, _self_managed_buildDocHierarchyConfig, _self_managed_getFixedAnnoRollupBlocks, _self_managed_getFixedAnnoTagBlock, autoGenFilterConfigsFromTpl, blockRegistry, buildFilterConfigurations, collectMarkIdsInOrder, compareAndGroupBlocks, deleteVal, extractAllBlocksFromTpl, extractAndOrganizeBlocks, genCleanCamelCaseId, genTagId, generateFilterKey, getAnnoFilterBucketKey, getFilterKeyForBlock, getPlatformContextContent, getRollupPossibilities, getRoutePathToContentTypeLanding, getRoutePathToEditContent, getRoutePathToModerateContent, getRoutePathToMyContent, getRoutePathToPublishedContent, getRoutePathToReviewDashboard, getRoutePathToTCI, getRoutePathToTagCategoryLanding, getVal, isCollabEditableBlock, isTplAnnotationEnabled, mergeAnnoDataIntoAnnotationsTags, parseSpecialConfigSyntax, plainTextToLexical, processAuthorAndCommonFilters, _recursExtractBlocks as recursivelyExtractBlocks, segrigateDocs, setVal, toArray };
|
package/dist/universal.js
CHANGED
|
@@ -23,6 +23,7 @@ __export(universal_exports, {
|
|
|
23
23
|
BASE_BULLMQ_CONFIG: () => BASE_BULLMQ_CONFIG,
|
|
24
24
|
BlockRegistry: () => BlockRegistry,
|
|
25
25
|
CHUNKING_PRESETS: () => CHUNKING_PRESETS,
|
|
26
|
+
COLLAB_SYSTEM_PATH_REGEX: () => COLLAB_SYSTEM_PATH_REGEX,
|
|
26
27
|
ELASTIC_MAPPING_PRESETS: () => ELASTIC_MAPPING_PRESETS,
|
|
27
28
|
FILTER_IDS: () => FILTER_IDS,
|
|
28
29
|
MONGO_SCHEMA_PRESETS: () => MONGO_SCHEMA_PRESETS,
|
|
@@ -56,6 +57,7 @@ __export(universal_exports, {
|
|
|
56
57
|
getRoutePathToTCI: () => getRoutePathToTCI,
|
|
57
58
|
getRoutePathToTagCategoryLanding: () => getRoutePathToTagCategoryLanding,
|
|
58
59
|
getVal: () => getVal,
|
|
60
|
+
isCollabEditableBlock: () => isCollabEditableBlock,
|
|
59
61
|
isTplAnnotationEnabled: () => isTplAnnotationEnabled,
|
|
60
62
|
mergeAnnoDataIntoAnnotationsTags: () => mergeAnnoDataIntoAnnotationsTags,
|
|
61
63
|
parseSpecialConfigSyntax: () => parseSpecialConfigSyntax,
|
|
@@ -1215,6 +1217,43 @@ var BASE_BULLMQ_CONFIG = {
|
|
|
1215
1217
|
maxStalledCount: 3
|
|
1216
1218
|
}
|
|
1217
1219
|
},
|
|
1220
|
+
/**
|
|
1221
|
+
* Collab-editing session-boundary side effects for CONTENT docs.
|
|
1222
|
+
* Enqueued by okf-sub's collab service when a field lock releases / the
|
|
1223
|
+
* last editor leaves a live doc; the worker calls okf-be's internal
|
|
1224
|
+
* contentDocCollabSessionSideEffects endpoint (tag-rename sync, chunks/annos
|
|
1225
|
+
* producers, Elastic sync, cache invalidations, analytics).
|
|
1226
|
+
* Queued (rather than fire-and-forget HTTP from the boundary) for retry
|
|
1227
|
+
* ability + Bullboard trackability — a failed boundary would otherwise be
|
|
1228
|
+
* silently lost when the doc unloads. Steps are idempotent except
|
|
1229
|
+
* analytics, which runs LAST so retries only duplicate it on a
|
|
1230
|
+
* lost-response network edge.
|
|
1231
|
+
*/
|
|
1232
|
+
CONTENT_DOC_COLAB_SESH_SIDE_EFFECTS_QUEUE: {
|
|
1233
|
+
id: "content-doc-colab-sesh-side-effects-queue",
|
|
1234
|
+
queueConfig: {
|
|
1235
|
+
defaultJobOptions: {
|
|
1236
|
+
attempts: 3,
|
|
1237
|
+
backoff: {
|
|
1238
|
+
type: "exponential",
|
|
1239
|
+
delay: 5e3
|
|
1240
|
+
},
|
|
1241
|
+
removeOnComplete: 50,
|
|
1242
|
+
removeOnFail: 200
|
|
1243
|
+
},
|
|
1244
|
+
streams: {
|
|
1245
|
+
events: {
|
|
1246
|
+
maxLen: 1e3
|
|
1247
|
+
// SockerIOService QueueEvents tails this stream for progress tracking; trimming at 10 dropped completion events mid-burst (stuck FE tracker). Entries are small now that job returnvalues are trimmed, so 1000 is cheap.
|
|
1248
|
+
}
|
|
1249
|
+
}
|
|
1250
|
+
},
|
|
1251
|
+
workerConfig: {
|
|
1252
|
+
concurrency: 10,
|
|
1253
|
+
lockDuration: 9e4,
|
|
1254
|
+
maxStalledCount: 3
|
|
1255
|
+
}
|
|
1256
|
+
},
|
|
1218
1257
|
SARVAM_TRANSCRIPTION_QUEUE: {
|
|
1219
1258
|
id: "sarvam-transcription-queue",
|
|
1220
1259
|
queueConfig: {
|
|
@@ -1491,6 +1530,10 @@ var mergeAnnoDataIntoAnnotationsTags = ({
|
|
|
1491
1530
|
return newConsolidated;
|
|
1492
1531
|
};
|
|
1493
1532
|
|
|
1533
|
+
// src/collab/isCollabEditableBlock.js
|
|
1534
|
+
var COLLAB_SYSTEM_PATH_REGEX = /(^|\.)kp_/;
|
|
1535
|
+
var isCollabEditableBlock = (block) => !!block?.valuePath && block.valuePath !== "." && !COLLAB_SYSTEM_PATH_REGEX.test(block.valuePath);
|
|
1536
|
+
|
|
1494
1537
|
// src/utils/parseSpecialConfigSyntax.ts
|
|
1495
1538
|
var parseSpecialConfigSyntax = ({
|
|
1496
1539
|
config,
|
|
@@ -2281,6 +2324,24 @@ var processAuthorAndCommonFilters = (allTpls, filterScopes, annoEnabledBlocks =
|
|
|
2281
2324
|
filterType: "dateRangeType",
|
|
2282
2325
|
valuePath: "kp_date_published"
|
|
2283
2326
|
}
|
|
2327
|
+
},
|
|
2328
|
+
// "Documents" filter — narrows results to specific chosen documents of the
|
|
2329
|
+
// datasets in view, matched on their own _id. Options list those datasets'
|
|
2330
|
+
// documents by title (documentsType fetch, which uses the ambient contentTypes);
|
|
2331
|
+
// the backend matches { _id: { $in: [ids] } } via target valuePath "_id"
|
|
2332
|
+
// (getValuePathQuery ObjectId-casts any `_id`-ending path).
|
|
2333
|
+
{
|
|
2334
|
+
filterId: "documentsFilter",
|
|
2335
|
+
blockId: "documentsFilter",
|
|
2336
|
+
display: "Documents",
|
|
2337
|
+
value: "documents",
|
|
2338
|
+
filterKey: generateFilterKey({
|
|
2339
|
+
filterType: "valuePathType",
|
|
2340
|
+
valuePath: "_id",
|
|
2341
|
+
scope: "doc"
|
|
2342
|
+
}),
|
|
2343
|
+
source: { filterType: "documentsType", scope: "tags" },
|
|
2344
|
+
target: { filterType: "valuePathType", valuePath: "_id" }
|
|
2284
2345
|
}
|
|
2285
2346
|
]
|
|
2286
2347
|
}] : [];
|
|
@@ -2641,12 +2702,19 @@ var _self_managed_buildDocHierarchyConfig = ({
|
|
|
2641
2702
|
const t = allTpls.find((tp) => tp.kp_content_type === ct);
|
|
2642
2703
|
if (t?.general?.content?.title) rollupDisplayMap[ct] = t.general.content.title;
|
|
2643
2704
|
}
|
|
2705
|
+
const childByParentId = {};
|
|
2706
|
+
for (const r of rollupsWithParents) {
|
|
2707
|
+
if (r.parentFilterId && r.isTagRollup && r.source?.filterType === "tagType") {
|
|
2708
|
+
childByParentId[r.parentFilterId] = r;
|
|
2709
|
+
}
|
|
2710
|
+
}
|
|
2644
2711
|
return {
|
|
2645
2712
|
contentType: tpl.kp_content_type,
|
|
2646
2713
|
display: tplData?.general?.content?.title || tpl.kp_content_type,
|
|
2647
2714
|
filters: filtersWithParents,
|
|
2648
2715
|
rollups: rollupsWithParents,
|
|
2649
|
-
rollupDisplayMap
|
|
2716
|
+
rollupDisplayMap,
|
|
2717
|
+
childByParentId
|
|
2650
2718
|
};
|
|
2651
2719
|
});
|
|
2652
2720
|
const filteredPerDataset = perDataset.filter(
|
|
@@ -2915,6 +2983,7 @@ var plainTextToLexical = (value) => {
|
|
|
2915
2983
|
BASE_BULLMQ_CONFIG,
|
|
2916
2984
|
BlockRegistry,
|
|
2917
2985
|
CHUNKING_PRESETS,
|
|
2986
|
+
COLLAB_SYSTEM_PATH_REGEX,
|
|
2918
2987
|
ELASTIC_MAPPING_PRESETS,
|
|
2919
2988
|
FILTER_IDS,
|
|
2920
2989
|
MONGO_SCHEMA_PRESETS,
|
|
@@ -2948,6 +3017,7 @@ var plainTextToLexical = (value) => {
|
|
|
2948
3017
|
getRoutePathToTCI,
|
|
2949
3018
|
getRoutePathToTagCategoryLanding,
|
|
2950
3019
|
getVal,
|
|
3020
|
+
isCollabEditableBlock,
|
|
2951
3021
|
isTplAnnotationEnabled,
|
|
2952
3022
|
mergeAnnoDataIntoAnnotationsTags,
|
|
2953
3023
|
parseSpecialConfigSyntax,
|
package/dist/universal.mjs
CHANGED
|
@@ -1145,6 +1145,43 @@ var BASE_BULLMQ_CONFIG = {
|
|
|
1145
1145
|
maxStalledCount: 3
|
|
1146
1146
|
}
|
|
1147
1147
|
},
|
|
1148
|
+
/**
|
|
1149
|
+
* Collab-editing session-boundary side effects for CONTENT docs.
|
|
1150
|
+
* Enqueued by okf-sub's collab service when a field lock releases / the
|
|
1151
|
+
* last editor leaves a live doc; the worker calls okf-be's internal
|
|
1152
|
+
* contentDocCollabSessionSideEffects endpoint (tag-rename sync, chunks/annos
|
|
1153
|
+
* producers, Elastic sync, cache invalidations, analytics).
|
|
1154
|
+
* Queued (rather than fire-and-forget HTTP from the boundary) for retry
|
|
1155
|
+
* ability + Bullboard trackability — a failed boundary would otherwise be
|
|
1156
|
+
* silently lost when the doc unloads. Steps are idempotent except
|
|
1157
|
+
* analytics, which runs LAST so retries only duplicate it on a
|
|
1158
|
+
* lost-response network edge.
|
|
1159
|
+
*/
|
|
1160
|
+
CONTENT_DOC_COLAB_SESH_SIDE_EFFECTS_QUEUE: {
|
|
1161
|
+
id: "content-doc-colab-sesh-side-effects-queue",
|
|
1162
|
+
queueConfig: {
|
|
1163
|
+
defaultJobOptions: {
|
|
1164
|
+
attempts: 3,
|
|
1165
|
+
backoff: {
|
|
1166
|
+
type: "exponential",
|
|
1167
|
+
delay: 5e3
|
|
1168
|
+
},
|
|
1169
|
+
removeOnComplete: 50,
|
|
1170
|
+
removeOnFail: 200
|
|
1171
|
+
},
|
|
1172
|
+
streams: {
|
|
1173
|
+
events: {
|
|
1174
|
+
maxLen: 1e3
|
|
1175
|
+
// SockerIOService QueueEvents tails this stream for progress tracking; trimming at 10 dropped completion events mid-burst (stuck FE tracker). Entries are small now that job returnvalues are trimmed, so 1000 is cheap.
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
},
|
|
1179
|
+
workerConfig: {
|
|
1180
|
+
concurrency: 10,
|
|
1181
|
+
lockDuration: 9e4,
|
|
1182
|
+
maxStalledCount: 3
|
|
1183
|
+
}
|
|
1184
|
+
},
|
|
1148
1185
|
SARVAM_TRANSCRIPTION_QUEUE: {
|
|
1149
1186
|
id: "sarvam-transcription-queue",
|
|
1150
1187
|
queueConfig: {
|
|
@@ -1421,6 +1458,10 @@ var mergeAnnoDataIntoAnnotationsTags = ({
|
|
|
1421
1458
|
return newConsolidated;
|
|
1422
1459
|
};
|
|
1423
1460
|
|
|
1461
|
+
// src/collab/isCollabEditableBlock.js
|
|
1462
|
+
var COLLAB_SYSTEM_PATH_REGEX = /(^|\.)kp_/;
|
|
1463
|
+
var isCollabEditableBlock = (block) => !!block?.valuePath && block.valuePath !== "." && !COLLAB_SYSTEM_PATH_REGEX.test(block.valuePath);
|
|
1464
|
+
|
|
1424
1465
|
// src/utils/parseSpecialConfigSyntax.ts
|
|
1425
1466
|
var parseSpecialConfigSyntax = ({
|
|
1426
1467
|
config,
|
|
@@ -2211,6 +2252,24 @@ var processAuthorAndCommonFilters = (allTpls, filterScopes, annoEnabledBlocks =
|
|
|
2211
2252
|
filterType: "dateRangeType",
|
|
2212
2253
|
valuePath: "kp_date_published"
|
|
2213
2254
|
}
|
|
2255
|
+
},
|
|
2256
|
+
// "Documents" filter — narrows results to specific chosen documents of the
|
|
2257
|
+
// datasets in view, matched on their own _id. Options list those datasets'
|
|
2258
|
+
// documents by title (documentsType fetch, which uses the ambient contentTypes);
|
|
2259
|
+
// the backend matches { _id: { $in: [ids] } } via target valuePath "_id"
|
|
2260
|
+
// (getValuePathQuery ObjectId-casts any `_id`-ending path).
|
|
2261
|
+
{
|
|
2262
|
+
filterId: "documentsFilter",
|
|
2263
|
+
blockId: "documentsFilter",
|
|
2264
|
+
display: "Documents",
|
|
2265
|
+
value: "documents",
|
|
2266
|
+
filterKey: generateFilterKey({
|
|
2267
|
+
filterType: "valuePathType",
|
|
2268
|
+
valuePath: "_id",
|
|
2269
|
+
scope: "doc"
|
|
2270
|
+
}),
|
|
2271
|
+
source: { filterType: "documentsType", scope: "tags" },
|
|
2272
|
+
target: { filterType: "valuePathType", valuePath: "_id" }
|
|
2214
2273
|
}
|
|
2215
2274
|
]
|
|
2216
2275
|
}] : [];
|
|
@@ -2571,12 +2630,19 @@ var _self_managed_buildDocHierarchyConfig = ({
|
|
|
2571
2630
|
const t = allTpls.find((tp) => tp.kp_content_type === ct);
|
|
2572
2631
|
if (t?.general?.content?.title) rollupDisplayMap[ct] = t.general.content.title;
|
|
2573
2632
|
}
|
|
2633
|
+
const childByParentId = {};
|
|
2634
|
+
for (const r of rollupsWithParents) {
|
|
2635
|
+
if (r.parentFilterId && r.isTagRollup && r.source?.filterType === "tagType") {
|
|
2636
|
+
childByParentId[r.parentFilterId] = r;
|
|
2637
|
+
}
|
|
2638
|
+
}
|
|
2574
2639
|
return {
|
|
2575
2640
|
contentType: tpl.kp_content_type,
|
|
2576
2641
|
display: tplData?.general?.content?.title || tpl.kp_content_type,
|
|
2577
2642
|
filters: filtersWithParents,
|
|
2578
2643
|
rollups: rollupsWithParents,
|
|
2579
|
-
rollupDisplayMap
|
|
2644
|
+
rollupDisplayMap,
|
|
2645
|
+
childByParentId
|
|
2580
2646
|
};
|
|
2581
2647
|
});
|
|
2582
2648
|
const filteredPerDataset = perDataset.filter(
|
|
@@ -2844,6 +2910,7 @@ export {
|
|
|
2844
2910
|
BASE_BULLMQ_CONFIG,
|
|
2845
2911
|
BlockRegistry,
|
|
2846
2912
|
CHUNKING_PRESETS,
|
|
2913
|
+
COLLAB_SYSTEM_PATH_REGEX,
|
|
2847
2914
|
ELASTIC_MAPPING_PRESETS,
|
|
2848
2915
|
FILTER_IDS,
|
|
2849
2916
|
MONGO_SCHEMA_PRESETS,
|
|
@@ -2877,6 +2944,7 @@ export {
|
|
|
2877
2944
|
getRoutePathToTCI,
|
|
2878
2945
|
getRoutePathToTagCategoryLanding,
|
|
2879
2946
|
getVal,
|
|
2947
|
+
isCollabEditableBlock,
|
|
2880
2948
|
isTplAnnotationEnabled,
|
|
2881
2949
|
mergeAnnoDataIntoAnnotationsTags,
|
|
2882
2950
|
parseSpecialConfigSyntax,
|