@lssm/lib.mobile-control 2.0.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/README.md +20 -0
- package/dist/browser/index.js +1 -0
- package/dist/browser/mobile-control.feature.js +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +2 -0
- package/dist/index.test.d.ts +1 -0
- package/dist/mobile-control.feature.d.ts +1 -0
- package/dist/mobile-control.feature.js +2 -0
- package/dist/node/index.js +1 -0
- package/dist/node/mobile-control.feature.js +1 -0
- package/package.json +161 -0
package/README.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# @lssm/lib.mobile-control
|
|
2
|
+
|
|
3
|
+
Website: https://contractspec.io
|
|
4
|
+
|
|
5
|
+
Typed Builder mobile-control primitives for review cards, parity aggregation, and channel-safe deep-link actions.
|
|
6
|
+
|
|
7
|
+
## What It Provides
|
|
8
|
+
|
|
9
|
+
- Mobile parity aggregation for Builder blueprints and review workflows.
|
|
10
|
+
- Mobile review card factories shared by Builder runtime and UI surfaces.
|
|
11
|
+
- Default card actions that preserve a card/deep-link inspection path for critical review flows.
|
|
12
|
+
|
|
13
|
+
## Public Entry Points
|
|
14
|
+
|
|
15
|
+
- `.` resolves through `./src/index.ts`
|
|
16
|
+
|
|
17
|
+
## Notes
|
|
18
|
+
|
|
19
|
+
- This package is a compatibility surface. Prefer additive evolution.
|
|
20
|
+
- It exists to keep mobile-specific control-plane behavior reusable without duplicating Builder runtime logic.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{defineFeature as n}from"@lssm/lib.contracts-spec/features";var u=n({meta:{key:"libs.mobile-control",version:"1.0.0",title:"Mobile Control",description:"Builder mobile-control primitives for review cards, parity, and deep-link-safe actions.",domain:"mobile-control",owners:["@contractspec-core"],tags:["package","libs","mobile-control"],stability:"experimental"}});function b(e,r){let o=e.featureParity.some((t)=>t.mobileSupport==="partial"&&!t.mobileFallbackRef?.trim()),l=r.some((t)=>t.channelType!=="mobile_web"&&!t.actions.some((a)=>a.id==="open_details"&&Boolean(a.deepLinkHref?.trim())));if(e.featureParity.some((t)=>t.mobileSupport==="blocked")||o)return"blocked";if(e.featureParity.some((t)=>t.mobileSupport==="partial")||l||r.length===0)return"partial";return"full"}function m(e,r){let o=e.featureParity.filter((i)=>i.mobileSupport==="full"&&i.channelSupport.some((s)=>s==="telegram"||s==="whatsapp")).map((i)=>i.featureKey),l=e.featureParity.filter((i)=>i.mobileSupport==="partial"||Boolean(i.mobileFallbackRef?.trim())).map((i)=>i.featureKey),t=e.featureParity.filter((i)=>i.mobileSupport==="blocked").map((i)=>i.featureKey),a=r.flatMap((i)=>i.actions);return{channelNativeFeatures:o,deepLinkFeatures:l,blockedFeatures:t,channelNativeActionCount:a.filter((i)=>i.deliveryMode==="channel_native").length,deepLinkActionCount:a.filter((i)=>i.deliveryMode==="mobile_web").length}}function d(e){let r=[];if(e?.includeApproveReject!==!1)r.push({id:"approve",label:"Approve",deliveryMode:"channel_native",statusNote:"Safe for direct channel approval."}),r.push({id:"reject",label:"Reject",deliveryMode:"channel_native",statusNote:"Safe for direct channel rejection."});if(e?.includeRequestChanges)r.push({id:"request_changes",label:"Request changes",deliveryMode:"channel_native",statusNote:"Use in-channel correction when the quick summary is enough."});if(e?.includeAcknowledge)r.push({id:"acknowledge",label:"Acknowledge",deliveryMode:"channel_native",statusNote:"Acknowledge the incident directly from the channel."});return r.push(e?.deepLinkHref?{id:"open_details",label:"Open details",deepLinkHref:e.deepLinkHref,deliveryMode:"mobile_web",statusNote:"Use secure mobile web for long diffs, receipts, and detailed evidence."}:{id:"open_details",label:"Open details",deliveryMode:"mobile_web",statusNote:"Use secure mobile web for long diffs, receipts, and detailed evidence."}),r}function f(e){return{id:e.id,workspaceId:e.workspaceId,channelType:e.channelType??"mobile_web",subjectType:e.subjectType??"patch_proposal",subjectId:e.subjectId,summary:e.summary,riskLevel:e.riskLevel??"medium",provider:e.provider,affectedAreas:e.affectedAreas??[],evidence:{sourceRefs:e.sourceRefs??[],receiptId:e.receiptId,harnessSummary:e.harnessSummary??"Review evidence before approving the change."},status:"open",actions:e.actions&&e.actions.length>0?e.actions:d(),createdAt:e.createdAt,updatedAt:e.updatedAt??e.createdAt}}export{u as MobileControlFeature,b as aggregateBuilderMobileParity,m as buildBuilderMobileParitySummary,d as createBuilderMobileReviewActions,f as createBuilderMobileReviewCard};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{defineFeature as e}from"@lssm/lib.contracts-spec/features";var i=e({meta:{key:"libs.mobile-control",version:"1.0.0",title:"Mobile Control",description:"Builder mobile-control primitives for review cards, parity, and deep-link-safe actions.",domain:"mobile-control",owners:["@contractspec-core"],tags:["package","libs","mobile-control"],stability:"experimental"}});export{i as MobileControlFeature};
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { BuilderBlueprint, BuilderMobileReviewCard } from '@lssm/lib.builder-spec';
|
|
2
|
+
import type { BuilderMobileParitySummary } from '@lssm/lib.builder-spec/types';
|
|
3
|
+
export interface CreateBuilderMobileReviewCardInput {
|
|
4
|
+
id: string;
|
|
5
|
+
workspaceId: string;
|
|
6
|
+
channelType?: BuilderMobileReviewCard['channelType'];
|
|
7
|
+
subjectType?: BuilderMobileReviewCard['subjectType'];
|
|
8
|
+
subjectId: string;
|
|
9
|
+
summary: string;
|
|
10
|
+
riskLevel?: BuilderMobileReviewCard['riskLevel'];
|
|
11
|
+
provider?: BuilderMobileReviewCard['provider'];
|
|
12
|
+
affectedAreas?: string[];
|
|
13
|
+
sourceRefs?: string[];
|
|
14
|
+
receiptId?: string;
|
|
15
|
+
harnessSummary?: string;
|
|
16
|
+
actions?: BuilderMobileReviewCard['actions'];
|
|
17
|
+
createdAt: string;
|
|
18
|
+
updatedAt?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function aggregateBuilderMobileParity(blueprint: BuilderBlueprint, mobileReviewCards: BuilderMobileReviewCard[]): "blocked" | "full" | "partial";
|
|
21
|
+
export declare function buildBuilderMobileParitySummary(blueprint: BuilderBlueprint, mobileReviewCards: BuilderMobileReviewCard[]): BuilderMobileParitySummary;
|
|
22
|
+
export declare function createBuilderMobileReviewActions(input?: {
|
|
23
|
+
deepLinkHref?: string;
|
|
24
|
+
includeApproveReject?: boolean;
|
|
25
|
+
includeAcknowledge?: boolean;
|
|
26
|
+
includeRequestChanges?: boolean;
|
|
27
|
+
}): {
|
|
28
|
+
id: string;
|
|
29
|
+
label: string;
|
|
30
|
+
deepLinkHref?: string;
|
|
31
|
+
deliveryMode?: import("@lssm/lib.builder-spec").BuilderMobileReviewActionDeliveryMode;
|
|
32
|
+
statusNote?: string;
|
|
33
|
+
commandKey?: string;
|
|
34
|
+
commandPayload?: Record<string, unknown>;
|
|
35
|
+
}[];
|
|
36
|
+
export declare function createBuilderMobileReviewCard(input: CreateBuilderMobileReviewCardInput): BuilderMobileReviewCard;
|
|
37
|
+
export * from './mobile-control.feature.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{defineFeature as n}from"@lssm/lib.contracts-spec/features";var u=n({meta:{key:"libs.mobile-control",version:"1.0.0",title:"Mobile Control",description:"Builder mobile-control primitives for review cards, parity, and deep-link-safe actions.",domain:"mobile-control",owners:["@contractspec-core"],tags:["package","libs","mobile-control"],stability:"experimental"}});function b(e,r){let o=e.featureParity.some((t)=>t.mobileSupport==="partial"&&!t.mobileFallbackRef?.trim()),l=r.some((t)=>t.channelType!=="mobile_web"&&!t.actions.some((a)=>a.id==="open_details"&&Boolean(a.deepLinkHref?.trim())));if(e.featureParity.some((t)=>t.mobileSupport==="blocked")||o)return"blocked";if(e.featureParity.some((t)=>t.mobileSupport==="partial")||l||r.length===0)return"partial";return"full"}function m(e,r){let o=e.featureParity.filter((i)=>i.mobileSupport==="full"&&i.channelSupport.some((s)=>s==="telegram"||s==="whatsapp")).map((i)=>i.featureKey),l=e.featureParity.filter((i)=>i.mobileSupport==="partial"||Boolean(i.mobileFallbackRef?.trim())).map((i)=>i.featureKey),t=e.featureParity.filter((i)=>i.mobileSupport==="blocked").map((i)=>i.featureKey),a=r.flatMap((i)=>i.actions);return{channelNativeFeatures:o,deepLinkFeatures:l,blockedFeatures:t,channelNativeActionCount:a.filter((i)=>i.deliveryMode==="channel_native").length,deepLinkActionCount:a.filter((i)=>i.deliveryMode==="mobile_web").length}}function d(e){let r=[];if(e?.includeApproveReject!==!1)r.push({id:"approve",label:"Approve",deliveryMode:"channel_native",statusNote:"Safe for direct channel approval."}),r.push({id:"reject",label:"Reject",deliveryMode:"channel_native",statusNote:"Safe for direct channel rejection."});if(e?.includeRequestChanges)r.push({id:"request_changes",label:"Request changes",deliveryMode:"channel_native",statusNote:"Use in-channel correction when the quick summary is enough."});if(e?.includeAcknowledge)r.push({id:"acknowledge",label:"Acknowledge",deliveryMode:"channel_native",statusNote:"Acknowledge the incident directly from the channel."});return r.push(e?.deepLinkHref?{id:"open_details",label:"Open details",deepLinkHref:e.deepLinkHref,deliveryMode:"mobile_web",statusNote:"Use secure mobile web for long diffs, receipts, and detailed evidence."}:{id:"open_details",label:"Open details",deliveryMode:"mobile_web",statusNote:"Use secure mobile web for long diffs, receipts, and detailed evidence."}),r}function f(e){return{id:e.id,workspaceId:e.workspaceId,channelType:e.channelType??"mobile_web",subjectType:e.subjectType??"patch_proposal",subjectId:e.subjectId,summary:e.summary,riskLevel:e.riskLevel??"medium",provider:e.provider,affectedAreas:e.affectedAreas??[],evidence:{sourceRefs:e.sourceRefs??[],receiptId:e.receiptId,harnessSummary:e.harnessSummary??"Review evidence before approving the change."},status:"open",actions:e.actions&&e.actions.length>0?e.actions:d(),createdAt:e.createdAt,updatedAt:e.updatedAt??e.createdAt}}export{u as MobileControlFeature,b as aggregateBuilderMobileParity,m as buildBuilderMobileParitySummary,d as createBuilderMobileReviewActions,f as createBuilderMobileReviewCard};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const MobileControlFeature: import("@lssm/lib.contracts-spec").FeatureModuleSpec;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{defineFeature as e}from"@lssm/lib.contracts-spec/features";var i=e({meta:{key:"libs.mobile-control",version:"1.0.0",title:"Mobile Control",description:"Builder mobile-control primitives for review cards, parity, and deep-link-safe actions.",domain:"mobile-control",owners:["@contractspec-core"],tags:["package","libs","mobile-control"],stability:"experimental"}});export{i as MobileControlFeature};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{defineFeature as n}from"@lssm/lib.contracts-spec/features";var u=n({meta:{key:"libs.mobile-control",version:"1.0.0",title:"Mobile Control",description:"Builder mobile-control primitives for review cards, parity, and deep-link-safe actions.",domain:"mobile-control",owners:["@contractspec-core"],tags:["package","libs","mobile-control"],stability:"experimental"}});function b(e,r){let o=e.featureParity.some((t)=>t.mobileSupport==="partial"&&!t.mobileFallbackRef?.trim()),l=r.some((t)=>t.channelType!=="mobile_web"&&!t.actions.some((a)=>a.id==="open_details"&&Boolean(a.deepLinkHref?.trim())));if(e.featureParity.some((t)=>t.mobileSupport==="blocked")||o)return"blocked";if(e.featureParity.some((t)=>t.mobileSupport==="partial")||l||r.length===0)return"partial";return"full"}function m(e,r){let o=e.featureParity.filter((i)=>i.mobileSupport==="full"&&i.channelSupport.some((s)=>s==="telegram"||s==="whatsapp")).map((i)=>i.featureKey),l=e.featureParity.filter((i)=>i.mobileSupport==="partial"||Boolean(i.mobileFallbackRef?.trim())).map((i)=>i.featureKey),t=e.featureParity.filter((i)=>i.mobileSupport==="blocked").map((i)=>i.featureKey),a=r.flatMap((i)=>i.actions);return{channelNativeFeatures:o,deepLinkFeatures:l,blockedFeatures:t,channelNativeActionCount:a.filter((i)=>i.deliveryMode==="channel_native").length,deepLinkActionCount:a.filter((i)=>i.deliveryMode==="mobile_web").length}}function d(e){let r=[];if(e?.includeApproveReject!==!1)r.push({id:"approve",label:"Approve",deliveryMode:"channel_native",statusNote:"Safe for direct channel approval."}),r.push({id:"reject",label:"Reject",deliveryMode:"channel_native",statusNote:"Safe for direct channel rejection."});if(e?.includeRequestChanges)r.push({id:"request_changes",label:"Request changes",deliveryMode:"channel_native",statusNote:"Use in-channel correction when the quick summary is enough."});if(e?.includeAcknowledge)r.push({id:"acknowledge",label:"Acknowledge",deliveryMode:"channel_native",statusNote:"Acknowledge the incident directly from the channel."});return r.push(e?.deepLinkHref?{id:"open_details",label:"Open details",deepLinkHref:e.deepLinkHref,deliveryMode:"mobile_web",statusNote:"Use secure mobile web for long diffs, receipts, and detailed evidence."}:{id:"open_details",label:"Open details",deliveryMode:"mobile_web",statusNote:"Use secure mobile web for long diffs, receipts, and detailed evidence."}),r}function f(e){return{id:e.id,workspaceId:e.workspaceId,channelType:e.channelType??"mobile_web",subjectType:e.subjectType??"patch_proposal",subjectId:e.subjectId,summary:e.summary,riskLevel:e.riskLevel??"medium",provider:e.provider,affectedAreas:e.affectedAreas??[],evidence:{sourceRefs:e.sourceRefs??[],receiptId:e.receiptId,harnessSummary:e.harnessSummary??"Review evidence before approving the change."},status:"open",actions:e.actions&&e.actions.length>0?e.actions:d(),createdAt:e.createdAt,updatedAt:e.updatedAt??e.createdAt}}export{u as MobileControlFeature,b as aggregateBuilderMobileParity,m as buildBuilderMobileParitySummary,d as createBuilderMobileReviewActions,f as createBuilderMobileReviewCard};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{defineFeature as e}from"@lssm/lib.contracts-spec/features";var i=e({meta:{key:"libs.mobile-control",version:"1.0.0",title:"Mobile Control",description:"Builder mobile-control primitives for review cards, parity, and deep-link-safe actions.",domain:"mobile-control",owners:["@contractspec-core"],tags:["package","libs","mobile-control"],stability:"experimental"}});export{i as MobileControlFeature};
|
package/package.json
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lssm/lib.mobile-control",
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"description": "Builder mobile-control primitives for review cards, parity, and deep-link-safe actions.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"contractspec",
|
|
7
|
+
"builder",
|
|
8
|
+
"mobile",
|
|
9
|
+
"control",
|
|
10
|
+
"typescript"
|
|
11
|
+
],
|
|
12
|
+
"type": "module",
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
|
|
20
|
+
"publish:pkg:canary": "bun publish:pkg --tag canary",
|
|
21
|
+
"build": "contractspec-bun-build build",
|
|
22
|
+
"build:bundle": "contractspec-bun-build transpile",
|
|
23
|
+
"build:types": "contractspec-bun-build types",
|
|
24
|
+
"dev": "contractspec-bun-build dev",
|
|
25
|
+
"clean": "rimraf dist .turbo",
|
|
26
|
+
"lint": "bun lint:fix",
|
|
27
|
+
"lint:fix": "node ../../../scripts/biome.cjs check --write --unsafe --only=nursery/useSortedClasses . && node ../../../scripts/biome.cjs check --write .",
|
|
28
|
+
"lint:check": "node ../../../scripts/biome.cjs check .",
|
|
29
|
+
"test": "bun test",
|
|
30
|
+
"prebuild": "contractspec-bun-build prebuild",
|
|
31
|
+
"typecheck": "tsgo --noEmit"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@lssm/lib.builder-spec": "^2.1.1",
|
|
35
|
+
"@lssm/lib.provider-spec": "^2.0.1",
|
|
36
|
+
"@lssm/lib.contracts-spec": "^17.3.2"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@lssm-tech/tool.bun": "5.0.3",
|
|
40
|
+
"@lssm-tech/tool.typescript": "5.0.1",
|
|
41
|
+
"typescript": "^7.0.2"
|
|
42
|
+
},
|
|
43
|
+
"exports": {
|
|
44
|
+
".": {
|
|
45
|
+
"types": "./dist/index.d.ts",
|
|
46
|
+
"browser": "./dist/browser/index.js",
|
|
47
|
+
"bun": "./dist/index.js",
|
|
48
|
+
"node": "./dist/node/index.js",
|
|
49
|
+
"default": "./dist/index.js"
|
|
50
|
+
},
|
|
51
|
+
"./mobile-control.feature": {
|
|
52
|
+
"types": "./dist/mobile-control.feature.d.ts",
|
|
53
|
+
"browser": "./dist/browser/mobile-control.feature.js",
|
|
54
|
+
"bun": "./dist/mobile-control.feature.js",
|
|
55
|
+
"node": "./dist/node/mobile-control.feature.js",
|
|
56
|
+
"default": "./dist/mobile-control.feature.js"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"publishConfig": {
|
|
60
|
+
"access": "public",
|
|
61
|
+
"registry": "https://registry.npmjs.org",
|
|
62
|
+
"exports": {
|
|
63
|
+
".": {
|
|
64
|
+
"types": "./dist/index.d.ts",
|
|
65
|
+
"browser": "./dist/browser/index.js",
|
|
66
|
+
"bun": "./dist/index.js",
|
|
67
|
+
"node": "./dist/node/index.js",
|
|
68
|
+
"default": "./dist/index.js"
|
|
69
|
+
},
|
|
70
|
+
"./mobile-control.feature": {
|
|
71
|
+
"types": "./dist/mobile-control.feature.d.ts",
|
|
72
|
+
"browser": "./dist/browser/mobile-control.feature.js",
|
|
73
|
+
"bun": "./dist/mobile-control.feature.js",
|
|
74
|
+
"node": "./dist/node/mobile-control.feature.js",
|
|
75
|
+
"default": "./dist/mobile-control.feature.js"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"license": "MIT",
|
|
80
|
+
"repository": {
|
|
81
|
+
"type": "git",
|
|
82
|
+
"url": "https://github.com/lssm-tech/contractspec.git",
|
|
83
|
+
"directory": "packages/libs/mobile-control"
|
|
84
|
+
},
|
|
85
|
+
"homepage": "https://contractspec.io",
|
|
86
|
+
"contractspec": {
|
|
87
|
+
"catalog": {
|
|
88
|
+
"family": "sharedLibs",
|
|
89
|
+
"kind": "library",
|
|
90
|
+
"status": "active",
|
|
91
|
+
"adoptionMode": "adoptable",
|
|
92
|
+
"stability": "experimental",
|
|
93
|
+
"platforms": [
|
|
94
|
+
"server"
|
|
95
|
+
],
|
|
96
|
+
"runtimes": [
|
|
97
|
+
"node"
|
|
98
|
+
],
|
|
99
|
+
"entrypoints": [
|
|
100
|
+
".",
|
|
101
|
+
"./mobile-control.feature"
|
|
102
|
+
],
|
|
103
|
+
"documentation": [
|
|
104
|
+
{
|
|
105
|
+
"title": "Lib Mobile Control documentation",
|
|
106
|
+
"url": "https://www.npmjs.com/package/%40lssm%2Flib.mobile-control",
|
|
107
|
+
"kind": "readme"
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
"examples": [],
|
|
111
|
+
"replacements": [],
|
|
112
|
+
"capabilities": [
|
|
113
|
+
{
|
|
114
|
+
"id": "package.lssm.tech.lib.mobile.control",
|
|
115
|
+
"title": "Lib Mobile Control",
|
|
116
|
+
"description": "Builder mobile-control primitives for review cards, parity, and deep-link-safe actions.",
|
|
117
|
+
"status": "active",
|
|
118
|
+
"useCases": [
|
|
119
|
+
"Adopt builder mobile-control primitives for review cards, parity, and deep-link-safe actions"
|
|
120
|
+
],
|
|
121
|
+
"aliases": [
|
|
122
|
+
"contractspec",
|
|
123
|
+
"builder",
|
|
124
|
+
"mobile",
|
|
125
|
+
"control",
|
|
126
|
+
"typescript",
|
|
127
|
+
"lib"
|
|
128
|
+
],
|
|
129
|
+
"pythonEquivalents": [],
|
|
130
|
+
"canonicalImports": [
|
|
131
|
+
{
|
|
132
|
+
"from": "@lssm/lib.mobile-control",
|
|
133
|
+
"symbols": []
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"from": "@lssm/lib.mobile-control/mobile-control.feature",
|
|
137
|
+
"symbols": []
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
"constraints": {
|
|
141
|
+
"platforms": [
|
|
142
|
+
"server"
|
|
143
|
+
],
|
|
144
|
+
"runtimes": [
|
|
145
|
+
"node"
|
|
146
|
+
],
|
|
147
|
+
"avoidWhen": [
|
|
148
|
+
"The @lssm/lib.mobile-control package constraints do not match the target runtime or platform."
|
|
149
|
+
],
|
|
150
|
+
"requires": [
|
|
151
|
+
"TypeScript"
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
"alternatives": [],
|
|
155
|
+
"relationships": [],
|
|
156
|
+
"resolutionPriority": 50
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|