@ankhorage/contracts 7.1.0 → 7.2.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/CHANGELOG.md +6 -0
- package/dist/appManifest/bindings.d.ts +4 -0
- package/dist/appManifest/bindings.d.ts.map +1 -0
- package/dist/appManifest/bindings.js +96 -0
- package/dist/appManifest/bindings.js.map +1 -0
- package/dist/appManifest/dataSources.d.ts +2 -0
- package/dist/appManifest/dataSources.d.ts.map +1 -0
- package/dist/appManifest/dataSources.js +133 -0
- package/dist/appManifest/dataSources.js.map +1 -0
- package/dist/appManifest/generatedApis.d.ts +2 -0
- package/dist/appManifest/generatedApis.d.ts.map +1 -0
- package/dist/appManifest/generatedApis.js +87 -0
- package/dist/appManifest/generatedApis.js.map +1 -0
- package/dist/appManifest/infra.d.ts +2 -0
- package/dist/appManifest/infra.d.ts.map +1 -0
- package/dist/appManifest/infra.js +136 -0
- package/dist/appManifest/infra.js.map +1 -0
- package/dist/appManifest/screens.d.ts +6 -0
- package/dist/appManifest/screens.d.ts.map +1 -0
- package/dist/appManifest/screens.js +119 -0
- package/dist/appManifest/screens.js.map +1 -0
- package/dist/appManifest/shared.d.ts +8 -0
- package/dist/appManifest/shared.d.ts.map +1 -0
- package/dist/appManifest/shared.js +31 -0
- package/dist/appManifest/shared.js.map +1 -0
- package/dist/appManifest.d.ts +19 -0
- package/dist/appManifest.d.ts.map +1 -0
- package/dist/appManifest.js +64 -0
- package/dist/appManifest.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/appManifest/bindings.ts +135 -0
- package/src/appManifest/dataSources.ts +175 -0
- package/src/appManifest/generatedApis.ts +122 -0
- package/src/appManifest/infra.ts +199 -0
- package/src/appManifest/screens.ts +171 -0
- package/src/appManifest/shared.ts +40 -0
- package/src/appManifest.test.ts +185 -0
- package/src/appManifest.ts +86 -0
- package/src/index.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @ankhorage/contracts
|
|
2
2
|
|
|
3
|
+
## 7.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- b24a014: Add canonical runtime parsing and validation for `AppManifest` so consumers can share the Contracts-owned manifest shape instead of maintaining structural guards independently.
|
|
8
|
+
|
|
3
9
|
## 7.1.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function isComponentDataBindingRegistry(value: unknown): boolean;
|
|
2
|
+
export declare function isBindingValueSource(value: unknown): boolean;
|
|
3
|
+
export declare function isScreenDataLoaderDefinition(value: unknown): boolean;
|
|
4
|
+
//# sourceMappingURL=bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../src/appManifest/bindings.ts"],"names":[],"mappings":"AAEA,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEtE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAW5D;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQpE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { isManifestValue, isOptionalString, isRecord } from './shared';
|
|
2
|
+
export function isComponentDataBindingRegistry(value) {
|
|
3
|
+
return isRecord(value) && Object.values(value).every(isComponentDataBinding);
|
|
4
|
+
}
|
|
5
|
+
export function isBindingValueSource(value) {
|
|
6
|
+
return (isRecord(value) &&
|
|
7
|
+
typeof value.kind === 'string' &&
|
|
8
|
+
['context', 'event', 'literal', 'operation', 'state'].includes(value.kind) &&
|
|
9
|
+
(value.kind === 'literal'
|
|
10
|
+
? isManifestValue(value.value)
|
|
11
|
+
: value.kind === 'operation'
|
|
12
|
+
? isBindingOperationRef(value.operation) && isOptionalString(value.path)
|
|
13
|
+
: typeof value.path === 'string'));
|
|
14
|
+
}
|
|
15
|
+
export function isScreenDataLoaderDefinition(value) {
|
|
16
|
+
return (isRecord(value) &&
|
|
17
|
+
value.kind === 'operation' &&
|
|
18
|
+
isOptionalString(value.id) &&
|
|
19
|
+
isBindingOperationRef(value.operation) &&
|
|
20
|
+
(value.input === undefined || isBindingInputMap(value.input)));
|
|
21
|
+
}
|
|
22
|
+
function isComponentDataBinding(value) {
|
|
23
|
+
return (isRecord(value) &&
|
|
24
|
+
typeof value.componentId === 'string' &&
|
|
25
|
+
isOptionalString(value.componentType) &&
|
|
26
|
+
(value.props === undefined ||
|
|
27
|
+
(isRecord(value.props) && Object.values(value.props).every(isPropBinding))) &&
|
|
28
|
+
(value.events === undefined ||
|
|
29
|
+
(isRecord(value.events) &&
|
|
30
|
+
Object.values(value.events).every((bindings) => Array.isArray(bindings) && bindings.every(isEventBinding)))));
|
|
31
|
+
}
|
|
32
|
+
function isPropBinding(value) {
|
|
33
|
+
return (isRecord(value) &&
|
|
34
|
+
isBindingValueSource(value.source) &&
|
|
35
|
+
(value.fallback === undefined || isBindingFallback(value.fallback)) &&
|
|
36
|
+
(value.loading === undefined || isBindingLifecycleBehavior(value.loading)) &&
|
|
37
|
+
(value.error === undefined || isBindingLifecycleBehavior(value.error)) &&
|
|
38
|
+
(value.empty === undefined || isBindingLifecycleBehavior(value.empty)) &&
|
|
39
|
+
isOptionalBindingTransforms(value.transforms));
|
|
40
|
+
}
|
|
41
|
+
function isEventBinding(value) {
|
|
42
|
+
return (isRecord(value) &&
|
|
43
|
+
isEventBindingTarget(value.target) &&
|
|
44
|
+
(value.input === undefined || isBindingInputMap(value.input)) &&
|
|
45
|
+
(value.when === undefined || isBindingCondition(value.when)));
|
|
46
|
+
}
|
|
47
|
+
function isEventBindingTarget(value) {
|
|
48
|
+
return (isRecord(value) &&
|
|
49
|
+
((value.kind === 'action' && typeof value.type === 'string') ||
|
|
50
|
+
(value.kind === 'operation' && isBindingOperationRef(value.operation))));
|
|
51
|
+
}
|
|
52
|
+
function isBindingCondition(value) {
|
|
53
|
+
return (isRecord(value) &&
|
|
54
|
+
isBindingValueSource(value.source) &&
|
|
55
|
+
['eq', 'exists', 'neq', 'notExists'].includes(String(value.operator)) &&
|
|
56
|
+
(value.value === undefined || isManifestValue(value.value)));
|
|
57
|
+
}
|
|
58
|
+
function isBindingOperationRef(value) {
|
|
59
|
+
return (isRecord(value) &&
|
|
60
|
+
typeof value.dataSourceId === 'string' &&
|
|
61
|
+
typeof value.operationId === 'string' &&
|
|
62
|
+
isOptionalString(value.endpointId));
|
|
63
|
+
}
|
|
64
|
+
function isBindingFallback(value) {
|
|
65
|
+
return (isRecord(value) &&
|
|
66
|
+
(value.value === undefined || isManifestValue(value.value)) &&
|
|
67
|
+
(value.source === undefined || isBindingValueSource(value.source)));
|
|
68
|
+
}
|
|
69
|
+
function isBindingLifecycleBehavior(value) {
|
|
70
|
+
return (isRecord(value) &&
|
|
71
|
+
typeof value.state === 'string' &&
|
|
72
|
+
['empty', 'error', 'loading'].includes(value.state) &&
|
|
73
|
+
(value.fallback === undefined || isBindingFallback(value.fallback)) &&
|
|
74
|
+
isOptionalString(value.message));
|
|
75
|
+
}
|
|
76
|
+
function isOptionalBindingTransforms(value) {
|
|
77
|
+
return (value === undefined ||
|
|
78
|
+
(Array.isArray(value) &&
|
|
79
|
+
value.every((transform) => ['lowercase', 'trim', 'uppercase'].includes(String(transform)))));
|
|
80
|
+
}
|
|
81
|
+
function isBindingInputMap(value) {
|
|
82
|
+
return isRecord(value) && Object.values(value).every(isBindingInputValue);
|
|
83
|
+
}
|
|
84
|
+
function isBindingInputValue(value) {
|
|
85
|
+
return (isRecord(value) &&
|
|
86
|
+
typeof value.kind === 'string' &&
|
|
87
|
+
((value.kind === 'array' &&
|
|
88
|
+
Array.isArray(value.items) &&
|
|
89
|
+
value.items.every(isBindingInputValue)) ||
|
|
90
|
+
(value.kind === 'literal' && isManifestValue(value.value)) ||
|
|
91
|
+
(value.kind === 'object' && isBindingInputMap(value.fields)) ||
|
|
92
|
+
(value.kind === 'source' &&
|
|
93
|
+
isBindingValueSource(value.source) &&
|
|
94
|
+
isOptionalBindingTransforms(value.transforms))));
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=bindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bindings.js","sourceRoot":"","sources":["../../src/appManifest/bindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEvE,MAAM,UAAU,8BAA8B,CAAC,KAAc;IAC3D,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1E,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;YACvB,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC;YAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW;gBAC1B,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;gBACxE,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CACtC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAc;IACzD,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,KAAK,CAAC,IAAI,KAAK,WAAW;QAC1B,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC;QACtC,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAC9D,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC;QACrC,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS;YACxB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAC7E,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;YACzB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;gBACrB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAC/B,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CACxE,CAAC,CAAC,CACR,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,0BAA0B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1E,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,0BAA0B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,0BAA0B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtE,2BAA2B,CAAC,KAAK,CAAC,UAAU,CAAC,CAC9C,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAC7D,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;YAC1D,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAC1E,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACtC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CACnC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CACnE,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAc;IAChD,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QACnD,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnE,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc;IACjD,OAAO,CACL,KAAK,KAAK,SAAS;QACnB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACnB,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAC9F,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;YACtB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACvC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;gBACtB,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;gBAClC,2BAA2B,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CACpD,CAAC;AACJ,CAAC","sourcesContent":["import { isManifestValue, isOptionalString, isRecord } from './shared';\n\nexport function isComponentDataBindingRegistry(value: unknown): boolean {\n return isRecord(value) && Object.values(value).every(isComponentDataBinding);\n}\n\nexport function isBindingValueSource(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.kind === 'string' &&\n ['context', 'event', 'literal', 'operation', 'state'].includes(value.kind) &&\n (value.kind === 'literal'\n ? isManifestValue(value.value)\n : value.kind === 'operation'\n ? isBindingOperationRef(value.operation) && isOptionalString(value.path)\n : typeof value.path === 'string')\n );\n}\n\nexport function isScreenDataLoaderDefinition(value: unknown): boolean {\n return (\n isRecord(value) &&\n value.kind === 'operation' &&\n isOptionalString(value.id) &&\n isBindingOperationRef(value.operation) &&\n (value.input === undefined || isBindingInputMap(value.input))\n );\n}\n\nfunction isComponentDataBinding(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.componentId === 'string' &&\n isOptionalString(value.componentType) &&\n (value.props === undefined ||\n (isRecord(value.props) && Object.values(value.props).every(isPropBinding))) &&\n (value.events === undefined ||\n (isRecord(value.events) &&\n Object.values(value.events).every(\n (bindings) => Array.isArray(bindings) && bindings.every(isEventBinding),\n )))\n );\n}\n\nfunction isPropBinding(value: unknown): boolean {\n return (\n isRecord(value) &&\n isBindingValueSource(value.source) &&\n (value.fallback === undefined || isBindingFallback(value.fallback)) &&\n (value.loading === undefined || isBindingLifecycleBehavior(value.loading)) &&\n (value.error === undefined || isBindingLifecycleBehavior(value.error)) &&\n (value.empty === undefined || isBindingLifecycleBehavior(value.empty)) &&\n isOptionalBindingTransforms(value.transforms)\n );\n}\n\nfunction isEventBinding(value: unknown): boolean {\n return (\n isRecord(value) &&\n isEventBindingTarget(value.target) &&\n (value.input === undefined || isBindingInputMap(value.input)) &&\n (value.when === undefined || isBindingCondition(value.when))\n );\n}\n\nfunction isEventBindingTarget(value: unknown): boolean {\n return (\n isRecord(value) &&\n ((value.kind === 'action' && typeof value.type === 'string') ||\n (value.kind === 'operation' && isBindingOperationRef(value.operation)))\n );\n}\n\nfunction isBindingCondition(value: unknown): boolean {\n return (\n isRecord(value) &&\n isBindingValueSource(value.source) &&\n ['eq', 'exists', 'neq', 'notExists'].includes(String(value.operator)) &&\n (value.value === undefined || isManifestValue(value.value))\n );\n}\n\nfunction isBindingOperationRef(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.dataSourceId === 'string' &&\n typeof value.operationId === 'string' &&\n isOptionalString(value.endpointId)\n );\n}\n\nfunction isBindingFallback(value: unknown): boolean {\n return (\n isRecord(value) &&\n (value.value === undefined || isManifestValue(value.value)) &&\n (value.source === undefined || isBindingValueSource(value.source))\n );\n}\n\nfunction isBindingLifecycleBehavior(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.state === 'string' &&\n ['empty', 'error', 'loading'].includes(value.state) &&\n (value.fallback === undefined || isBindingFallback(value.fallback)) &&\n isOptionalString(value.message)\n );\n}\n\nfunction isOptionalBindingTransforms(value: unknown): boolean {\n return (\n value === undefined ||\n (Array.isArray(value) &&\n value.every((transform) => ['lowercase', 'trim', 'uppercase'].includes(String(transform))))\n );\n}\n\nfunction isBindingInputMap(value: unknown): boolean {\n return isRecord(value) && Object.values(value).every(isBindingInputValue);\n}\n\nfunction isBindingInputValue(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.kind === 'string' &&\n ((value.kind === 'array' &&\n Array.isArray(value.items) &&\n value.items.every(isBindingInputValue)) ||\n (value.kind === 'literal' && isManifestValue(value.value)) ||\n (value.kind === 'object' && isBindingInputMap(value.fields)) ||\n (value.kind === 'source' &&\n isBindingValueSource(value.source) &&\n isOptionalBindingTransforms(value.transforms)))\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataSources.d.ts","sourceRoot":"","sources":["../../src/appManifest/dataSources.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE5D"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { isManifestValue, isOptionalBoolean, isOptionalString, isRecord } from './shared';
|
|
2
|
+
export function isDataSourceRegistry(value) {
|
|
3
|
+
return isRecord(value) && Object.values(value).every(isDataSourceConfig);
|
|
4
|
+
}
|
|
5
|
+
function isDataSourceConfig(value) {
|
|
6
|
+
if (!hasBaseDataSourceShape(value))
|
|
7
|
+
return false;
|
|
8
|
+
if (value.kind === 'database')
|
|
9
|
+
return isDatabaseDataSource(value);
|
|
10
|
+
if (value.origin === 'generated')
|
|
11
|
+
return isGeneratedDataSource(value);
|
|
12
|
+
if (value.origin !== 'external')
|
|
13
|
+
return false;
|
|
14
|
+
return isExternalDataSource(value);
|
|
15
|
+
}
|
|
16
|
+
function hasBaseDataSourceShape(value) {
|
|
17
|
+
return (isRecord(value) &&
|
|
18
|
+
typeof value.id === 'string' &&
|
|
19
|
+
(value.kind === 'api' || value.kind === 'database') &&
|
|
20
|
+
isOptionalString(value.name) &&
|
|
21
|
+
isOptionalString(value.description) &&
|
|
22
|
+
(value.credential === undefined || isCredentialRef(value.credential)) &&
|
|
23
|
+
isDataEndpointRegistry(value.endpoints) &&
|
|
24
|
+
(value.schemas === undefined || isRecord(value.schemas)) &&
|
|
25
|
+
(value.metadata === undefined || isManifestValue(value.metadata)));
|
|
26
|
+
}
|
|
27
|
+
function isDatabaseDataSource(value) {
|
|
28
|
+
return (isRecord(value.adapter) && value.adapter.kind === 'database' && isAdapterRef(value.adapter));
|
|
29
|
+
}
|
|
30
|
+
function isGeneratedDataSource(value) {
|
|
31
|
+
return (value.protocol === 'rest' &&
|
|
32
|
+
typeof value.generatedApiId === 'string' &&
|
|
33
|
+
isRecord(value.adapter) &&
|
|
34
|
+
value.adapter.kind === 'database' &&
|
|
35
|
+
isAdapterRef(value.adapter));
|
|
36
|
+
}
|
|
37
|
+
function isExternalDataSource(value) {
|
|
38
|
+
if (value.protocol === 'rest') {
|
|
39
|
+
return (typeof value.baseUrl === 'string' &&
|
|
40
|
+
(value.openApi === undefined || isOpenApiDocumentRef(value.openApi)));
|
|
41
|
+
}
|
|
42
|
+
if (value.protocol === 'graphql') {
|
|
43
|
+
return (typeof value.endpointUrl === 'string' &&
|
|
44
|
+
(value.introspection === undefined || isGraphQlIntrospection(value.introspection)));
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
function isOpenApiDocumentRef(value) {
|
|
49
|
+
return (isRecord(value) &&
|
|
50
|
+
isOptionalString(value.url) &&
|
|
51
|
+
isOptionalString(value.documentId) &&
|
|
52
|
+
isOptionalString(value.version));
|
|
53
|
+
}
|
|
54
|
+
function isGraphQlIntrospection(value) {
|
|
55
|
+
return (isRecord(value) && typeof value.enabled === 'boolean' && isOptionalString(value.schemaVersion));
|
|
56
|
+
}
|
|
57
|
+
function isDataEndpointRegistry(value) {
|
|
58
|
+
return isRecord(value) && Object.values(value).every(isDataEndpointConfig);
|
|
59
|
+
}
|
|
60
|
+
function isDataEndpointConfig(value) {
|
|
61
|
+
return (isRecord(value) &&
|
|
62
|
+
typeof value.id === 'string' &&
|
|
63
|
+
typeof value.kind === 'string' &&
|
|
64
|
+
isOptionalString(value.name) &&
|
|
65
|
+
isOptionalString(value.description) &&
|
|
66
|
+
isOptionalString(value.baseUrl) &&
|
|
67
|
+
isOptionalString(value.path) &&
|
|
68
|
+
(value.credential === undefined || isCredentialRef(value.credential)) &&
|
|
69
|
+
isRecord(value.operations) &&
|
|
70
|
+
Object.values(value.operations).every(isDataOperationConfig) &&
|
|
71
|
+
(value.metadata === undefined || isManifestValue(value.metadata)));
|
|
72
|
+
}
|
|
73
|
+
function isDataOperationConfig(value) {
|
|
74
|
+
return (isRecord(value) &&
|
|
75
|
+
typeof value.id === 'string' &&
|
|
76
|
+
isOptionalString(value.endpointId) &&
|
|
77
|
+
isOptionalString(value.name) &&
|
|
78
|
+
isOptionalString(value.description) &&
|
|
79
|
+
typeof value.protocol === 'string' &&
|
|
80
|
+
typeof value.intent === 'string' &&
|
|
81
|
+
['action', 'create', 'delete', 'read', 'update'].includes(value.intent) &&
|
|
82
|
+
isOptionalString(value.method) &&
|
|
83
|
+
isOptionalString(value.path) &&
|
|
84
|
+
(value.request === undefined || isDataOperationRequest(value.request)) &&
|
|
85
|
+
(value.response === undefined || isDataOperationResponse(value.response)) &&
|
|
86
|
+
(value.pagination === undefined || isRecord(value.pagination)) &&
|
|
87
|
+
(value.credential === undefined || isCredentialRef(value.credential)) &&
|
|
88
|
+
(value.metadata === undefined || isManifestValue(value.metadata)));
|
|
89
|
+
}
|
|
90
|
+
function isDataOperationRequest(value) {
|
|
91
|
+
return (isRecord(value) &&
|
|
92
|
+
isDataSchemaSlot(value) &&
|
|
93
|
+
(value.parameters === undefined ||
|
|
94
|
+
(Array.isArray(value.parameters) && value.parameters.every(isDataOperationParameter))));
|
|
95
|
+
}
|
|
96
|
+
function isDataOperationParameter(value) {
|
|
97
|
+
return (isRecord(value) &&
|
|
98
|
+
isDataSchemaSlot(value) &&
|
|
99
|
+
typeof value.name === 'string' &&
|
|
100
|
+
typeof value.location === 'string' &&
|
|
101
|
+
['body', 'cookie', 'header', 'path', 'query'].includes(value.location) &&
|
|
102
|
+
isOptionalBoolean(value.required) &&
|
|
103
|
+
isOptionalString(value.description) &&
|
|
104
|
+
(value.default === undefined || isManifestValue(value.default)));
|
|
105
|
+
}
|
|
106
|
+
function isDataOperationResponse(value) {
|
|
107
|
+
return (isRecord(value) &&
|
|
108
|
+
isDataSchemaSlot(value) &&
|
|
109
|
+
(value.status === undefined ||
|
|
110
|
+
typeof value.status === 'string' ||
|
|
111
|
+
typeof value.status === 'number') &&
|
|
112
|
+
isOptionalString(value.contentType) &&
|
|
113
|
+
isOptionalString(value.description));
|
|
114
|
+
}
|
|
115
|
+
function isDataSchemaSlot(value) {
|
|
116
|
+
return isRecord(value) && (value.schema === undefined || isRecord(value.schema));
|
|
117
|
+
}
|
|
118
|
+
function isCredentialRef(value) {
|
|
119
|
+
return (isRecord(value) &&
|
|
120
|
+
typeof value.id === 'string' &&
|
|
121
|
+
typeof value.kind === 'string' &&
|
|
122
|
+
isOptionalString(value.label) &&
|
|
123
|
+
isOptionalString(value.scope));
|
|
124
|
+
}
|
|
125
|
+
function isAdapterRef(value) {
|
|
126
|
+
return (isRecord(value) &&
|
|
127
|
+
typeof value.id === 'string' &&
|
|
128
|
+
typeof value.kind === 'string' &&
|
|
129
|
+
isOptionalString(value.packageName) &&
|
|
130
|
+
isOptionalString(value.exportName) &&
|
|
131
|
+
(value.config === undefined || isManifestValue(value.config)));
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=dataSources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataSources.js","sourceRoot":"","sources":["../../src/appManifest/dataSources.ts"],"names":[],"mappings":"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","sourcesContent":["import { isManifestValue, isOptionalBoolean, isOptionalString, isRecord } from './shared';\n\nexport function isDataSourceRegistry(value: unknown): boolean {\n return isRecord(value) && Object.values(value).every(isDataSourceConfig);\n}\n\nfunction isDataSourceConfig(value: unknown): boolean {\n if (!hasBaseDataSourceShape(value)) return false;\n if (value.kind === 'database') return isDatabaseDataSource(value);\n if (value.origin === 'generated') return isGeneratedDataSource(value);\n if (value.origin !== 'external') return false;\n return isExternalDataSource(value);\n}\n\nfunction hasBaseDataSourceShape(value: unknown): value is Record<string, unknown> {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n (value.kind === 'api' || value.kind === 'database') &&\n isOptionalString(value.name) &&\n isOptionalString(value.description) &&\n (value.credential === undefined || isCredentialRef(value.credential)) &&\n isDataEndpointRegistry(value.endpoints) &&\n (value.schemas === undefined || isRecord(value.schemas)) &&\n (value.metadata === undefined || isManifestValue(value.metadata))\n );\n}\n\nfunction isDatabaseDataSource(value: Record<string, unknown>): boolean {\n return (\n isRecord(value.adapter) && value.adapter.kind === 'database' && isAdapterRef(value.adapter)\n );\n}\n\nfunction isGeneratedDataSource(value: Record<string, unknown>): boolean {\n return (\n value.protocol === 'rest' &&\n typeof value.generatedApiId === 'string' &&\n isRecord(value.adapter) &&\n value.adapter.kind === 'database' &&\n isAdapterRef(value.adapter)\n );\n}\n\nfunction isExternalDataSource(value: Record<string, unknown>): boolean {\n if (value.protocol === 'rest') {\n return (\n typeof value.baseUrl === 'string' &&\n (value.openApi === undefined || isOpenApiDocumentRef(value.openApi))\n );\n }\n\n if (value.protocol === 'graphql') {\n return (\n typeof value.endpointUrl === 'string' &&\n (value.introspection === undefined || isGraphQlIntrospection(value.introspection))\n );\n }\n\n return false;\n}\n\nfunction isOpenApiDocumentRef(value: unknown): boolean {\n return (\n isRecord(value) &&\n isOptionalString(value.url) &&\n isOptionalString(value.documentId) &&\n isOptionalString(value.version)\n );\n}\n\nfunction isGraphQlIntrospection(value: unknown): boolean {\n return (\n isRecord(value) && typeof value.enabled === 'boolean' && isOptionalString(value.schemaVersion)\n );\n}\n\nfunction isDataEndpointRegistry(value: unknown): boolean {\n return isRecord(value) && Object.values(value).every(isDataEndpointConfig);\n}\n\nfunction isDataEndpointConfig(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n typeof value.kind === 'string' &&\n isOptionalString(value.name) &&\n isOptionalString(value.description) &&\n isOptionalString(value.baseUrl) &&\n isOptionalString(value.path) &&\n (value.credential === undefined || isCredentialRef(value.credential)) &&\n isRecord(value.operations) &&\n Object.values(value.operations).every(isDataOperationConfig) &&\n (value.metadata === undefined || isManifestValue(value.metadata))\n );\n}\n\nfunction isDataOperationConfig(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n isOptionalString(value.endpointId) &&\n isOptionalString(value.name) &&\n isOptionalString(value.description) &&\n typeof value.protocol === 'string' &&\n typeof value.intent === 'string' &&\n ['action', 'create', 'delete', 'read', 'update'].includes(value.intent) &&\n isOptionalString(value.method) &&\n isOptionalString(value.path) &&\n (value.request === undefined || isDataOperationRequest(value.request)) &&\n (value.response === undefined || isDataOperationResponse(value.response)) &&\n (value.pagination === undefined || isRecord(value.pagination)) &&\n (value.credential === undefined || isCredentialRef(value.credential)) &&\n (value.metadata === undefined || isManifestValue(value.metadata))\n );\n}\n\nfunction isDataOperationRequest(value: unknown): boolean {\n return (\n isRecord(value) &&\n isDataSchemaSlot(value) &&\n (value.parameters === undefined ||\n (Array.isArray(value.parameters) && value.parameters.every(isDataOperationParameter)))\n );\n}\n\nfunction isDataOperationParameter(value: unknown): boolean {\n return (\n isRecord(value) &&\n isDataSchemaSlot(value) &&\n typeof value.name === 'string' &&\n typeof value.location === 'string' &&\n ['body', 'cookie', 'header', 'path', 'query'].includes(value.location) &&\n isOptionalBoolean(value.required) &&\n isOptionalString(value.description) &&\n (value.default === undefined || isManifestValue(value.default))\n );\n}\n\nfunction isDataOperationResponse(value: unknown): boolean {\n return (\n isRecord(value) &&\n isDataSchemaSlot(value) &&\n (value.status === undefined ||\n typeof value.status === 'string' ||\n typeof value.status === 'number') &&\n isOptionalString(value.contentType) &&\n isOptionalString(value.description)\n );\n}\n\nfunction isDataSchemaSlot(value: unknown): boolean {\n return isRecord(value) && (value.schema === undefined || isRecord(value.schema));\n}\n\nfunction isCredentialRef(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n typeof value.kind === 'string' &&\n isOptionalString(value.label) &&\n isOptionalString(value.scope)\n );\n}\n\nfunction isAdapterRef(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n typeof value.kind === 'string' &&\n isOptionalString(value.packageName) &&\n isOptionalString(value.exportName) &&\n (value.config === undefined || isManifestValue(value.config))\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generatedApis.d.ts","sourceRoot":"","sources":["../../src/appManifest/generatedApis.ts"],"names":[],"mappings":"AAQA,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE9D"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { isManifestValue, isOptionalBoolean, isOptionalString, isRecord, isStringArray, } from './shared';
|
|
2
|
+
export function isGeneratedApiRegistry(value) {
|
|
3
|
+
return isRecord(value) && Object.values(value).every(isGeneratedApiDefinition);
|
|
4
|
+
}
|
|
5
|
+
function isGeneratedApiDefinition(value) {
|
|
6
|
+
return (isRecord(value) &&
|
|
7
|
+
typeof value.id === 'string' &&
|
|
8
|
+
value.protocol === 'rest' &&
|
|
9
|
+
isOptionalString(value.name) &&
|
|
10
|
+
isOptionalString(value.description) &&
|
|
11
|
+
typeof value.basePath === 'string' &&
|
|
12
|
+
isDatabaseAdapterRef(value.database) &&
|
|
13
|
+
Array.isArray(value.resources) &&
|
|
14
|
+
value.resources.every(isGeneratedApiResourceDefinition) &&
|
|
15
|
+
(value.auth === undefined || isGeneratedApiAuthRequirement(value.auth)) &&
|
|
16
|
+
(value.metadata === undefined || isManifestValue(value.metadata)));
|
|
17
|
+
}
|
|
18
|
+
function isDatabaseAdapterRef(value) {
|
|
19
|
+
return isRecord(value) && value.kind === 'database' && isAdapterRef(value);
|
|
20
|
+
}
|
|
21
|
+
function isGeneratedApiAuthRequirement(value) {
|
|
22
|
+
return (isRecord(value) &&
|
|
23
|
+
isOptionalBoolean(value.required) &&
|
|
24
|
+
(value.roles === undefined || isStringArray(value.roles)) &&
|
|
25
|
+
(value.permissions === undefined || isStringArray(value.permissions)) &&
|
|
26
|
+
isOptionalString(value.policy) &&
|
|
27
|
+
(value.metadata === undefined || isManifestValue(value.metadata)));
|
|
28
|
+
}
|
|
29
|
+
function isGeneratedApiResourceDefinition(value) {
|
|
30
|
+
return (isRecord(value) &&
|
|
31
|
+
typeof value.id === 'string' &&
|
|
32
|
+
isOptionalString(value.name) &&
|
|
33
|
+
isOptionalString(value.description) &&
|
|
34
|
+
typeof value.path === 'string' &&
|
|
35
|
+
isDbCollectionDefinition(value.collection) &&
|
|
36
|
+
Array.isArray(value.operations) &&
|
|
37
|
+
value.operations.every(isGeneratedApiCrudOperation) &&
|
|
38
|
+
(value.seed === undefined || isSeedRecords(value.seed)) &&
|
|
39
|
+
(value.policies === undefined ||
|
|
40
|
+
(Array.isArray(value.policies) && value.policies.every(isGeneratedApiPolicyRef))) &&
|
|
41
|
+
(value.metadata === undefined || isManifestValue(value.metadata)));
|
|
42
|
+
}
|
|
43
|
+
function isSeedRecords(value) {
|
|
44
|
+
return (Array.isArray(value) &&
|
|
45
|
+
value.every((record) => isRecord(record) && Object.values(record).every(isManifestValue)));
|
|
46
|
+
}
|
|
47
|
+
function isGeneratedApiCrudOperation(value) {
|
|
48
|
+
return ['create', 'delete', 'list', 'read', 'update'].includes(String(value));
|
|
49
|
+
}
|
|
50
|
+
function isGeneratedApiPolicyRef(value) {
|
|
51
|
+
return (isRecord(value) &&
|
|
52
|
+
typeof value.id === 'string' &&
|
|
53
|
+
(value.operation === undefined || isGeneratedApiCrudOperation(value.operation)));
|
|
54
|
+
}
|
|
55
|
+
function isDbCollectionDefinition(value) {
|
|
56
|
+
return (isRecord(value) &&
|
|
57
|
+
typeof value.name === 'string' &&
|
|
58
|
+
isOptionalString(value.schema) &&
|
|
59
|
+
Array.isArray(value.fields) &&
|
|
60
|
+
value.fields.every(isDbFieldDefinition) &&
|
|
61
|
+
isOptionalString(value.primaryKey));
|
|
62
|
+
}
|
|
63
|
+
function isDbFieldDefinition(value) {
|
|
64
|
+
return (isRecord(value) &&
|
|
65
|
+
typeof value.name === 'string' &&
|
|
66
|
+
typeof value.type === 'string' &&
|
|
67
|
+
['text', 'number', 'boolean', 'datetime', 'json', 'uuid'].includes(value.type) &&
|
|
68
|
+
isOptionalBoolean(value.required) &&
|
|
69
|
+
isOptionalBoolean(value.unique) &&
|
|
70
|
+
isDbDefaultValue(value.defaultValue));
|
|
71
|
+
}
|
|
72
|
+
function isDbDefaultValue(value) {
|
|
73
|
+
return (value === undefined ||
|
|
74
|
+
value === null ||
|
|
75
|
+
typeof value === 'boolean' ||
|
|
76
|
+
typeof value === 'number' ||
|
|
77
|
+
typeof value === 'string');
|
|
78
|
+
}
|
|
79
|
+
function isAdapterRef(value) {
|
|
80
|
+
return (isRecord(value) &&
|
|
81
|
+
typeof value.id === 'string' &&
|
|
82
|
+
typeof value.kind === 'string' &&
|
|
83
|
+
isOptionalString(value.packageName) &&
|
|
84
|
+
isOptionalString(value.exportName) &&
|
|
85
|
+
(value.config === undefined || isManifestValue(value.config)));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=generatedApis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generatedApis.js","sourceRoot":"","sources":["../../src/appManifest/generatedApis.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACR,aAAa,GACd,MAAM,UAAU,CAAC;AAElB,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC9C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,KAAK,CAAC,QAAQ,KAAK,MAAM;QACzB,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5B,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC;QACnC,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAClC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC;QACpC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9B,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,gCAAgC,CAAC;QACvD,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,6BAA6B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAc;IACnD,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjC,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACrE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;QAC9B,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,SAAS,gCAAgC,CAAC,KAAc;IACtD,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5B,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC;QACnC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,wBAAwB,CAAC,KAAK,CAAC,UAAU,CAAC;QAC1C,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;QAC/B,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,2BAA2B,CAAC;QACnD,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS;YAC3B,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACnF,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAC1F,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc;IACjD,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,2BAA2B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAChF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC9C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;QAC9B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC;QACvC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CACnC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9E,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC;QAC/B,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,CACrC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,CACL,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,SAAS;QAC1B,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC;QACnC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC;QAClC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAC9D,CAAC;AACJ,CAAC","sourcesContent":["import {\n isManifestValue,\n isOptionalBoolean,\n isOptionalString,\n isRecord,\n isStringArray,\n} from './shared';\n\nexport function isGeneratedApiRegistry(value: unknown): boolean {\n return isRecord(value) && Object.values(value).every(isGeneratedApiDefinition);\n}\n\nfunction isGeneratedApiDefinition(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n value.protocol === 'rest' &&\n isOptionalString(value.name) &&\n isOptionalString(value.description) &&\n typeof value.basePath === 'string' &&\n isDatabaseAdapterRef(value.database) &&\n Array.isArray(value.resources) &&\n value.resources.every(isGeneratedApiResourceDefinition) &&\n (value.auth === undefined || isGeneratedApiAuthRequirement(value.auth)) &&\n (value.metadata === undefined || isManifestValue(value.metadata))\n );\n}\n\nfunction isDatabaseAdapterRef(value: unknown): boolean {\n return isRecord(value) && value.kind === 'database' && isAdapterRef(value);\n}\n\nfunction isGeneratedApiAuthRequirement(value: unknown): boolean {\n return (\n isRecord(value) &&\n isOptionalBoolean(value.required) &&\n (value.roles === undefined || isStringArray(value.roles)) &&\n (value.permissions === undefined || isStringArray(value.permissions)) &&\n isOptionalString(value.policy) &&\n (value.metadata === undefined || isManifestValue(value.metadata))\n );\n}\n\nfunction isGeneratedApiResourceDefinition(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n isOptionalString(value.name) &&\n isOptionalString(value.description) &&\n typeof value.path === 'string' &&\n isDbCollectionDefinition(value.collection) &&\n Array.isArray(value.operations) &&\n value.operations.every(isGeneratedApiCrudOperation) &&\n (value.seed === undefined || isSeedRecords(value.seed)) &&\n (value.policies === undefined ||\n (Array.isArray(value.policies) && value.policies.every(isGeneratedApiPolicyRef))) &&\n (value.metadata === undefined || isManifestValue(value.metadata))\n );\n}\n\nfunction isSeedRecords(value: unknown): boolean {\n return (\n Array.isArray(value) &&\n value.every((record) => isRecord(record) && Object.values(record).every(isManifestValue))\n );\n}\n\nfunction isGeneratedApiCrudOperation(value: unknown): boolean {\n return ['create', 'delete', 'list', 'read', 'update'].includes(String(value));\n}\n\nfunction isGeneratedApiPolicyRef(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n (value.operation === undefined || isGeneratedApiCrudOperation(value.operation))\n );\n}\n\nfunction isDbCollectionDefinition(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.name === 'string' &&\n isOptionalString(value.schema) &&\n Array.isArray(value.fields) &&\n value.fields.every(isDbFieldDefinition) &&\n isOptionalString(value.primaryKey)\n );\n}\n\nfunction isDbFieldDefinition(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.name === 'string' &&\n typeof value.type === 'string' &&\n ['text', 'number', 'boolean', 'datetime', 'json', 'uuid'].includes(value.type) &&\n isOptionalBoolean(value.required) &&\n isOptionalBoolean(value.unique) &&\n isDbDefaultValue(value.defaultValue)\n );\n}\n\nfunction isDbDefaultValue(value: unknown): boolean {\n return (\n value === undefined ||\n value === null ||\n typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string'\n );\n}\n\nfunction isAdapterRef(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n typeof value.kind === 'string' &&\n isOptionalString(value.packageName) &&\n isOptionalString(value.exportName) &&\n (value.config === undefined || isManifestValue(value.config))\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infra.d.ts","sourceRoot":"","sources":["../../src/appManifest/infra.ts"],"names":[],"mappings":"AAmCA,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAevD"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { AUTH_OAUTH_PROVIDER_IDS } from '../auth';
|
|
2
|
+
import { AUTH_PROFILE_CREATE_STRATEGIES, AUTH_PROFILE_PRIMARY_KEY_STRATEGIES, AUTH_PROFILE_UPDATE_STRATEGIES, AUTH_SCOPES, AUTH_SIGN_IN_IDENTIFIERS, AUTH_SIGN_UP_POLICIES, AUTHZ_ENGINES, AUTHZ_KINDS, DATABASE_TIERS, STATE_PERSISTENCE_MODES, STORAGE_PROVIDERS, } from '../types';
|
|
3
|
+
import { isOptionalBoolean, isOptionalString, isRecord, isStringArray, isStringRecord, } from './shared';
|
|
4
|
+
const AUTH_OAUTH_PROVIDER_SET = new Set(AUTH_OAUTH_PROVIDER_IDS);
|
|
5
|
+
const AUTH_PROFILE_CREATE_STRATEGY_SET = new Set(AUTH_PROFILE_CREATE_STRATEGIES);
|
|
6
|
+
const AUTH_PROFILE_PRIMARY_KEY_STRATEGY_SET = new Set(AUTH_PROFILE_PRIMARY_KEY_STRATEGIES);
|
|
7
|
+
const AUTH_PROFILE_UPDATE_STRATEGY_SET = new Set(AUTH_PROFILE_UPDATE_STRATEGIES);
|
|
8
|
+
const AUTH_SCOPE_SET = new Set(AUTH_SCOPES);
|
|
9
|
+
const AUTH_SIGN_IN_IDENTIFIER_SET = new Set(AUTH_SIGN_IN_IDENTIFIERS);
|
|
10
|
+
const AUTH_SIGN_UP_POLICY_SET = new Set(AUTH_SIGN_UP_POLICIES);
|
|
11
|
+
const AUTHZ_ENGINE_SET = new Set(AUTHZ_ENGINES);
|
|
12
|
+
const AUTHZ_KIND_SET = new Set(AUTHZ_KINDS);
|
|
13
|
+
const DATABASE_TIER_SET = new Set(DATABASE_TIERS);
|
|
14
|
+
const STATE_PERSISTENCE_MODE_SET = new Set(STATE_PERSISTENCE_MODES);
|
|
15
|
+
const STORAGE_PROVIDER_SET = new Set(STORAGE_PROVIDERS);
|
|
16
|
+
export function isInfraManifest(value) {
|
|
17
|
+
return (isRecord(value) &&
|
|
18
|
+
(value.deployment === undefined || isDeploymentSpec(value.deployment)) &&
|
|
19
|
+
(value.auth === undefined || isAuthSpec(value.auth)) &&
|
|
20
|
+
(value.database === undefined || isDatabaseSpec(value.database)) &&
|
|
21
|
+
(value.storage === undefined || isStorageSpec(value.storage)) &&
|
|
22
|
+
(value.state === undefined || isStateSpec(value.state)) &&
|
|
23
|
+
(value.networking === undefined || isNetworkingSpec(value.networking)) &&
|
|
24
|
+
Array.isArray(value.modules) &&
|
|
25
|
+
value.modules.every((moduleId) => typeof moduleId === 'string') &&
|
|
26
|
+
(value.modulesConfig === undefined || isRecord(value.modulesConfig)) &&
|
|
27
|
+
!('plugins' in value) &&
|
|
28
|
+
!('pluginsConfig' in value));
|
|
29
|
+
}
|
|
30
|
+
function isDeploymentSpec(value) {
|
|
31
|
+
return (isRecord(value) && typeof value.target === 'string' && typeof value.monitoring === 'boolean');
|
|
32
|
+
}
|
|
33
|
+
function isDatabaseSpec(value) {
|
|
34
|
+
return (isRecord(value) &&
|
|
35
|
+
typeof value.provider === 'string' &&
|
|
36
|
+
typeof value.tier === 'string' &&
|
|
37
|
+
DATABASE_TIER_SET.has(value.tier));
|
|
38
|
+
}
|
|
39
|
+
function isStorageSpec(value) {
|
|
40
|
+
return (isRecord(value) &&
|
|
41
|
+
typeof value.provider === 'string' &&
|
|
42
|
+
STORAGE_PROVIDER_SET.has(value.provider) &&
|
|
43
|
+
isStringArray(value.buckets));
|
|
44
|
+
}
|
|
45
|
+
function isStateSpec(value) {
|
|
46
|
+
return (isRecord(value) &&
|
|
47
|
+
typeof value.provider === 'string' &&
|
|
48
|
+
(value.persistence === undefined ||
|
|
49
|
+
(typeof value.persistence === 'string' && STATE_PERSISTENCE_MODE_SET.has(value.persistence))));
|
|
50
|
+
}
|
|
51
|
+
function isNetworkingSpec(value) {
|
|
52
|
+
return isRecord(value) && isOptionalString(value.domain) && typeof value.cdn === 'boolean';
|
|
53
|
+
}
|
|
54
|
+
function isAuthSpec(value) {
|
|
55
|
+
return (isRecord(value) &&
|
|
56
|
+
typeof value.scope === 'string' &&
|
|
57
|
+
AUTH_SCOPE_SET.has(value.scope) &&
|
|
58
|
+
typeof value.provider === 'string' &&
|
|
59
|
+
(value.authorization === undefined || isAuthzSpec(value.authorization)) &&
|
|
60
|
+
(value.flow === undefined || isAuthFlow(value.flow)) &&
|
|
61
|
+
(value.signIn === undefined || isAuthSignInSpec(value.signIn)) &&
|
|
62
|
+
(value.signUp === undefined || isAuthSignUpSpec(value.signUp)) &&
|
|
63
|
+
(value.oauth === undefined || isAuthOAuthConfig(value.oauth)) &&
|
|
64
|
+
(value.profile === undefined || isAuthProfileSpec(value.profile)));
|
|
65
|
+
}
|
|
66
|
+
function isAuthzSpec(value) {
|
|
67
|
+
return (isRecord(value) &&
|
|
68
|
+
typeof value.kind === 'string' &&
|
|
69
|
+
AUTHZ_KIND_SET.has(value.kind) &&
|
|
70
|
+
typeof value.engine === 'string' &&
|
|
71
|
+
AUTHZ_ENGINE_SET.has(value.engine));
|
|
72
|
+
}
|
|
73
|
+
function isAuthFlow(value) {
|
|
74
|
+
return (isRecord(value) &&
|
|
75
|
+
typeof value.signInRoute === 'string' &&
|
|
76
|
+
isOptionalString(value.signUpRoute) &&
|
|
77
|
+
isOptionalString(value.signOutRoute) &&
|
|
78
|
+
isOptionalString(value.forgotPasswordRoute) &&
|
|
79
|
+
isOptionalString(value.otpRoute) &&
|
|
80
|
+
typeof value.postSignInRoute === 'string' &&
|
|
81
|
+
isOptionalString(value.unauthorizedRoute));
|
|
82
|
+
}
|
|
83
|
+
function isAuthSignInSpec(value) {
|
|
84
|
+
return (isRecord(value) &&
|
|
85
|
+
Array.isArray(value.identifiers) &&
|
|
86
|
+
value.identifiers.every((identifier) => typeof identifier === 'string' && AUTH_SIGN_IN_IDENTIFIER_SET.has(identifier)));
|
|
87
|
+
}
|
|
88
|
+
function isAuthSignUpSpec(value) {
|
|
89
|
+
return (isRecord(value) &&
|
|
90
|
+
isStringArray(value.requiredFields) &&
|
|
91
|
+
(value.optionalFields === undefined || isStringArray(value.optionalFields)) &&
|
|
92
|
+
(value.signUpPolicy === undefined ||
|
|
93
|
+
(typeof value.signUpPolicy === 'string' && AUTH_SIGN_UP_POLICY_SET.has(value.signUpPolicy))));
|
|
94
|
+
}
|
|
95
|
+
function isAuthOAuthConfig(value) {
|
|
96
|
+
return (isRecord(value) &&
|
|
97
|
+
typeof value.enabled === 'boolean' &&
|
|
98
|
+
typeof value.callbackRoute === 'string' &&
|
|
99
|
+
Array.isArray(value.providers) &&
|
|
100
|
+
value.providers.every(isAuthOAuthProviderConfig));
|
|
101
|
+
}
|
|
102
|
+
function isAuthOAuthProviderConfig(value) {
|
|
103
|
+
return (isRecord(value) &&
|
|
104
|
+
typeof value.id === 'string' &&
|
|
105
|
+
(AUTH_OAUTH_PROVIDER_SET.has(value.id) || value.id.length > 0) &&
|
|
106
|
+
isOptionalString(value.label) &&
|
|
107
|
+
isOptionalBoolean(value.enabled) &&
|
|
108
|
+
(value.scopes === undefined || isStringArray(value.scopes)) &&
|
|
109
|
+
(value.queryParams === undefined || isStringRecord(value.queryParams)) &&
|
|
110
|
+
(value.icon === undefined || isIconSpec(value.icon)) &&
|
|
111
|
+
(value.credentialsRef === undefined || typeof value.credentialsRef === 'string'));
|
|
112
|
+
}
|
|
113
|
+
function isAuthProfileSpec(value) {
|
|
114
|
+
return (isRecord(value) &&
|
|
115
|
+
isStringArray(value.fields) &&
|
|
116
|
+
isOptionalString(value.table) &&
|
|
117
|
+
(value.primaryKey === undefined ||
|
|
118
|
+
(typeof value.primaryKey === 'string' &&
|
|
119
|
+
AUTH_PROFILE_PRIMARY_KEY_STRATEGY_SET.has(value.primaryKey))) &&
|
|
120
|
+
(value.createStrategy === undefined ||
|
|
121
|
+
(typeof value.createStrategy === 'string' &&
|
|
122
|
+
AUTH_PROFILE_CREATE_STRATEGY_SET.has(value.createStrategy))) &&
|
|
123
|
+
(value.updateStrategy === undefined ||
|
|
124
|
+
(typeof value.updateStrategy === 'string' &&
|
|
125
|
+
AUTH_PROFILE_UPDATE_STRATEGY_SET.has(value.updateStrategy))));
|
|
126
|
+
}
|
|
127
|
+
function isIconSpec(value) {
|
|
128
|
+
return (isRecord(value) &&
|
|
129
|
+
typeof value.name === 'string' &&
|
|
130
|
+
isOptionalString(value.provider) &&
|
|
131
|
+
(value.size === undefined ||
|
|
132
|
+
typeof value.size === 'string' ||
|
|
133
|
+
typeof value.size === 'number') &&
|
|
134
|
+
isOptionalString(value.color));
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=infra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../../src/appManifest/infra.ts"],"names":[],"mappings":"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","sourcesContent":["import { AUTH_OAUTH_PROVIDER_IDS } from '../auth';\nimport {\n AUTH_PROFILE_CREATE_STRATEGIES,\n AUTH_PROFILE_PRIMARY_KEY_STRATEGIES,\n AUTH_PROFILE_UPDATE_STRATEGIES,\n AUTH_SCOPES,\n AUTH_SIGN_IN_IDENTIFIERS,\n AUTH_SIGN_UP_POLICIES,\n AUTHZ_ENGINES,\n AUTHZ_KINDS,\n DATABASE_TIERS,\n STATE_PERSISTENCE_MODES,\n STORAGE_PROVIDERS,\n} from '../types';\nimport {\n isOptionalBoolean,\n isOptionalString,\n isRecord,\n isStringArray,\n isStringRecord,\n} from './shared';\n\nconst AUTH_OAUTH_PROVIDER_SET = new Set<string>(AUTH_OAUTH_PROVIDER_IDS);\nconst AUTH_PROFILE_CREATE_STRATEGY_SET = new Set<string>(AUTH_PROFILE_CREATE_STRATEGIES);\nconst AUTH_PROFILE_PRIMARY_KEY_STRATEGY_SET = new Set<string>(AUTH_PROFILE_PRIMARY_KEY_STRATEGIES);\nconst AUTH_PROFILE_UPDATE_STRATEGY_SET = new Set<string>(AUTH_PROFILE_UPDATE_STRATEGIES);\nconst AUTH_SCOPE_SET = new Set<string>(AUTH_SCOPES);\nconst AUTH_SIGN_IN_IDENTIFIER_SET = new Set<string>(AUTH_SIGN_IN_IDENTIFIERS);\nconst AUTH_SIGN_UP_POLICY_SET = new Set<string>(AUTH_SIGN_UP_POLICIES);\nconst AUTHZ_ENGINE_SET = new Set<string>(AUTHZ_ENGINES);\nconst AUTHZ_KIND_SET = new Set<string>(AUTHZ_KINDS);\nconst DATABASE_TIER_SET = new Set<string>(DATABASE_TIERS);\nconst STATE_PERSISTENCE_MODE_SET = new Set<string>(STATE_PERSISTENCE_MODES);\nconst STORAGE_PROVIDER_SET = new Set<string>(STORAGE_PROVIDERS);\n\nexport function isInfraManifest(value: unknown): boolean {\n return (\n isRecord(value) &&\n (value.deployment === undefined || isDeploymentSpec(value.deployment)) &&\n (value.auth === undefined || isAuthSpec(value.auth)) &&\n (value.database === undefined || isDatabaseSpec(value.database)) &&\n (value.storage === undefined || isStorageSpec(value.storage)) &&\n (value.state === undefined || isStateSpec(value.state)) &&\n (value.networking === undefined || isNetworkingSpec(value.networking)) &&\n Array.isArray(value.modules) &&\n value.modules.every((moduleId) => typeof moduleId === 'string') &&\n (value.modulesConfig === undefined || isRecord(value.modulesConfig)) &&\n !('plugins' in value) &&\n !('pluginsConfig' in value)\n );\n}\n\nfunction isDeploymentSpec(value: unknown): boolean {\n return (\n isRecord(value) && typeof value.target === 'string' && typeof value.monitoring === 'boolean'\n );\n}\n\nfunction isDatabaseSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.provider === 'string' &&\n typeof value.tier === 'string' &&\n DATABASE_TIER_SET.has(value.tier)\n );\n}\n\nfunction isStorageSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.provider === 'string' &&\n STORAGE_PROVIDER_SET.has(value.provider) &&\n isStringArray(value.buckets)\n );\n}\n\nfunction isStateSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.provider === 'string' &&\n (value.persistence === undefined ||\n (typeof value.persistence === 'string' && STATE_PERSISTENCE_MODE_SET.has(value.persistence)))\n );\n}\n\nfunction isNetworkingSpec(value: unknown): boolean {\n return isRecord(value) && isOptionalString(value.domain) && typeof value.cdn === 'boolean';\n}\n\nfunction isAuthSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.scope === 'string' &&\n AUTH_SCOPE_SET.has(value.scope) &&\n typeof value.provider === 'string' &&\n (value.authorization === undefined || isAuthzSpec(value.authorization)) &&\n (value.flow === undefined || isAuthFlow(value.flow)) &&\n (value.signIn === undefined || isAuthSignInSpec(value.signIn)) &&\n (value.signUp === undefined || isAuthSignUpSpec(value.signUp)) &&\n (value.oauth === undefined || isAuthOAuthConfig(value.oauth)) &&\n (value.profile === undefined || isAuthProfileSpec(value.profile))\n );\n}\n\nfunction isAuthzSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.kind === 'string' &&\n AUTHZ_KIND_SET.has(value.kind) &&\n typeof value.engine === 'string' &&\n AUTHZ_ENGINE_SET.has(value.engine)\n );\n}\n\nfunction isAuthFlow(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.signInRoute === 'string' &&\n isOptionalString(value.signUpRoute) &&\n isOptionalString(value.signOutRoute) &&\n isOptionalString(value.forgotPasswordRoute) &&\n isOptionalString(value.otpRoute) &&\n typeof value.postSignInRoute === 'string' &&\n isOptionalString(value.unauthorizedRoute)\n );\n}\n\nfunction isAuthSignInSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n Array.isArray(value.identifiers) &&\n value.identifiers.every(\n (identifier) => typeof identifier === 'string' && AUTH_SIGN_IN_IDENTIFIER_SET.has(identifier),\n )\n );\n}\n\nfunction isAuthSignUpSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n isStringArray(value.requiredFields) &&\n (value.optionalFields === undefined || isStringArray(value.optionalFields)) &&\n (value.signUpPolicy === undefined ||\n (typeof value.signUpPolicy === 'string' && AUTH_SIGN_UP_POLICY_SET.has(value.signUpPolicy)))\n );\n}\n\nfunction isAuthOAuthConfig(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.enabled === 'boolean' &&\n typeof value.callbackRoute === 'string' &&\n Array.isArray(value.providers) &&\n value.providers.every(isAuthOAuthProviderConfig)\n );\n}\n\nfunction isAuthOAuthProviderConfig(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.id === 'string' &&\n (AUTH_OAUTH_PROVIDER_SET.has(value.id) || value.id.length > 0) &&\n isOptionalString(value.label) &&\n isOptionalBoolean(value.enabled) &&\n (value.scopes === undefined || isStringArray(value.scopes)) &&\n (value.queryParams === undefined || isStringRecord(value.queryParams)) &&\n (value.icon === undefined || isIconSpec(value.icon)) &&\n (value.credentialsRef === undefined || typeof value.credentialsRef === 'string')\n );\n}\n\nfunction isAuthProfileSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n isStringArray(value.fields) &&\n isOptionalString(value.table) &&\n (value.primaryKey === undefined ||\n (typeof value.primaryKey === 'string' &&\n AUTH_PROFILE_PRIMARY_KEY_STRATEGY_SET.has(value.primaryKey))) &&\n (value.createStrategy === undefined ||\n (typeof value.createStrategy === 'string' &&\n AUTH_PROFILE_CREATE_STRATEGY_SET.has(value.createStrategy))) &&\n (value.updateStrategy === undefined ||\n (typeof value.updateStrategy === 'string' &&\n AUTH_PROFILE_UPDATE_STRATEGY_SET.has(value.updateStrategy)))\n );\n}\n\nfunction isIconSpec(value: unknown): boolean {\n return (\n isRecord(value) &&\n typeof value.name === 'string' &&\n isOptionalString(value.provider) &&\n (value.size === undefined ||\n typeof value.size === 'string' ||\n typeof value.size === 'number') &&\n isOptionalString(value.color)\n );\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function isManifestMetadata(value: unknown): boolean;
|
|
2
|
+
export declare function isThemeConfig(value: unknown): boolean;
|
|
3
|
+
export declare function isNavigatorSpec(value: unknown): boolean;
|
|
4
|
+
export declare function isScreenRegistry(value: unknown): boolean;
|
|
5
|
+
export declare function isSplashScreenSpec(value: unknown): boolean;
|
|
6
|
+
//# sourceMappingURL=screens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screens.d.ts","sourceRoot":"","sources":["../../src/appManifest/screens.ts"],"names":[],"mappings":"AAiBA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAY1D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQrD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAUvD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQxD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAM1D"}
|