@ankhorage/contracts 14.0.0 → 16.0.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 +37 -0
- package/README.md +10 -2
- package/dist/appManifest/apis.d.ts +1 -0
- package/dist/appManifest/apis.d.ts.map +1 -1
- package/dist/appManifest/apis.js +17 -14
- package/dist/appManifest/apis.js.map +1 -1
- package/dist/appManifest/bindings.d.ts +3 -0
- package/dist/appManifest/bindings.d.ts.map +1 -1
- package/dist/appManifest/bindings.js +17 -1
- package/dist/appManifest/bindings.js.map +1 -1
- package/dist/appManifest/constants.d.ts +18 -0
- package/dist/appManifest/constants.d.ts.map +1 -0
- package/dist/appManifest/constants.js +18 -0
- package/dist/appManifest/constants.js.map +1 -0
- package/dist/appManifest/data.d.ts +4 -0
- package/dist/appManifest/data.d.ts.map +1 -1
- package/dist/appManifest/data.js +22 -3
- package/dist/appManifest/data.js.map +1 -1
- package/dist/appManifest/dataSources.d.ts +1 -0
- package/dist/appManifest/dataSources.d.ts.map +1 -1
- package/dist/appManifest/dataSources.js +7 -6
- package/dist/appManifest/dataSources.js.map +1 -1
- package/dist/appManifest/deploy.d.ts +1 -0
- package/dist/appManifest/deploy.d.ts.map +1 -1
- package/dist/appManifest/deploy.js +16 -13
- package/dist/appManifest/deploy.js.map +1 -1
- package/dist/appManifest/icon.d.ts.map +1 -1
- package/dist/appManifest/icon.js +2 -1
- package/dist/appManifest/icon.js.map +1 -1
- package/dist/appManifest/isAppManifest.d.ts +4 -0
- package/dist/appManifest/isAppManifest.d.ts.map +1 -0
- package/dist/appManifest/isAppManifest.js +69 -0
- package/dist/appManifest/isAppManifest.js.map +1 -0
- package/dist/appManifest/isAppStateSpec.d.ts +4 -0
- package/dist/appManifest/isAppStateSpec.d.ts.map +1 -0
- package/dist/appManifest/isAppStateSpec.js +9 -0
- package/dist/appManifest/isAppStateSpec.js.map +1 -0
- package/dist/appManifest/isManifestValue.d.ts +3 -0
- package/dist/appManifest/isManifestValue.d.ts.map +1 -0
- package/dist/appManifest/isManifestValue.js +15 -0
- package/dist/appManifest/isManifestValue.js.map +1 -0
- package/dist/appManifest/media.d.ts +1 -0
- package/dist/appManifest/media.d.ts.map +1 -1
- package/dist/appManifest/media.js +10 -8
- package/dist/appManifest/media.js.map +1 -1
- package/dist/appManifest/navigator.d.ts.map +1 -1
- package/dist/appManifest/navigator.js +7 -6
- package/dist/appManifest/navigator.js.map +1 -1
- package/dist/appManifest/navigatorOptions.d.ts +0 -2
- package/dist/appManifest/navigatorOptions.d.ts.map +1 -1
- package/dist/appManifest/navigatorOptions.js +8 -12
- package/dist/appManifest/navigatorOptions.js.map +1 -1
- package/dist/appManifest/parseAppManifest.d.ts +10 -0
- package/dist/appManifest/parseAppManifest.d.ts.map +1 -0
- package/dist/appManifest/parseAppManifest.js +14 -0
- package/dist/appManifest/parseAppManifest.js.map +1 -0
- package/dist/appManifest/screens.d.ts +4 -0
- package/dist/appManifest/screens.d.ts.map +1 -1
- package/dist/appManifest/screens.js +14 -2
- package/dist/appManifest/screens.js.map +1 -1
- package/dist/appManifest.d.ts +3 -18
- package/dist/appManifest.d.ts.map +1 -1
- package/dist/appManifest.js +2 -80
- package/dist/appManifest.js.map +1 -1
- package/dist/auth.d.ts +3 -2
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js.map +1 -1
- package/dist/deploy.d.ts +0 -9
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +0 -8
- package/dist/deploy.js.map +1 -1
- package/dist/environments.d.ts +4 -0
- package/dist/environments.d.ts.map +1 -0
- package/dist/environments.js +3 -0
- package/dist/environments.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/infra/constants.d.ts +91 -0
- package/dist/infra/constants.d.ts.map +1 -0
- package/dist/infra/constants.js +91 -0
- package/dist/infra/constants.js.map +1 -0
- package/dist/infra/infraFields.d.ts +12 -0
- package/dist/infra/infraFields.d.ts.map +1 -0
- package/dist/infra/infraFields.js +14 -0
- package/dist/infra/infraFields.js.map +1 -0
- package/dist/infra/isInfraAdapterDescriptor.d.ts +4 -0
- package/dist/infra/isInfraAdapterDescriptor.d.ts.map +1 -0
- package/dist/infra/isInfraAdapterDescriptor.js +31 -0
- package/dist/infra/isInfraAdapterDescriptor.js.map +1 -0
- package/dist/infra/isInfraAuthSpec.d.ts +4 -0
- package/dist/infra/isInfraAuthSpec.d.ts.map +1 -0
- package/dist/infra/isInfraAuthSpec.js +75 -0
- package/dist/infra/isInfraAuthSpec.js.map +1 -0
- package/dist/infra/isInfraCredentialRef.d.ts +3 -0
- package/dist/infra/isInfraCredentialRef.d.ts.map +1 -0
- package/dist/infra/isInfraCredentialRef.js +10 -0
- package/dist/infra/isInfraCredentialRef.js.map +1 -0
- package/dist/infra/isInfraDeploymentSpec.d.ts +4 -0
- package/dist/infra/isInfraDeploymentSpec.d.ts.map +1 -0
- package/dist/infra/isInfraDeploymentSpec.js +66 -0
- package/dist/infra/isInfraDeploymentSpec.js.map +1 -0
- package/dist/infra/isInfraEnvironmentSpec.d.ts +4 -0
- package/dist/infra/isInfraEnvironmentSpec.d.ts.map +1 -0
- package/dist/infra/isInfraEnvironmentSpec.js +82 -0
- package/dist/infra/isInfraEnvironmentSpec.js.map +1 -0
- package/dist/infra/isInfraManifest.d.ts +4 -0
- package/dist/infra/isInfraManifest.d.ts.map +1 -0
- package/dist/infra/isInfraManifest.js +23 -0
- package/dist/infra/isInfraManifest.js.map +1 -0
- package/dist/infra/isInfraShape.d.ts +3 -0
- package/dist/infra/isInfraShape.d.ts.map +1 -0
- package/dist/infra/isInfraShape.js +10 -0
- package/dist/infra/isInfraShape.js.map +1 -0
- package/dist/infra/isInfraWorkloadHealth.d.ts +3 -0
- package/dist/infra/isInfraWorkloadHealth.d.ts.map +1 -0
- package/dist/infra/isInfraWorkloadHealth.js +37 -0
- package/dist/infra/isInfraWorkloadHealth.js.map +1 -0
- package/dist/infra/isInfraWorkloadSpec.d.ts +4 -0
- package/dist/infra/isInfraWorkloadSpec.d.ts.map +1 -0
- package/dist/infra/isInfraWorkloadSpec.js +70 -0
- package/dist/infra/isInfraWorkloadSpec.js.map +1 -0
- package/dist/infra/isInfraWorkloadValue.d.ts +3 -0
- package/dist/infra/isInfraWorkloadValue.d.ts.map +1 -0
- package/dist/infra/isInfraWorkloadValue.js +40 -0
- package/dist/infra/isInfraWorkloadValue.js.map +1 -0
- package/dist/infra/parseInfraManifest.d.ts +5 -0
- package/dist/infra/parseInfraManifest.d.ts.map +1 -0
- package/dist/infra/parseInfraManifest.js +17 -0
- package/dist/infra/parseInfraManifest.js.map +1 -0
- package/dist/infra/validateInfraAdapterSelection.d.ts +6 -0
- package/dist/infra/validateInfraAdapterSelection.d.ts.map +1 -0
- package/dist/infra/validateInfraAdapterSelection.js +36 -0
- package/dist/infra/validateInfraAdapterSelection.js.map +1 -0
- package/dist/infra.d.ts +16 -0
- package/dist/infra.d.ts.map +1 -0
- package/dist/infra.js +11 -0
- package/dist/infra.js.map +1 -0
- package/dist/media.d.ts +7 -6
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +5 -5
- package/dist/media.js.map +1 -1
- package/dist/state.d.ts +5 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js.map +1 -1
- package/dist/types/appManifest.d.ts +9 -0
- package/dist/types/appManifest.d.ts.map +1 -0
- package/dist/types/appManifest.js +2 -0
- package/dist/types/appManifest.js.map +1 -0
- package/dist/types/infraAdapters.d.ts +87 -0
- package/dist/types/infraAdapters.d.ts.map +1 -0
- package/dist/types/infraAdapters.js +2 -0
- package/dist/types/infraAdapters.js.map +1 -0
- package/dist/types/infraLifecycle.d.ts +107 -0
- package/dist/types/infraLifecycle.d.ts.map +1 -0
- package/dist/types/infraLifecycle.js +2 -0
- package/dist/types/infraLifecycle.js.map +1 -0
- package/dist/types/infraManifest.d.ts +142 -0
- package/dist/types/infraManifest.d.ts.map +1 -0
- package/dist/types/infraManifest.js +2 -0
- package/dist/types/infraManifest.js.map +1 -0
- package/dist/types/infraSecrets.d.ts +15 -0
- package/dist/types/infraSecrets.d.ts.map +1 -0
- package/dist/types/infraSecrets.js +2 -0
- package/dist/types/infraSecrets.js.map +1 -0
- package/dist/types/infraValidation.d.ts +5 -0
- package/dist/types/infraValidation.d.ts.map +1 -0
- package/dist/types/infraValidation.js +2 -0
- package/dist/types/infraValidation.js.map +1 -0
- package/dist/types/infraWorkload.d.ts +70 -0
- package/dist/types/infraWorkload.d.ts.map +1 -0
- package/dist/types/infraWorkload.js +2 -0
- package/dist/types/infraWorkload.js.map +1 -0
- package/dist/types.d.ts +7 -70
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -9
- package/dist/types.js.map +1 -1
- package/package.json +11 -2
- package/src/appManifest/apis.ts +18 -16
- package/src/appManifest/bindings.ts +18 -1
- package/src/appManifest/constants.ts +19 -0
- package/src/appManifest/data.ts +23 -9
- package/src/appManifest/dataSources.ts +8 -7
- package/src/appManifest/deploy.ts +17 -15
- package/src/appManifest/icon.ts +3 -1
- package/src/appManifest/isAppManifest.ts +95 -0
- package/src/appManifest/isAppStateSpec.ts +13 -0
- package/src/appManifest/isManifestValue.ts +19 -0
- package/src/appManifest/media.ts +11 -10
- package/src/appManifest/navigator.ts +7 -6
- package/src/appManifest/navigatorOptions.ts +9 -16
- package/src/appManifest/parseAppManifest.ts +15 -0
- package/src/appManifest/screens.ts +14 -2
- package/src/appManifest.test.ts +9 -5
- package/src/appManifest.ts +3 -107
- package/src/auth-flow-contract.test.ts +6 -10
- package/src/auth-oauth.test.ts +2 -2
- package/src/auth.ts +3 -2
- package/src/bindings.test.ts +5 -0
- package/src/contracts.test.ts +21 -19
- package/src/deploy.test.ts +13 -5
- package/src/deploy.ts +0 -11
- package/src/environments.ts +4 -0
- package/src/index.ts +2 -1
- package/src/infra/constants.ts +91 -0
- package/src/infra/infraFields.ts +20 -0
- package/src/infra/isInfraAdapterDescriptor.ts +37 -0
- package/src/infra/isInfraAuthSpec.ts +98 -0
- package/src/infra/isInfraCredentialRef.ts +11 -0
- package/src/infra/isInfraDeploymentSpec.ts +75 -0
- package/src/infra/isInfraEnvironmentSpec.ts +95 -0
- package/src/infra/isInfraManifest.ts +29 -0
- package/src/infra/isInfraShape.ts +16 -0
- package/src/infra/isInfraWorkloadHealth.ts +38 -0
- package/src/infra/isInfraWorkloadSpec.ts +87 -0
- package/src/infra/isInfraWorkloadValue.ts +41 -0
- package/src/infra/parseInfraManifest.ts +20 -0
- package/src/infra/validateInfraAdapterSelection.ts +42 -0
- package/src/infra-types.test.ts +93 -0
- package/src/infra-workload.test.ts +186 -0
- package/src/infra.test.ts +268 -0
- package/src/infra.ts +15 -0
- package/src/media.ts +12 -11
- package/src/profile-contract.test.ts +2 -3
- package/src/secrets.test.ts +19 -13
- package/src/state.ts +6 -0
- package/src/types/appManifest.ts +5 -0
- package/src/types/infraAdapters.ts +150 -0
- package/src/types/infraLifecycle.ts +105 -0
- package/src/types/infraManifest.ts +130 -0
- package/src/types/infraSecrets.ts +16 -0
- package/src/types/infraValidation.ts +2 -0
- package/src/types/infraWorkload.ts +64 -0
- package/src/types.ts +7 -87
- package/dist/appManifest/infra.d.ts +0 -2
- package/dist/appManifest/infra.d.ts.map +0 -1
- package/dist/appManifest/infra.js +0 -130
- package/dist/appManifest/infra.js.map +0 -1
- package/dist/appManifest/shared.d.ts +0 -8
- package/dist/appManifest/shared.d.ts.map +0 -1
- package/dist/appManifest/shared.js +0 -31
- package/dist/appManifest/shared.js.map +0 -1
- package/dist/secretManifest.d.ts +0 -11
- package/dist/secretManifest.d.ts.map +0 -1
- package/dist/secretManifest.js +0 -2
- package/dist/secretManifest.js.map +0 -1
- package/src/appManifest/infra.ts +0 -190
- package/src/appManifest/shared.ts +0 -40
- package/src/secretManifest.ts +0 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/appManifest/data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isManifestValue,\n isOptionalBoolean,\n isOptionalString,\n isRecord,\n isStringArray,\n} from './shared';\n\nconst DATA_SCHEMA_TYPES = new Set([\n 'array',\n 'boolean',\n 'integer',\n 'null',\n 'number',\n 'object',\n 'string',\n]);\nconst OPERATION_INTENTS = new Set(['action', 'create', 'delete', 'read', 'update']);\nconst PARAMETER_LOCATIONS = new Set(['body', 'cookie', 'header', 'path', 'query']);\n\nexport function isDataEndpointRegistry(value: unknown): boolean {\n return isRecord(value) && Object.values(value).every(isDataEndpointConfig);\n}\n\nexport function isDataSchemaRegistry(value: unknown): boolean {\n return isRecord(value) && Object.values(value).every(isDataSchema);\n}\n\nexport function 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\nexport function 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\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 OPERATION_INTENTS.has(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 isOptionalString(value.contentType) &&\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 PARAMETER_LOCATIONS.has(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: Record<string, unknown>): boolean {\n return (\n (value.schema === undefined || isDataSchema(value.schema)) &&\n (value.schemaRef === undefined || isDataSchemaRef(value.schemaRef))\n );\n}\n\nfunction isDataSchema(value: unknown): boolean {\n if (!isRecord(value) || !isDataSchemaType(value.type)) return false;\n if (!isOptionalSchemaScalars(value)) return false;\n if (!isOptionalSchemaCollections(value)) return false;\n return isOptionalSchemaComposition(value);\n}\n\nfunction isDataSchemaType(value: unknown): boolean {\n if (value === undefined) return true;\n if (typeof value === 'string') return DATA_SCHEMA_TYPES.has(value);\n return (\n Array.isArray(value) &&\n value.every((entry) => typeof entry === 'string' && DATA_SCHEMA_TYPES.has(entry))\n );\n}\n\nfunction isOptionalSchemaScalars(value: Record<string, unknown>): boolean {\n return (\n isOptionalString(value.title) &&\n isOptionalString(value.description) &&\n isOptionalString(value.format) &&\n isOptionalBoolean(value.nullable) &&\n (value.const === undefined || isManifestValue(value.const)) &&\n (value.default === undefined || isManifestValue(value.default)) &&\n (value.enum === undefined ||\n (Array.isArray(value.enum) && value.enum.every(isManifestValue))) &&\n (value.ref === undefined || isDataSchemaRef(value.ref))\n );\n}\n\nfunction isOptionalSchemaCollections(value: Record<string, unknown>): boolean {\n return (\n (value.required === undefined || isStringArray(value.required)) &&\n (value.properties === undefined ||\n (isRecord(value.properties) && Object.values(value.properties).every(isDataSchema))) &&\n (value.additionalProperties === undefined ||\n typeof value.additionalProperties === 'boolean' ||\n isDataSchema(value.additionalProperties)) &&\n (value.items === undefined || isDataSchema(value.items))\n );\n}\n\nfunction isOptionalSchemaComposition(value: Record<string, unknown>): boolean {\n return ['allOf', 'anyOf', 'oneOf'].every((key) => {\n const entry = value[key];\n return entry === undefined || (Array.isArray(entry) && entry.every(isDataSchema));\n });\n}\n\nfunction isDataSchemaRef(value: unknown): boolean {\n return isRecord(value) && typeof value.id === 'string';\n}\n"]}
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/appManifest/data.ts"],"names":[],"mappings":"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","sourcesContent":["import { isStringArray } from '@ankhorage/utility/array';\nimport { isRecord } from '@ankhorage/utility/object';\nimport { isOptionalString } from '@ankhorage/utility/string';\n\nimport { isManifestValue } from './isManifestValue';\n\nconst DATA_SCHEMA_TYPES = new Set([\n 'array',\n 'boolean',\n 'integer',\n 'null',\n 'number',\n 'object',\n 'string',\n]);\nconst OPERATION_INTENTS = new Set(['action', 'create', 'delete', 'read', 'update']);\nconst PARAMETER_LOCATIONS = new Set(['body', 'cookie', 'header', 'path', 'query']);\n\n/*** Validate every endpoint in the data endpoint registry. */\nexport function isDataEndpointRegistry(value: unknown): boolean {\n return isRecord(value) && Object.values(value).every(isDataEndpointConfig);\n}\n\n/*** Validate every schema in the data schema registry. */\nexport function isDataSchemaRegistry(value: unknown): boolean {\n return isRecord(value) && Object.values(value).every(isDataSchema);\n}\n\n/*** Validate credential identity and optional descriptive metadata. */\nexport function 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\n/*** Validate an adapter reference and its optional authored configuration. */\nexport function 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\n/*** Validate endpoint identity, operations and optional connection metadata. */\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\n/*** Validate operation protocol, intent, request and response configuration. */\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 OPERATION_INTENTS.has(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\n/*** Validate request schema, parameters and optional content type. */\nfunction isDataOperationRequest(value: unknown): boolean {\n return (\n isRecord(value) &&\n isDataSchemaSlot(value) &&\n isOptionalString(value.contentType) &&\n (value.parameters === undefined ||\n (Array.isArray(value.parameters) && value.parameters.every(isDataOperationParameter)))\n );\n}\n\n/*** Validate parameter identity, location, schema and optional default value. */\nfunction isDataOperationParameter(value: unknown): boolean {\n return (\n isRecord(value) &&\n isDataSchemaSlot(value) &&\n typeof value.name === 'string' &&\n typeof value.location === 'string' &&\n PARAMETER_LOCATIONS.has(value.location) &&\n (value.required === undefined || typeof value.required === 'boolean') &&\n isOptionalString(value.description) &&\n (value.default === undefined || isManifestValue(value.default))\n );\n}\n\n/*** Validate response status, schema and optional descriptive metadata. */\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\n/*** Validate inline schema and schema-reference fields. */\nfunction isDataSchemaSlot(value: Record<string, unknown>): boolean {\n return (\n (value.schema === undefined || isDataSchema(value.schema)) &&\n (value.schemaRef === undefined || isDataSchemaRef(value.schemaRef))\n );\n}\n\n/*** Validate supported schema types, constraints and compositions. */\nfunction isDataSchema(value: unknown): boolean {\n if (!isRecord(value) || !isDataSchemaType(value.type)) return false;\n if (!isOptionalSchemaScalars(value)) return false;\n if (!isOptionalSchemaCollections(value)) return false;\n return isOptionalSchemaComposition(value);\n}\n\n/*** Validate a supported schema type or an array of supported types. */\nfunction isDataSchemaType(value: unknown): boolean {\n if (value === undefined) return true;\n if (typeof value === 'string') return DATA_SCHEMA_TYPES.has(value);\n return (\n Array.isArray(value) &&\n value.every((entry) => typeof entry === 'string' && DATA_SCHEMA_TYPES.has(entry))\n );\n}\n\n/*** Validate optional scalar schema constraints. */\nfunction isOptionalSchemaScalars(value: Record<string, unknown>): boolean {\n return (\n isOptionalString(value.title) &&\n isOptionalString(value.description) &&\n isOptionalString(value.format) &&\n (value.nullable === undefined || typeof value.nullable === 'boolean') &&\n (value.const === undefined || isManifestValue(value.const)) &&\n (value.default === undefined || isManifestValue(value.default)) &&\n (value.enum === undefined ||\n (Array.isArray(value.enum) && value.enum.every(isManifestValue))) &&\n (value.ref === undefined || isDataSchemaRef(value.ref))\n );\n}\n\n/*** Validate optional schema properties, items and required fields. */\nfunction isOptionalSchemaCollections(value: Record<string, unknown>): boolean {\n return (\n (value.required === undefined || isStringArray(value.required)) &&\n (value.properties === undefined ||\n (isRecord(value.properties) && Object.values(value.properties).every(isDataSchema))) &&\n (value.additionalProperties === undefined ||\n typeof value.additionalProperties === 'boolean' ||\n isDataSchema(value.additionalProperties)) &&\n (value.items === undefined || isDataSchema(value.items))\n );\n}\n\n/*** Validate optional schema alternatives and intersections. */\nfunction isOptionalSchemaComposition(value: Record<string, unknown>): boolean {\n return ['allOf', 'anyOf', 'oneOf'].every((key) => {\n const entry = value[key];\n return entry === undefined || (Array.isArray(entry) && entry.every(isDataSchema));\n });\n}\n\n/*** Validate a named schema reference. */\nfunction isDataSchemaRef(value: unknown): boolean {\n return isRecord(value) && typeof value.id === 'string';\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataSources.d.ts","sourceRoot":"","sources":["../../src/appManifest/dataSources.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dataSources.d.ts","sourceRoot":"","sources":["../../src/appManifest/dataSources.ts"],"names":[],"mappings":"AAuBA,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAK5D"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { hasOnlyKeys, isRecord } from '@ankhorage/utility/object';
|
|
2
|
+
import { isOptionalString } from '@ankhorage/utility/string';
|
|
1
3
|
import { isAdapterRef, isCredentialRef, isDataEndpointRegistry, isDataSchemaRegistry, } from './data';
|
|
2
|
-
import { isManifestValue
|
|
3
|
-
const DATABASE_SOURCE_KEYS =
|
|
4
|
+
import { isManifestValue } from './isManifestValue';
|
|
5
|
+
const DATABASE_SOURCE_KEYS = [
|
|
4
6
|
'id',
|
|
5
7
|
'kind',
|
|
6
8
|
'name',
|
|
@@ -10,11 +12,13 @@ const DATABASE_SOURCE_KEYS = new Set([
|
|
|
10
12
|
'endpoints',
|
|
11
13
|
'schemas',
|
|
12
14
|
'metadata',
|
|
13
|
-
]
|
|
15
|
+
];
|
|
16
|
+
/*** Validate the supported data-source entries in the registry. */
|
|
14
17
|
export function isDataSourceRegistry(value) {
|
|
15
18
|
return (isRecord(value) &&
|
|
16
19
|
Object.entries(value).every(([id, source]) => isDatabaseDataSource(source) && source.id === id));
|
|
17
20
|
}
|
|
21
|
+
/*** Validate database adapter identity and supported configuration fields. */
|
|
18
22
|
function isDatabaseDataSource(value) {
|
|
19
23
|
return (isRecord(value) &&
|
|
20
24
|
hasOnlyKeys(value, DATABASE_SOURCE_KEYS) &&
|
|
@@ -30,7 +34,4 @@ function isDatabaseDataSource(value) {
|
|
|
30
34
|
(value.schemas === undefined || isDataSchemaRegistry(value.schemas)) &&
|
|
31
35
|
(value.metadata === undefined || isManifestValue(value.metadata)));
|
|
32
36
|
}
|
|
33
|
-
function hasOnlyKeys(value, allowed) {
|
|
34
|
-
return Object.keys(value).every((key) => allowed.has(key));
|
|
35
|
-
}
|
|
36
37
|
//# sourceMappingURL=dataSources.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataSources.js","sourceRoot":"","sources":["../../src/appManifest/dataSources.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"dataSources.js","sourceRoot":"","sources":["../../src/appManifest/dataSources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EACL,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,oBAAoB,GAAG;IAC3B,IAAI;IACJ,MAAM;IACN,MAAM;IACN,aAAa;IACb,YAAY;IACZ,SAAS;IACT,WAAW;IACX,SAAS;IACT,UAAU;CACF,CAAC;AAEX,mEAAmE;AACnE,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAChG,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,WAAW,CAAC,KAAK,EAAE,oBAAoB,CAAC;QACxC,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,KAAK,CAAC,IAAI,KAAK,UAAU;QACzB,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5B,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC;QACnC,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU;QACjC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3B,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC;QACvC,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAClE,CAAC;AACJ,CAAC","sourcesContent":["import { hasOnlyKeys, isRecord } from '@ankhorage/utility/object';\nimport { isOptionalString } from '@ankhorage/utility/string';\n\nimport {\n isAdapterRef,\n isCredentialRef,\n isDataEndpointRegistry,\n isDataSchemaRegistry,\n} from './data';\nimport { isManifestValue } from './isManifestValue';\n\nconst DATABASE_SOURCE_KEYS = [\n 'id',\n 'kind',\n 'name',\n 'description',\n 'credential',\n 'adapter',\n 'endpoints',\n 'schemas',\n 'metadata',\n] as const;\n\n/*** Validate the supported data-source entries in the registry. */\nexport function isDataSourceRegistry(value: unknown): boolean {\n return (\n isRecord(value) &&\n Object.entries(value).every(([id, source]) => isDatabaseDataSource(source) && source.id === id)\n );\n}\n\n/*** Validate database adapter identity and supported configuration fields. */\nfunction isDatabaseDataSource(value: unknown): value is Record<string, unknown> {\n return (\n isRecord(value) &&\n hasOnlyKeys(value, DATABASE_SOURCE_KEYS) &&\n typeof value.id === 'string' &&\n value.kind === 'database' &&\n isOptionalString(value.name) &&\n isOptionalString(value.description) &&\n (value.credential === undefined || isCredentialRef(value.credential)) &&\n isRecord(value.adapter) &&\n value.adapter.kind === 'database' &&\n isAdapterRef(value.adapter) &&\n isDataEndpointRegistry(value.endpoints) &&\n (value.schemas === undefined || isDataSchemaRegistry(value.schemas)) &&\n (value.metadata === undefined || isManifestValue(value.metadata))\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/appManifest/deploy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/appManifest/deploy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,iBAAiB,EAIlB,MAAM,WAAW,CAAC;AAUnB,+DAA+D;AAC/D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAE9E"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import { isRecord } from '
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
1
|
+
import { hasOnlyKeys, isRecord } from '@ankhorage/utility/object';
|
|
2
|
+
import { isNonEmptyString } from '@ankhorage/utility/string';
|
|
3
|
+
const DEPLOY_KEYS = ['targets'];
|
|
4
|
+
const TARGET_KEYS = ['web', 'android', 'ios'];
|
|
5
|
+
const PROVIDER_KEYS = ['build', 'publish'];
|
|
6
|
+
const WEB_KEYS = ['enabled', 'providers'];
|
|
7
|
+
const ANDROID_KEYS = ['enabled', 'package', 'scheme', 'providers'];
|
|
8
|
+
const IOS_KEYS = ['enabled', 'bundleIdentifier', 'scheme', 'providers'];
|
|
8
9
|
const URI_SCHEME_PATTERN = /^[A-Za-z][A-Za-z0-9+.-]*$/u;
|
|
10
|
+
/*** Validate authored application deployment configuration. */
|
|
9
11
|
export function isAppDeployManifest(value) {
|
|
10
12
|
return isRecord(value) && hasOnlyKeys(value, DEPLOY_KEYS) && isAppDeployTargets(value.targets);
|
|
11
13
|
}
|
|
14
|
+
/*** Validate the optional web, Android and iOS deployment targets. */
|
|
12
15
|
function isAppDeployTargets(value) {
|
|
13
16
|
return (isRecord(value) &&
|
|
14
17
|
hasOnlyKeys(value, TARGET_KEYS) &&
|
|
@@ -16,12 +19,14 @@ function isAppDeployTargets(value) {
|
|
|
16
19
|
(value.android === undefined || isAndroidTarget(value.android)) &&
|
|
17
20
|
(value.ios === undefined || isIosTarget(value.ios)));
|
|
18
21
|
}
|
|
22
|
+
/*** Validate web deployment identity and provider selection. */
|
|
19
23
|
function isWebTarget(value) {
|
|
20
24
|
return (isRecord(value) &&
|
|
21
25
|
hasOnlyKeys(value, WEB_KEYS) &&
|
|
22
26
|
typeof value.enabled === 'boolean' &&
|
|
23
27
|
isOptionalProviders(value.providers));
|
|
24
28
|
}
|
|
29
|
+
/*** Validate Android deployment identity, scheme and provider selection. */
|
|
25
30
|
function isAndroidTarget(value) {
|
|
26
31
|
return (isRecord(value) &&
|
|
27
32
|
hasOnlyKeys(value, ANDROID_KEYS) &&
|
|
@@ -30,6 +35,7 @@ function isAndroidTarget(value) {
|
|
|
30
35
|
isOptionalScheme(value.scheme) &&
|
|
31
36
|
isOptionalProviders(value.providers));
|
|
32
37
|
}
|
|
38
|
+
/*** Validate iOS deployment identity, scheme and provider selection. */
|
|
33
39
|
function isIosTarget(value) {
|
|
34
40
|
return (isRecord(value) &&
|
|
35
41
|
hasOnlyKeys(value, IOS_KEYS) &&
|
|
@@ -38,22 +44,19 @@ function isIosTarget(value) {
|
|
|
38
44
|
isOptionalScheme(value.scheme) &&
|
|
39
45
|
isOptionalProviders(value.providers));
|
|
40
46
|
}
|
|
47
|
+
/*** Accept an omitted scheme or a non-empty authored scheme. */
|
|
41
48
|
function isOptionalScheme(value) {
|
|
42
49
|
return value === undefined || (typeof value === 'string' && URI_SCHEME_PATTERN.test(value));
|
|
43
50
|
}
|
|
51
|
+
/*** Accept omitted deployment providers or a valid provider selection. */
|
|
44
52
|
function isOptionalProviders(value) {
|
|
45
53
|
return value === undefined || isProviderSelection(value);
|
|
46
54
|
}
|
|
55
|
+
/*** Validate deployment provider identities and supported selection keys. */
|
|
47
56
|
function isProviderSelection(value) {
|
|
48
57
|
return (isRecord(value) &&
|
|
49
58
|
hasOnlyKeys(value, PROVIDER_KEYS) &&
|
|
50
59
|
(value.build === undefined || isNonEmptyString(value.build)) &&
|
|
51
60
|
(value.publish === undefined || isNonEmptyString(value.publish)));
|
|
52
61
|
}
|
|
53
|
-
function isNonEmptyString(value) {
|
|
54
|
-
return typeof value === 'string' && value.trim().length > 0;
|
|
55
|
-
}
|
|
56
|
-
function hasOnlyKeys(value, allowed) {
|
|
57
|
-
return Object.keys(value).every((key) => allowed.has(key));
|
|
58
|
-
}
|
|
59
62
|
//# sourceMappingURL=deploy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/appManifest/deploy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/appManifest/deploy.ts"],"names":[],"mappings":"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","sourcesContent":["import { hasOnlyKeys, isRecord } from '@ankhorage/utility/object';\nimport { isNonEmptyString } from '@ankhorage/utility/string';\n\nimport type {\n AppDeployAndroidTargetConfig,\n AppDeployIosTargetConfig,\n AppDeployManifest,\n AppDeployProviderSelection,\n AppDeployTargets,\n AppDeployWebTargetConfig,\n} from '../deploy';\n\nconst DEPLOY_KEYS = ['targets'] as const;\nconst TARGET_KEYS = ['web', 'android', 'ios'] as const;\nconst PROVIDER_KEYS = ['build', 'publish'] as const;\nconst WEB_KEYS = ['enabled', 'providers'] as const;\nconst ANDROID_KEYS = ['enabled', 'package', 'scheme', 'providers'] as const;\nconst IOS_KEYS = ['enabled', 'bundleIdentifier', 'scheme', 'providers'] as const;\nconst URI_SCHEME_PATTERN = /^[A-Za-z][A-Za-z0-9+.-]*$/u;\n\n/*** Validate authored application deployment configuration. */\nexport function isAppDeployManifest(value: unknown): value is AppDeployManifest {\n return isRecord(value) && hasOnlyKeys(value, DEPLOY_KEYS) && isAppDeployTargets(value.targets);\n}\n\n/*** Validate the optional web, Android and iOS deployment targets. */\nfunction isAppDeployTargets(value: unknown): value is AppDeployTargets {\n return (\n isRecord(value) &&\n hasOnlyKeys(value, TARGET_KEYS) &&\n (value.web === undefined || isWebTarget(value.web)) &&\n (value.android === undefined || isAndroidTarget(value.android)) &&\n (value.ios === undefined || isIosTarget(value.ios))\n );\n}\n\n/*** Validate web deployment identity and provider selection. */\nfunction isWebTarget(value: unknown): value is AppDeployWebTargetConfig {\n return (\n isRecord(value) &&\n hasOnlyKeys(value, WEB_KEYS) &&\n typeof value.enabled === 'boolean' &&\n isOptionalProviders(value.providers)\n );\n}\n\n/*** Validate Android deployment identity, scheme and provider selection. */\nfunction isAndroidTarget(value: unknown): value is AppDeployAndroidTargetConfig {\n return (\n isRecord(value) &&\n hasOnlyKeys(value, ANDROID_KEYS) &&\n typeof value.enabled === 'boolean' &&\n isNonEmptyString(value.package) &&\n isOptionalScheme(value.scheme) &&\n isOptionalProviders(value.providers)\n );\n}\n\n/*** Validate iOS deployment identity, scheme and provider selection. */\nfunction isIosTarget(value: unknown): value is AppDeployIosTargetConfig {\n return (\n isRecord(value) &&\n hasOnlyKeys(value, IOS_KEYS) &&\n typeof value.enabled === 'boolean' &&\n isNonEmptyString(value.bundleIdentifier) &&\n isOptionalScheme(value.scheme) &&\n isOptionalProviders(value.providers)\n );\n}\n\n/*** Accept an omitted scheme or a non-empty authored scheme. */\nfunction isOptionalScheme(value: unknown): value is string | undefined {\n return value === undefined || (typeof value === 'string' && URI_SCHEME_PATTERN.test(value));\n}\n\n/*** Accept omitted deployment providers or a valid provider selection. */\nfunction isOptionalProviders(value: unknown): value is AppDeployProviderSelection | undefined {\n return value === undefined || isProviderSelection(value);\n}\n\n/*** Validate deployment provider identities and supported selection keys. */\nfunction isProviderSelection(value: unknown): value is AppDeployProviderSelection {\n return (\n isRecord(value) &&\n hasOnlyKeys(value, PROVIDER_KEYS) &&\n (value.build === undefined || isNonEmptyString(value.build)) &&\n (value.publish === undefined || isNonEmptyString(value.publish))\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../src/appManifest/icon.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../src/appManifest/icon.ts"],"names":[],"mappings":"AAKA,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAqBlD"}
|
package/dist/appManifest/icon.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { isRecord } from '@ankhorage/utility/object';
|
|
2
|
+
import { isOptionalString } from '@ankhorage/utility/string';
|
|
1
3
|
import { isMediaAssetReference } from '../media';
|
|
2
|
-
import { isOptionalString, isRecord } from './shared';
|
|
3
4
|
/*** Validate a serializable icon as either a named font glyph or an SVG media reference. */
|
|
4
5
|
export function isIconSpec(value) {
|
|
5
6
|
if (!isRecord(value))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.js","sourceRoot":"","sources":["../../src/appManifest/icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"icon.js","sourceRoot":"","sources":["../../src/appManifest/icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,4FAA4F;AAC5F,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEnC,MAAM,oBAAoB,GACxB,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;QACvB,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;QACjC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,oBAAoB;QAAE,OAAO,KAAK,CAAC;IAExC,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QACtB,OAAO,CACL,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC;YACnC,KAAK,CAAC,IAAI,KAAK,SAAS;YACxB,KAAK,CAAC,QAAQ,KAAK,SAAS,CAC7B,CAAC;IACJ,CAAC;IAED,OAAO,CACL,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CACjG,CAAC;AACJ,CAAC","sourcesContent":["import { isRecord } from '@ankhorage/utility/object';\nimport { isOptionalString } from '@ankhorage/utility/string';\n\nimport { isMediaAssetReference } from '../media';\n\n/*** Validate a serializable icon as either a named font glyph or an SVG media reference. */\nexport function isIconSpec(value: unknown): boolean {\n if (!isRecord(value)) return false;\n\n const hasValidPresentation =\n (value.size === undefined ||\n typeof value.size === 'string' ||\n typeof value.size === 'number') &&\n isOptionalString(value.color);\n if (!hasValidPresentation) return false;\n\n if ('source' in value) {\n return (\n isMediaAssetReference(value.source) &&\n value.name === undefined &&\n value.provider === undefined\n );\n }\n\n return (\n typeof value.name === 'string' && isOptionalString(value.provider) && value.source === undefined\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isAppManifest.d.ts","sourceRoot":"","sources":["../../src/appManifest/isAppManifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAe5C,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAalE"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { isStringArray } from '@ankhorage/utility/array';
|
|
2
|
+
import { isRecord } from '@ankhorage/utility/object';
|
|
3
|
+
import { isInfraManifest } from '../infra/isInfraManifest';
|
|
4
|
+
import { isComponentDataBindingRegistry } from './bindings';
|
|
5
|
+
import { APP_MANIFEST_KEY_POLICY } from './constants';
|
|
6
|
+
import { isDataSourceRegistry } from './dataSources';
|
|
7
|
+
import { isAppDeployManifest } from './deploy';
|
|
8
|
+
import { isAppStateSpec } from './isAppStateSpec';
|
|
9
|
+
import { isMediaManifest } from './media';
|
|
10
|
+
import { isAppNavigatorManifest, isManifestMetadata, isScreenRegistry, isSplashScreenSpec, isThemeConfig, } from './screens';
|
|
11
|
+
/*** Return whether an unknown value satisfies the canonical AppManifest shape. */
|
|
12
|
+
export function isAppManifest(value) {
|
|
13
|
+
return (isRecord(value) &&
|
|
14
|
+
hasRequiredManifestKeys(value) &&
|
|
15
|
+
!('generatedApis' in value) &&
|
|
16
|
+
isManifestMetadata(value.metadata) &&
|
|
17
|
+
isPresentation(value) &&
|
|
18
|
+
isOptionalCapabilities(value) &&
|
|
19
|
+
isInfraManifest(value.infra) &&
|
|
20
|
+
isAppNavigatorManifest(value.navigator) &&
|
|
21
|
+
isScreenRegistry(value.screens) &&
|
|
22
|
+
isAppSettings(value.settings));
|
|
23
|
+
}
|
|
24
|
+
/*** Validate the canonical application manifest field policy. */
|
|
25
|
+
function hasRequiredManifestKeys(value) {
|
|
26
|
+
return Object.entries(APP_MANIFEST_KEY_POLICY).every(([key, policy]) => policy === 'optional' || key in value);
|
|
27
|
+
}
|
|
28
|
+
/*** Validate the canonical application manifest field policy. */
|
|
29
|
+
function isActiveThemeMode(value) {
|
|
30
|
+
return value === undefined || value === 'dark' || value === 'light';
|
|
31
|
+
}
|
|
32
|
+
/*** Validate the canonical application manifest field policy. */
|
|
33
|
+
function isRepositoryManifest(value) {
|
|
34
|
+
return (isRecord(value) &&
|
|
35
|
+
value.provider === 'github' &&
|
|
36
|
+
typeof value.owner === 'string' &&
|
|
37
|
+
value.owner.length > 0 &&
|
|
38
|
+
typeof value.name === 'string' &&
|
|
39
|
+
value.name.length > 0 &&
|
|
40
|
+
typeof value.url === 'string' &&
|
|
41
|
+
value.url.length > 0 &&
|
|
42
|
+
value.defaultBranch === 'main');
|
|
43
|
+
}
|
|
44
|
+
/*** Validate the canonical application manifest field policy. */
|
|
45
|
+
function isAppSettings(value) {
|
|
46
|
+
return (isRecord(value) &&
|
|
47
|
+
!('apiBaseUrl' in value) &&
|
|
48
|
+
isRecord(value.localization) &&
|
|
49
|
+
typeof value.localization.defaultLocale === 'string' &&
|
|
50
|
+
isStringArray(value.localization.locales));
|
|
51
|
+
}
|
|
52
|
+
/*** Validate authored appearance as one cohesive manifest concern. */
|
|
53
|
+
function isPresentation(value) {
|
|
54
|
+
return (Array.isArray(value.themes) &&
|
|
55
|
+
value.themes.every(isThemeConfig) &&
|
|
56
|
+
typeof value.activeThemeId === 'string' &&
|
|
57
|
+
isActiveThemeMode(value.activeThemeMode) &&
|
|
58
|
+
(value.splashScreen === undefined || isSplashScreenSpec(value.splashScreen)) &&
|
|
59
|
+
(value.media === undefined || isMediaManifest(value.media)));
|
|
60
|
+
}
|
|
61
|
+
/*** Validate independently optional application capability selections. */
|
|
62
|
+
function isOptionalCapabilities(value) {
|
|
63
|
+
return ((value.deploy === undefined || isAppDeployManifest(value.deploy)) &&
|
|
64
|
+
(value.state === undefined || isAppStateSpec(value.state)) &&
|
|
65
|
+
(value.dataSources === undefined || isDataSourceRegistry(value.dataSources)) &&
|
|
66
|
+
(value.dataBindings === undefined || isComponentDataBindingRegistry(value.dataBindings)) &&
|
|
67
|
+
(value.repository === undefined || isRepositoryManifest(value.repository)));
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=isAppManifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isAppManifest.js","sourceRoot":"","sources":["../../src/appManifest/isAppManifest.ts"],"names":[],"mappings":"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","sourcesContent":["import { isStringArray } from '@ankhorage/utility/array';\nimport { isRecord } from '@ankhorage/utility/object';\n\nimport { isInfraManifest } from '../infra/isInfraManifest';\nimport type { AppManifest } from '../types';\nimport { isComponentDataBindingRegistry } from './bindings';\nimport { APP_MANIFEST_KEY_POLICY } from './constants';\nimport { isDataSourceRegistry } from './dataSources';\nimport { isAppDeployManifest } from './deploy';\nimport { isAppStateSpec } from './isAppStateSpec';\nimport { isMediaManifest } from './media';\nimport {\n isAppNavigatorManifest,\n isManifestMetadata,\n isScreenRegistry,\n isSplashScreenSpec,\n isThemeConfig,\n} from './screens';\n\n/*** Return whether an unknown value satisfies the canonical AppManifest shape. */\nexport function isAppManifest(value: unknown): value is AppManifest {\n return (\n isRecord(value) &&\n hasRequiredManifestKeys(value) &&\n !('generatedApis' in value) &&\n isManifestMetadata(value.metadata) &&\n isPresentation(value) &&\n isOptionalCapabilities(value) &&\n isInfraManifest(value.infra) &&\n isAppNavigatorManifest(value.navigator) &&\n isScreenRegistry(value.screens) &&\n isAppSettings(value.settings)\n );\n}\n\n/*** Validate the canonical application manifest field policy. */\nfunction hasRequiredManifestKeys(value: Record<string, unknown>): boolean {\n return Object.entries(APP_MANIFEST_KEY_POLICY).every(\n ([key, policy]) => policy === 'optional' || key in value,\n );\n}\n\n/*** Validate the canonical application manifest field policy. */\nfunction isActiveThemeMode(value: unknown): boolean {\n return value === undefined || value === 'dark' || value === 'light';\n}\n\n/*** Validate the canonical application manifest field policy. */\nfunction isRepositoryManifest(value: unknown): boolean {\n return (\n isRecord(value) &&\n value.provider === 'github' &&\n typeof value.owner === 'string' &&\n value.owner.length > 0 &&\n typeof value.name === 'string' &&\n value.name.length > 0 &&\n typeof value.url === 'string' &&\n value.url.length > 0 &&\n value.defaultBranch === 'main'\n );\n}\n\n/*** Validate the canonical application manifest field policy. */\nfunction isAppSettings(value: unknown): boolean {\n return (\n isRecord(value) &&\n !('apiBaseUrl' in value) &&\n isRecord(value.localization) &&\n typeof value.localization.defaultLocale === 'string' &&\n isStringArray(value.localization.locales)\n );\n}\n\n/*** Validate authored appearance as one cohesive manifest concern. */\nfunction isPresentation(value: Record<string, unknown>): boolean {\n return (\n Array.isArray(value.themes) &&\n value.themes.every(isThemeConfig) &&\n typeof value.activeThemeId === 'string' &&\n isActiveThemeMode(value.activeThemeMode) &&\n (value.splashScreen === undefined || isSplashScreenSpec(value.splashScreen)) &&\n (value.media === undefined || isMediaManifest(value.media))\n );\n}\n\n/*** Validate independently optional application capability selections. */\nfunction isOptionalCapabilities(value: Record<string, unknown>): boolean {\n return (\n (value.deploy === undefined || isAppDeployManifest(value.deploy)) &&\n (value.state === undefined || isAppStateSpec(value.state)) &&\n (value.dataSources === undefined || isDataSourceRegistry(value.dataSources)) &&\n (value.dataBindings === undefined || isComponentDataBindingRegistry(value.dataBindings)) &&\n (value.repository === undefined || isRepositoryManifest(value.repository))\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isAppStateSpec.d.ts","sourceRoot":"","sources":["../../src/appManifest/isAppStateSpec.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAOpE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { isRecord } from '@ankhorage/utility/object';
|
|
2
|
+
/*** Application state cannot claim persistence unsupported by the selected Legend adapter. */
|
|
3
|
+
export function isAppStateSpec(value) {
|
|
4
|
+
return (isRecord(value) &&
|
|
5
|
+
value.provider === 'legend' &&
|
|
6
|
+
(value.persistence === undefined || value.persistence === false) &&
|
|
7
|
+
Object.keys(value).every((key) => key === 'provider' || key === 'persistence'));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=isAppStateSpec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isAppStateSpec.js","sourceRoot":"","sources":["../../src/appManifest/isAppStateSpec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAIrD,8FAA8F;AAC9F,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAC3B,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,aAAa,CAAC,CAC/E,CAAC;AACJ,CAAC","sourcesContent":["import { isRecord } from '@ankhorage/utility/object';\n\nimport type { AppStateSpec } from '../state';\n\n/*** Application state cannot claim persistence unsupported by the selected Legend adapter. */\nexport function isAppStateSpec(value: unknown): value is AppStateSpec {\n return (\n isRecord(value) &&\n value.provider === 'legend' &&\n (value.persistence === undefined || value.persistence === false) &&\n Object.keys(value).every((key) => key === 'provider' || key === 'persistence')\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isManifestValue.d.ts","sourceRoot":"","sources":["../../src/appManifest/isManifestValue.ts"],"names":[],"mappings":"AAEA,wGAAwG;AACxG,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAevD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { isRecord } from '@ankhorage/utility/object';
|
|
2
|
+
/*** Validate the existing recursive ManifestValue domain used by authored bindings and API metadata. */
|
|
3
|
+
export function isManifestValue(value) {
|
|
4
|
+
if (value === null ||
|
|
5
|
+
typeof value === 'string' ||
|
|
6
|
+
typeof value === 'number' ||
|
|
7
|
+
typeof value === 'boolean') {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
if (Array.isArray(value)) {
|
|
11
|
+
return value.every(isManifestValue);
|
|
12
|
+
}
|
|
13
|
+
return isRecord(value) && Object.values(value).every(isManifestValue);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=isManifestValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isManifestValue.js","sourceRoot":"","sources":["../../src/appManifest/isManifestValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,wGAAwG;AACxG,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IACE,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS,EAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AACxE,CAAC","sourcesContent":["import { isRecord } from '@ankhorage/utility/object';\n\n/*** Validate the existing recursive ManifestValue domain used by authored bindings and API metadata. */\nexport function isManifestValue(value: unknown): boolean {\n if (\n value === null ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return true;\n }\n\n if (Array.isArray(value)) {\n return value.every(isManifestValue);\n }\n\n return isRecord(value) && Object.values(value).every(isManifestValue);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/appManifest/media.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/appManifest/media.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,UAAU,CAAC;AAIlB,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAMtE"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import { hasOnlyKeys, isRecord } from '@ankhorage/utility/object';
|
|
2
|
+
import { isNonEmptyString, isOptionalString } from '@ankhorage/utility/string';
|
|
1
3
|
import { MEDIA_ASSET_KINDS, } from '../media';
|
|
2
|
-
import { isOptionalString, isRecord } from './shared';
|
|
3
4
|
const MEDIA_ASSET_KIND_SET = new Set(MEDIA_ASSET_KINDS);
|
|
5
|
+
/*** Validate authored media assets and their registry identity. */
|
|
4
6
|
export function isMediaManifest(value) {
|
|
5
7
|
if (!isRecord(value) || !hasOnlyKeys(value, ['assets']) || !isRecord(value.assets))
|
|
6
8
|
return false;
|
|
7
9
|
return Object.entries(value.assets).every(([assetId, asset]) => isMediaAsset(asset) && asset.id === assetId);
|
|
8
10
|
}
|
|
11
|
+
/*** Validate media identity, kind, source and optional metadata. */
|
|
9
12
|
function isMediaAsset(value) {
|
|
10
13
|
return (isRecord(value) &&
|
|
11
14
|
hasOnlyKeys(value, ['id', 'name', 'kind', 'source', 'contentType', 'metadata']) &&
|
|
@@ -17,6 +20,7 @@ function isMediaAsset(value) {
|
|
|
17
20
|
isOptionalString(value.contentType) &&
|
|
18
21
|
(value.metadata === undefined || isMediaAssetMetadata(value.metadata)));
|
|
19
22
|
}
|
|
23
|
+
/*** Validate the selected bundled, URL or storage-backed media source. */
|
|
20
24
|
function isMediaAssetSource(value) {
|
|
21
25
|
if (!isRecord(value) || typeof value.kind !== 'string')
|
|
22
26
|
return false;
|
|
@@ -31,6 +35,7 @@ function isMediaAssetSource(value) {
|
|
|
31
35
|
}
|
|
32
36
|
return (value.kind === 'bundled' && hasOnlyKeys(value, ['kind', 'path']) && isBundledPath(value.path));
|
|
33
37
|
}
|
|
38
|
+
/*** Validate optional descriptive and numeric media metadata. */
|
|
34
39
|
function isMediaAssetMetadata(value) {
|
|
35
40
|
return (isRecord(value) &&
|
|
36
41
|
hasOnlyKeys(value, [
|
|
@@ -48,9 +53,11 @@ function isMediaAssetMetadata(value) {
|
|
|
48
53
|
isOptionalFinitePositiveNumber(value.height) &&
|
|
49
54
|
isOptionalFiniteNonNegativeNumber(value.durationMs));
|
|
50
55
|
}
|
|
56
|
+
/*** Validate an authored HTTP or HTTPS media URL. */
|
|
51
57
|
function isStableRemoteUrl(value) {
|
|
52
58
|
return typeof value === 'string' && /^https?:\/\//iu.test(value.trim());
|
|
53
59
|
}
|
|
60
|
+
/*** Validate a portable bundled-media path. */
|
|
54
61
|
function isBundledPath(value) {
|
|
55
62
|
if (!isNonEmptyString(value))
|
|
56
63
|
return false;
|
|
@@ -59,17 +66,12 @@ function isBundledPath(value) {
|
|
|
59
66
|
return false;
|
|
60
67
|
return !path.split('/').includes('..');
|
|
61
68
|
}
|
|
62
|
-
|
|
63
|
-
return typeof value === 'string' && value.trim().length > 0;
|
|
64
|
-
}
|
|
69
|
+
/*** Accept an omitted media metric or a finite non-negative number. */
|
|
65
70
|
function isOptionalFiniteNonNegativeNumber(value) {
|
|
66
71
|
return value === undefined || (typeof value === 'number' && Number.isFinite(value) && value >= 0);
|
|
67
72
|
}
|
|
73
|
+
/*** Accept an omitted media metric or a finite positive number. */
|
|
68
74
|
function isOptionalFinitePositiveNumber(value) {
|
|
69
75
|
return value === undefined || (typeof value === 'number' && Number.isFinite(value) && value > 0);
|
|
70
76
|
}
|
|
71
|
-
function hasOnlyKeys(value, allowedKeys) {
|
|
72
|
-
const allowed = new Set(allowedKeys);
|
|
73
|
-
return Object.keys(value).every((key) => allowed.has(key));
|
|
74
|
-
}
|
|
75
77
|
//# sourceMappingURL=media.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/appManifest/media.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/appManifest/media.ts"],"names":[],"mappings":"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","sourcesContent":["import { hasOnlyKeys, isRecord } from '@ankhorage/utility/object';\nimport { isNonEmptyString, isOptionalString } from '@ankhorage/utility/string';\n\nimport {\n MEDIA_ASSET_KINDS,\n type MediaAsset,\n type MediaAssetMetadata,\n type MediaAssetSource,\n type MediaManifest,\n} from '../media';\n\nconst MEDIA_ASSET_KIND_SET = new Set<string>(MEDIA_ASSET_KINDS);\n\n/*** Validate authored media assets and their registry identity. */\nexport function isMediaManifest(value: unknown): value is MediaManifest {\n if (!isRecord(value) || !hasOnlyKeys(value, ['assets']) || !isRecord(value.assets)) return false;\n\n return Object.entries(value.assets).every(\n ([assetId, asset]) => isMediaAsset(asset) && asset.id === assetId,\n );\n}\n\n/*** Validate media identity, kind, source and optional metadata. */\nfunction isMediaAsset(value: unknown): value is MediaAsset {\n return (\n isRecord(value) &&\n hasOnlyKeys(value, ['id', 'name', 'kind', 'source', 'contentType', 'metadata']) &&\n isNonEmptyString(value.id) &&\n isNonEmptyString(value.name) &&\n typeof value.kind === 'string' &&\n MEDIA_ASSET_KIND_SET.has(value.kind) &&\n isMediaAssetSource(value.source) &&\n isOptionalString(value.contentType) &&\n (value.metadata === undefined || isMediaAssetMetadata(value.metadata))\n );\n}\n\n/*** Validate the selected bundled, URL or storage-backed media source. */\nfunction isMediaAssetSource(value: unknown): value is MediaAssetSource {\n if (!isRecord(value) || typeof value.kind !== 'string') return false;\n\n if (value.kind === 'storage') {\n return (\n hasOnlyKeys(value, ['kind', 'storageId', 'bucket', 'path']) &&\n isOptionalString(value.storageId) &&\n isNonEmptyString(value.bucket) &&\n isNonEmptyString(value.path)\n );\n }\n\n if (value.kind === 'url') {\n return hasOnlyKeys(value, ['kind', 'url']) && isStableRemoteUrl(value.url);\n }\n\n return (\n value.kind === 'bundled' && hasOnlyKeys(value, ['kind', 'path']) && isBundledPath(value.path)\n );\n}\n\n/*** Validate optional descriptive and numeric media metadata. */\nfunction isMediaAssetMetadata(value: unknown): value is MediaAssetMetadata {\n return (\n isRecord(value) &&\n hasOnlyKeys(value, [\n 'originalFileName',\n 'sizeBytes',\n 'createdAt',\n 'width',\n 'height',\n 'durationMs',\n ]) &&\n isOptionalString(value.originalFileName) &&\n isOptionalString(value.createdAt) &&\n isOptionalFiniteNonNegativeNumber(value.sizeBytes) &&\n isOptionalFinitePositiveNumber(value.width) &&\n isOptionalFinitePositiveNumber(value.height) &&\n isOptionalFiniteNonNegativeNumber(value.durationMs)\n );\n}\n\n/*** Validate an authored HTTP or HTTPS media URL. */\nfunction isStableRemoteUrl(value: unknown): boolean {\n return typeof value === 'string' && /^https?:\\/\\//iu.test(value.trim());\n}\n\n/*** Validate a portable bundled-media path. */\nfunction isBundledPath(value: unknown): boolean {\n if (!isNonEmptyString(value)) return false;\n const path = value.trim();\n if (path.startsWith('/') || /^[a-z][a-z0-9+.-]*:/iu.test(path)) return false;\n return !path.split('/').includes('..');\n}\n\n/*** Accept an omitted media metric or a finite non-negative number. */\nfunction isOptionalFiniteNonNegativeNumber(value: unknown): boolean {\n return value === undefined || (typeof value === 'number' && Number.isFinite(value) && value >= 0);\n}\n\n/*** Accept an omitted media metric or a finite positive number. */\nfunction isOptionalFinitePositiveNumber(value: unknown): boolean {\n return value === undefined || (typeof value === 'number' && Number.isFinite(value) && value > 0);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigator.d.ts","sourceRoot":"","sources":["../../src/appManifest/navigator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"navigator.d.ts","sourceRoot":"","sources":["../../src/appManifest/navigator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,oBAAoB,EAAsC,MAAM,cAAc,CAAC;AAU7F,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAUpF"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { isStringArray } from '@ankhorage/utility/array';
|
|
2
|
+
import { hasOnlyKeys, isRecord } from '@ankhorage/utility/object';
|
|
3
|
+
import { isOptionalString } from '@ankhorage/utility/string';
|
|
1
4
|
import { NAVIGATOR_PRESETS, NAVIGATOR_TYPES } from '../navigator';
|
|
2
5
|
import { isIconSpec } from './icon';
|
|
3
|
-
import {
|
|
4
|
-
import { isOptionalBoolean, isOptionalString, isRecord, isStringArray } from './shared';
|
|
6
|
+
import { isDrawerNavigatorOptions, isNavigatorScreenReference, isStackImplementationConfig, isStackScreenOptions, isTabsImplementationConfig, } from './navigatorOptions';
|
|
5
7
|
/*** Validate the complete serialized `AppManifest.navigator` slice. */
|
|
6
8
|
export function isAppNavigatorManifest(value) {
|
|
7
9
|
return (isRecord(value) &&
|
|
@@ -52,12 +54,11 @@ function hasNavigatorType(value) {
|
|
|
52
54
|
function isRouteDefinition(value) {
|
|
53
55
|
return (isRecord(value) &&
|
|
54
56
|
typeof value.name === 'string' &&
|
|
55
|
-
|
|
56
|
-
isOptionalString(value.label) &&
|
|
57
|
+
[value.path, value.label, value.screenId].every(isOptionalString) &&
|
|
57
58
|
(value.icon === undefined || isIconSpec(value.icon)) &&
|
|
58
|
-
|
|
59
|
+
(value.showInPrimaryNavigation === undefined ||
|
|
60
|
+
typeof value.showInPrimaryNavigation === 'boolean') &&
|
|
59
61
|
(value.guards === undefined || isStringArray(value.guards)) &&
|
|
60
|
-
isOptionalString(value.screenId) &&
|
|
61
62
|
(value.stackOptions === undefined || isStackScreenOptions(value.stackOptions)) &&
|
|
62
63
|
(value.navigator === undefined || isNavigatorNode(value.navigator)));
|
|
63
64
|
}
|