@inf-monkeys-tech/monkeys 1.1.9 → 1.1.11

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 (33) hide show
  1. package/README.md +3 -1
  2. package/lib/contracts/declarative-control-http.d.ts +2 -0
  3. package/lib/contracts/declarative-control-http.d.ts.map +1 -1
  4. package/lib/contracts/declarative-control-http.js +2 -0
  5. package/lib/contracts/declarative-control-http.js.map +1 -1
  6. package/lib/contracts/declarative-document-import.d.ts +8869 -0
  7. package/lib/contracts/declarative-document-import.d.ts.map +1 -0
  8. package/lib/contracts/declarative-document-import.js +126 -0
  9. package/lib/contracts/declarative-document-import.js.map +1 -0
  10. package/lib/contracts/index.d.ts +1 -0
  11. package/lib/contracts/index.d.ts.map +1 -1
  12. package/lib/contracts/index.js +1 -0
  13. package/lib/contracts/index.js.map +1 -1
  14. package/lib/esm/contracts/index.mjs +1065 -961
  15. package/lib/esm/contracts/index.mjs.map +1 -1
  16. package/lib/esm/index.mjs +1121 -975
  17. package/lib/esm/index.mjs.map +1 -1
  18. package/lib/esm/runtime/index.mjs +56 -14
  19. package/lib/esm/runtime/index.mjs.map +1 -1
  20. package/lib/esm/schemas/index.mjs +102 -0
  21. package/lib/esm/schemas/index.mjs.map +1 -1
  22. package/lib/runtime/declarative-control-compiler.d.ts.map +1 -1
  23. package/lib/runtime/declarative-control-compiler.js +20 -12
  24. package/lib/runtime/declarative-control-compiler.js.map +1 -1
  25. package/lib/runtime/navigation-availability.d.ts +2 -0
  26. package/lib/runtime/navigation-availability.d.ts.map +1 -1
  27. package/lib/runtime/navigation-availability.js +39 -1
  28. package/lib/runtime/navigation-availability.js.map +1 -1
  29. package/lib/schemas/index.d.ts +1 -0
  30. package/lib/schemas/index.d.ts.map +1 -1
  31. package/lib/schemas/index.js +7 -1
  32. package/lib/schemas/index.js.map +1 -1
  33. package/package.json +1 -1
@@ -20148,13 +20148,11 @@ var compileNavigationRuntimeBundle = (input) => {
20148
20148
  const registration = targetsByStableRef.get(stableRefKey(node.targetRef));
20149
20149
  const released = releasedByNodeId.get(node.nodeId);
20150
20150
  const unavailable = unavailableByNodeId.get(node.nodeId);
20151
- if (!registration && unavailable && node.targetRef.kind === "page" && sameStableRef(unavailable.stableTargetRef, node.targetRef)) {
20152
- assertTenantCompatible(
20153
- node.targetRef,
20154
- scope,
20155
- `nodes[${index}].targetRef`
20156
- );
20157
- if (unavailable.accessPolicy && !accessPolicyChainImplies(
20151
+ if (!registration && node.targetRef.kind === "page" && (unavailable && sameStableRef(unavailable.stableTargetRef, node.targetRef) || released && sameStableRef(released.stableTargetRef, node.targetRef))) {
20152
+ if (!released || !verifiedKernelPageReferenceKeys.has(revisionRefKey(released.targetRevisionRef))) {
20153
+ assertTenantCompatible(node.targetRef, scope, `nodes[${index}].targetRef`);
20154
+ }
20155
+ if (unavailable?.accessPolicy && !accessPolicyChainImplies(
20158
20156
  [...ancestors, node.audience],
20159
20157
  unavailable.accessPolicy
20160
20158
  )) {
@@ -20173,24 +20171,25 @@ var compileNavigationRuntimeBundle = (input) => {
20173
20171
  kind: "unavailable",
20174
20172
  nodeId: node.nodeId,
20175
20173
  stableTargetRef: node.targetRef,
20176
- accessPolicy: unavailable.accessPolicy
20174
+ accessPolicy: unavailable?.accessPolicy ?? null
20177
20175
  }
20178
20176
  };
20179
20177
  }
20180
- if (!registration || !released || !sameStableRef(
20178
+ const currentPage = node.targetRef.kind === "page" && registration?.kind === "route";
20179
+ if (!registration || !released && !(currentPage && unavailable && sameStableRef(unavailable.stableTargetRef, node.targetRef)) || !sameStableRef(
20181
20180
  registration.stableTargetRef,
20182
20181
  stableFromRevision(registration.targetRevisionRef)
20183
- ) || !sameStableRef(registration.stableTargetRef, released.stableTargetRef) || !sameRevisionRef(
20182
+ ) || released && !sameStableRef(registration.stableTargetRef, released.stableTargetRef) || !currentPage && released && !sameRevisionRef(
20184
20183
  registration.targetRevisionRef,
20185
20184
  released.targetRevisionRef
20186
- ) || registration.kind === "route" && (Boolean(registration.releaseRevisionRef) !== Boolean(released.releaseRevisionRef) || registration.releaseRevisionRef && released.releaseRevisionRef && !sameRevisionRef(
20185
+ ) || !currentPage && released && registration.kind === "route" && (Boolean(registration.releaseRevisionRef) !== Boolean(released.releaseRevisionRef) || registration.releaseRevisionRef && released.releaseRevisionRef && !sameRevisionRef(
20187
20186
  registration.releaseRevisionRef,
20188
20187
  released.releaseRevisionRef
20189
20188
  ))) {
20190
20189
  throw new DeclarativeControlCompilationError(
20191
20190
  "NAV_TARGET_UNRELEASED",
20192
20191
  `nodes[${index}].targetRef`,
20193
- "Navigation target is not resolved to the exact active release recorded by NavigationRelease."
20192
+ "Navigation target must resolve to the same Page identity or the exact non-Page binding recorded by NavigationRelease."
20194
20193
  );
20195
20194
  }
20196
20195
  if (registration.surface !== release.target.surface) {
@@ -20226,7 +20225,7 @@ var compileNavigationRuntimeBundle = (input) => {
20226
20225
  `nodes[${index}].targetRef`
20227
20226
  );
20228
20227
  }
20229
- if (!accessPolicyChainImplies(
20228
+ if (!currentPage && !accessPolicyChainImplies(
20230
20229
  [...ancestors, node.audience],
20231
20230
  registration.accessPolicy
20232
20231
  )) {
@@ -20251,7 +20250,10 @@ var compileNavigationRuntimeBundle = (input) => {
20251
20250
  let resolvedTarget;
20252
20251
  if (registration.kind === "route") {
20253
20252
  resolvedTarget = {
20254
- ...released,
20253
+ nodeId: node.nodeId,
20254
+ stableTargetRef: registration.stableTargetRef,
20255
+ targetRevisionRef: registration.targetRevisionRef,
20256
+ ...registration.releaseRevisionRef ? { releaseRevisionRef: registration.releaseRevisionRef } : {},
20255
20257
  kind: "route",
20256
20258
  accessPolicy: registration.accessPolicy,
20257
20259
  routeClaim: registration.routeClaim
@@ -20449,6 +20451,45 @@ function projectNavigationCompatibility(bundle, supportsUnavailable) {
20449
20451
  const nodes = bundle.nodes.filter((node) => node.kind !== "target" || node.resolvedTarget.kind !== "unavailable");
20450
20452
  return NavigationRuntimeBundleSchema.parse({ ...unsigned, nodes, contentHash: canonicalContentHash({ ...unsigned, nodes }) });
20451
20453
  }
20454
+ function projectCurrentNavigationPages(source, navigation, targets) {
20455
+ const currentTargets = new Map(targets.map((target) => [canonicalContentHash(target.stableTargetRef), target]));
20456
+ if (currentTargets.size !== targets.length) throw new TypeError("DECLARATIVE_TARGET_CATALOG_INVALID");
20457
+ const authored = new Map(navigation.nodes.map((node) => [node.nodeId, node]));
20458
+ const nodes = source.nodes.map((node) => {
20459
+ if (node.kind !== "target" || node.targetRef.kind !== "page") return node;
20460
+ const original = authored.get(node.nodeId);
20461
+ if (original?.kind !== "target" || canonicalContentHash(original.targetRef) !== canonicalContentHash(node.targetRef)) {
20462
+ throw new TypeError("DECLARATIVE_TARGET_IDENTITY_MISMATCH");
20463
+ }
20464
+ const current = currentTargets.get(canonicalContentHash(node.targetRef));
20465
+ if (current && (!sameStableRef(current.stableTargetRef, current.targetRevisionRef) || current.kind !== "route" || current.surface !== source.surface || current.routeClaim.surface !== source.surface)) {
20466
+ throw new TypeError("DECLARATIVE_TARGET_CATALOG_INVALID");
20467
+ }
20468
+ if (!current || current.kind !== "route" || !current.routeClaim.matcher.parameters.filter((parameter) => current.routeClaim.normalizedPath.split("/").includes(`:${parameter.name}`)).every((parameter) => {
20469
+ if (!parameter.required) return true;
20470
+ const binding = original.parameterMapping[parameter.name];
20471
+ return binding?.kind === "constant" && (typeof binding.value === "string" || typeof binding.value === "number") && String(binding.value).length > 0;
20472
+ })) {
20473
+ return { ...node, disabled: true, parameterMapping: {}, resolvedTarget: {
20474
+ kind: "unavailable",
20475
+ nodeId: node.nodeId,
20476
+ stableTargetRef: node.targetRef,
20477
+ accessPolicy: null
20478
+ } };
20479
+ }
20480
+ return { ...node, disabled: original.disabled, parameterMapping: original.parameterMapping, resolvedTarget: {
20481
+ kind: "route",
20482
+ nodeId: node.nodeId,
20483
+ stableTargetRef: current.stableTargetRef,
20484
+ targetRevisionRef: current.targetRevisionRef,
20485
+ ...current.releaseRevisionRef ? { releaseRevisionRef: current.releaseRevisionRef } : {},
20486
+ accessPolicy: current.accessPolicy,
20487
+ routeClaim: current.routeClaim
20488
+ } };
20489
+ });
20490
+ const { contentHash: _hash, ...unsigned } = source;
20491
+ return NavigationRuntimeBundleSchema.parse({ ...unsigned, nodes, contentHash: canonicalContentHash({ ...unsigned, nodes }) });
20492
+ }
20452
20493
 
20453
20494
  // src/runtime/menu-compiler.ts
20454
20495
  var MenuCompilationError = class extends Error {
@@ -25630,6 +25671,7 @@ export {
25630
25671
  parseWorkflowColumnBinding,
25631
25672
  permissionAlternativePolicyAllows,
25632
25673
  projectAgentSessionEvents,
25674
+ projectCurrentNavigationPages,
25633
25675
  projectNavigationCompatibility,
25634
25676
  projectPageProperties,
25635
25677
  projectRecordEditorValidation,