@signstack/cli 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +458 -0
- package/bin/run.js +12 -0
- package/dist/apps/signstack-cli/schemas/asset.schema.json +220 -0
- package/dist/apps/signstack-cli/schemas/blueprint.schema.json +485 -0
- package/dist/apps/signstack-cli/schemas/jsonata-function.schema.json +185 -0
- package/dist/apps/signstack-cli/schemas/schema.schema.json +97 -0
- package/dist/apps/signstack-cli/schemas/template.schema.json +295 -0
- package/dist/apps/signstack-cli/src/commands/auth/login.d.ts +25 -0
- package/dist/apps/signstack-cli/src/commands/auth/login.js +229 -0
- package/dist/apps/signstack-cli/src/commands/auth/login.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/auth/logout.d.ts +10 -0
- package/dist/apps/signstack-cli/src/commands/auth/logout.js +59 -0
- package/dist/apps/signstack-cli/src/commands/auth/logout.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/auth/whoami.d.ts +9 -0
- package/dist/apps/signstack-cli/src/commands/auth/whoami.js +85 -0
- package/dist/apps/signstack-cli/src/commands/auth/whoami.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/generate.d.ts +51 -0
- package/dist/apps/signstack-cli/src/commands/generate.js +479 -0
- package/dist/apps/signstack-cli/src/commands/generate.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/preview.d.ts +24 -0
- package/dist/apps/signstack-cli/src/commands/preview.js +162 -0
- package/dist/apps/signstack-cli/src/commands/preview.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/pull.d.ts +28 -0
- package/dist/apps/signstack-cli/src/commands/pull.js +244 -0
- package/dist/apps/signstack-cli/src/commands/pull.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/push.d.ts +46 -0
- package/dist/apps/signstack-cli/src/commands/push.js +460 -0
- package/dist/apps/signstack-cli/src/commands/push.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/run.d.ts +22 -0
- package/dist/apps/signstack-cli/src/commands/run.js +126 -0
- package/dist/apps/signstack-cli/src/commands/run.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/test.d.ts +6 -0
- package/dist/apps/signstack-cli/src/commands/test.js +25 -0
- package/dist/apps/signstack-cli/src/commands/test.js.map +1 -0
- package/dist/apps/signstack-cli/src/commands/validate.d.ts +59 -0
- package/dist/apps/signstack-cli/src/commands/validate.js +558 -0
- package/dist/apps/signstack-cli/src/commands/validate.js.map +1 -0
- package/dist/apps/signstack-cli/src/index.d.ts +1 -0
- package/dist/apps/signstack-cli/src/index.js +2 -0
- package/dist/apps/signstack-cli/src/index.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/api-client.d.ts +77 -0
- package/dist/apps/signstack-cli/src/lib/api-client.js +269 -0
- package/dist/apps/signstack-cli/src/lib/api-client.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/base-command.d.ts +38 -0
- package/dist/apps/signstack-cli/src/lib/base-command.js +135 -0
- package/dist/apps/signstack-cli/src/lib/base-command.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/config.d.ts +47 -0
- package/dist/apps/signstack-cli/src/lib/config.js +106 -0
- package/dist/apps/signstack-cli/src/lib/config.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/entity-data-resolver.d.ts +31 -0
- package/dist/apps/signstack-cli/src/lib/entity-data-resolver.js +107 -0
- package/dist/apps/signstack-cli/src/lib/entity-data-resolver.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/local-resource-loader.d.ts +72 -0
- package/dist/apps/signstack-cli/src/lib/local-resource-loader.js +238 -0
- package/dist/apps/signstack-cli/src/lib/local-resource-loader.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/path-utils.d.ts +4 -0
- package/dist/apps/signstack-cli/src/lib/path-utils.js +7 -0
- package/dist/apps/signstack-cli/src/lib/path-utils.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/payload-builder.d.ts +127 -0
- package/dist/apps/signstack-cli/src/lib/payload-builder.js +545 -0
- package/dist/apps/signstack-cli/src/lib/payload-builder.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/preview-handler.d.ts +95 -0
- package/dist/apps/signstack-cli/src/lib/preview-handler.js +611 -0
- package/dist/apps/signstack-cli/src/lib/preview-handler.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/preview-output-formatter.d.ts +63 -0
- package/dist/apps/signstack-cli/src/lib/preview-output-formatter.js +198 -0
- package/dist/apps/signstack-cli/src/lib/preview-output-formatter.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/public-api-client.d.ts +13 -0
- package/dist/apps/signstack-cli/src/lib/public-api-client.js +39 -0
- package/dist/apps/signstack-cli/src/lib/public-api-client.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/resource-puller.d.ts +131 -0
- package/dist/apps/signstack-cli/src/lib/resource-puller.js +800 -0
- package/dist/apps/signstack-cli/src/lib/resource-puller.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/resource-pusher.d.ts +87 -0
- package/dist/apps/signstack-cli/src/lib/resource-pusher.js +361 -0
- package/dist/apps/signstack-cli/src/lib/resource-pusher.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/resource-scanner.d.ts +29 -0
- package/dist/apps/signstack-cli/src/lib/resource-scanner.js +101 -0
- package/dist/apps/signstack-cli/src/lib/resource-scanner.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/resource-validator.d.ts +44 -0
- package/dist/apps/signstack-cli/src/lib/resource-validator.js +158 -0
- package/dist/apps/signstack-cli/src/lib/resource-validator.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/run-handler.d.ts +47 -0
- package/dist/apps/signstack-cli/src/lib/run-handler.js +266 -0
- package/dist/apps/signstack-cli/src/lib/run-handler.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/safe-path.d.ts +28 -0
- package/dist/apps/signstack-cli/src/lib/safe-path.js +44 -0
- package/dist/apps/signstack-cli/src/lib/safe-path.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/scenario-file.d.ts +35 -0
- package/dist/apps/signstack-cli/src/lib/scenario-file.js +80 -0
- package/dist/apps/signstack-cli/src/lib/scenario-file.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/schema-validator.d.ts +8 -0
- package/dist/apps/signstack-cli/src/lib/schema-validator.js +39 -0
- package/dist/apps/signstack-cli/src/lib/schema-validator.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/url-validator.d.ts +17 -0
- package/dist/apps/signstack-cli/src/lib/url-validator.js +61 -0
- package/dist/apps/signstack-cli/src/lib/url-validator.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/yaml-document-parser.d.ts +25 -0
- package/dist/apps/signstack-cli/src/lib/yaml-document-parser.js +133 -0
- package/dist/apps/signstack-cli/src/lib/yaml-document-parser.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/yaml-transforms.d.ts +3 -0
- package/dist/apps/signstack-cli/src/lib/yaml-transforms.js +32 -0
- package/dist/apps/signstack-cli/src/lib/yaml-transforms.js.map +1 -0
- package/dist/apps/signstack-cli/src/lib/yaml-writer.d.ts +47 -0
- package/dist/apps/signstack-cli/src/lib/yaml-writer.js +160 -0
- package/dist/apps/signstack-cli/src/lib/yaml-writer.js.map +1 -0
- package/dist/apps/signstack-cli/src/types/auth.types.d.ts +48 -0
- package/dist/apps/signstack-cli/src/types/auth.types.js +31 -0
- package/dist/apps/signstack-cli/src/types/auth.types.js.map +1 -0
- package/dist/apps/signstack-cli/src/types/schema.types.d.ts +14 -0
- package/dist/apps/signstack-cli/src/types/schema.types.js +16 -0
- package/dist/apps/signstack-cli/src/types/schema.types.js.map +1 -0
- package/dist/apps/signstack-cli/src/types/yaml.types.d.ts +144 -0
- package/dist/apps/signstack-cli/src/types/yaml.types.js +2 -0
- package/dist/apps/signstack-cli/src/types/yaml.types.js.map +1 -0
- package/dist/libs/common/base/src/index.d.ts +14 -0
- package/dist/libs/common/base/src/index.js +44 -0
- package/dist/libs/common/base/src/index.js.map +1 -0
- package/dist/libs/common/base/src/lib/address.util.d.ts +12 -0
- package/dist/libs/common/base/src/lib/address.util.js +55 -0
- package/dist/libs/common/base/src/lib/address.util.js.map +1 -0
- package/dist/libs/common/base/src/lib/country-code-data.d.ts +5 -0
- package/dist/libs/common/base/src/lib/country-code-data.js +1256 -0
- package/dist/libs/common/base/src/lib/country-code-data.js.map +1 -0
- package/dist/libs/common/base/src/lib/date.util.d.ts +13 -0
- package/dist/libs/common/base/src/lib/date.util.js +135 -0
- package/dist/libs/common/base/src/lib/date.util.js.map +1 -0
- package/dist/libs/common/base/src/lib/headers.d.ts +1 -0
- package/dist/libs/common/base/src/lib/headers.js +5 -0
- package/dist/libs/common/base/src/lib/headers.js.map +1 -0
- package/dist/libs/common/base/src/lib/jsonata.service.d.ts +32 -0
- package/dist/libs/common/base/src/lib/jsonata.service.js +207 -0
- package/dist/libs/common/base/src/lib/jsonata.service.js.map +1 -0
- package/dist/libs/common/base/src/lib/key-validation.constants.d.ts +37 -0
- package/dist/libs/common/base/src/lib/key-validation.constants.js +144 -0
- package/dist/libs/common/base/src/lib/key-validation.constants.js.map +1 -0
- package/dist/libs/common/base/src/lib/phone-util.d.ts +16 -0
- package/dist/libs/common/base/src/lib/phone-util.js +61 -0
- package/dist/libs/common/base/src/lib/phone-util.js.map +1 -0
- package/dist/libs/common/base/src/lib/schema-validation.util.d.ts +24 -0
- package/dist/libs/common/base/src/lib/schema-validation.util.js +155 -0
- package/dist/libs/common/base/src/lib/schema-validation.util.js.map +1 -0
- package/dist/libs/common/base/src/lib/string-builder.d.ts +48 -0
- package/dist/libs/common/base/src/lib/string-builder.js +90 -0
- package/dist/libs/common/base/src/lib/string-builder.js.map +1 -0
- package/dist/libs/common/base/src/lib/util.d.ts +20 -0
- package/dist/libs/common/base/src/lib/util.js +110 -0
- package/dist/libs/common/base/src/lib/util.js.map +1 -0
- package/dist/libs/signstack/base/schemas/asset.schema.json +220 -0
- package/dist/libs/signstack/base/schemas/blueprint.schema.json +485 -0
- package/dist/libs/signstack/base/schemas/jsonata-function.schema.json +185 -0
- package/dist/libs/signstack/base/schemas/schema.schema.json +97 -0
- package/dist/libs/signstack/base/schemas/template.schema.json +295 -0
- package/dist/libs/signstack/base/src/index.d.ts +28 -0
- package/dist/libs/signstack/base/src/index.js +32 -0
- package/dist/libs/signstack/base/src/index.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/constants.d.ts +123 -0
- package/dist/libs/signstack/base/src/lib/constants.js +131 -0
- package/dist/libs/signstack/base/src/lib/constants.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/hash.util.d.ts +58 -0
- package/dist/libs/signstack/base/src/lib/hash.util.js +90 -0
- package/dist/libs/signstack/base/src/lib/hash.util.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.d.ts +29 -0
- package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.js +93 -0
- package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/ai-chat.d.ts +41 -0
- package/dist/libs/signstack/base/src/lib/models/ai-chat.js +3 -0
- package/dist/libs/signstack/base/src/lib/models/ai-chat.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/api-key.d.ts +54 -0
- package/dist/libs/signstack/base/src/lib/models/api-key.js +18 -0
- package/dist/libs/signstack/base/src/lib/models/api-key.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/asset.d.ts +101 -0
- package/dist/libs/signstack/base/src/lib/models/asset.js +11 -0
- package/dist/libs/signstack/base/src/lib/models/asset.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/auth.d.ts +142 -0
- package/dist/libs/signstack/base/src/lib/models/auth.js +35 -0
- package/dist/libs/signstack/base/src/lib/models/auth.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/base.d.ts +134 -0
- package/dist/libs/signstack/base/src/lib/models/base.js +71 -0
- package/dist/libs/signstack/base/src/lib/models/base.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/blueprint.d.ts +311 -0
- package/dist/libs/signstack/base/src/lib/models/blueprint.js +9 -0
- package/dist/libs/signstack/base/src/lib/models/blueprint.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/file.d.ts +75 -0
- package/dist/libs/signstack/base/src/lib/models/file.js +9 -0
- package/dist/libs/signstack/base/src/lib/models/file.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/jsonata-function.d.ts +111 -0
- package/dist/libs/signstack/base/src/lib/models/jsonata-function.js +19 -0
- package/dist/libs/signstack/base/src/lib/models/jsonata-function.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/marketplace-listing.d.ts +132 -0
- package/dist/libs/signstack/base/src/lib/models/marketplace-listing.js +22 -0
- package/dist/libs/signstack/base/src/lib/models/marketplace-listing.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/membership.d.ts +127 -0
- package/dist/libs/signstack/base/src/lib/models/membership.js +22 -0
- package/dist/libs/signstack/base/src/lib/models/membership.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/namespace.d.ts +87 -0
- package/dist/libs/signstack/base/src/lib/models/namespace.js +57 -0
- package/dist/libs/signstack/base/src/lib/models/namespace.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/organization.d.ts +79 -0
- package/dist/libs/signstack/base/src/lib/models/organization.js +41 -0
- package/dist/libs/signstack/base/src/lib/models/organization.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/render-job.d.ts +88 -0
- package/dist/libs/signstack/base/src/lib/models/render-job.js +3 -0
- package/dist/libs/signstack/base/src/lib/models/render-job.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/resource-edge.d.ts +60 -0
- package/dist/libs/signstack/base/src/lib/models/resource-edge.js +202 -0
- package/dist/libs/signstack/base/src/lib/models/resource-edge.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/scenario.d.ts +138 -0
- package/dist/libs/signstack/base/src/lib/models/scenario.js +14 -0
- package/dist/libs/signstack/base/src/lib/models/scenario.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/schema.d.ts +131 -0
- package/dist/libs/signstack/base/src/lib/models/schema.js +44 -0
- package/dist/libs/signstack/base/src/lib/models/schema.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/shareable-link.d.ts +215 -0
- package/dist/libs/signstack/base/src/lib/models/shareable-link.js +27 -0
- package/dist/libs/signstack/base/src/lib/models/shareable-link.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/subscription.d.ts +279 -0
- package/dist/libs/signstack/base/src/lib/models/subscription.js +105 -0
- package/dist/libs/signstack/base/src/lib/models/subscription.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/template.d.ts +248 -0
- package/dist/libs/signstack/base/src/lib/models/template.js +32 -0
- package/dist/libs/signstack/base/src/lib/models/template.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/user.d.ts +30 -0
- package/dist/libs/signstack/base/src/lib/models/user.js +3 -0
- package/dist/libs/signstack/base/src/lib/models/user.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/webhook.d.ts +223 -0
- package/dist/libs/signstack/base/src/lib/models/webhook.js +62 -0
- package/dist/libs/signstack/base/src/lib/models/webhook.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/models/workflow.d.ts +917 -0
- package/dist/libs/signstack/base/src/lib/models/workflow.js +152 -0
- package/dist/libs/signstack/base/src/lib/models/workflow.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/util.d.ts +92 -0
- package/dist/libs/signstack/base/src/lib/util.js +406 -0
- package/dist/libs/signstack/base/src/lib/util.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/dependency-graph.d.ts +94 -0
- package/dist/libs/signstack/base/src/lib/validation/dependency-graph.js +446 -0
- package/dist/libs/signstack/base/src/lib/validation/dependency-graph.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/graph.types.d.ts +57 -0
- package/dist/libs/signstack/base/src/lib/validation/graph.types.js +8 -0
- package/dist/libs/signstack/base/src/lib/validation/graph.types.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/index.d.ts +9 -0
- package/dist/libs/signstack/base/src/lib/validation/index.js +23 -0
- package/dist/libs/signstack/base/src/lib/validation/index.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/resource-schemas.d.ts +3 -0
- package/dist/libs/signstack/base/src/lib/validation/resource-schemas.js +27 -0
- package/dist/libs/signstack/base/src/lib/validation/resource-schemas.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.d.ts +57 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.js +57 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validator.d.ts +38 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validator.js +146 -0
- package/dist/libs/signstack/base/src/lib/validation/schema-validator.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.d.ts +22 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.js +69 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.d.ts +37 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.js +250 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.d.ts +24 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.js +98 -0
- package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.d.ts +12 -0
- package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.js +50 -0
- package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.js.map +1 -0
- package/dist/libs/signstack/base/src/lib/yaml-spec-converter.d.ts +101 -0
- package/dist/libs/signstack/base/src/lib/yaml-spec-converter.js +998 -0
- package/dist/libs/signstack/base/src/lib/yaml-spec-converter.js.map +1 -0
- package/oclif.manifest.json +822 -0
- package/package.json +101 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../../../../../libs/signstack/base/src/lib/util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { ParsedDocument, ParsedReference, ResourceId, TopologicalSortResult } from './graph.types';
|
|
2
|
+
import { SchemaKind } from './schema-validation.types';
|
|
3
|
+
/**
|
|
4
|
+
* Extract all references from a parsed document
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractReferences(content: Record<string, unknown>, kind: SchemaKind): ParsedReference[];
|
|
7
|
+
/**
|
|
8
|
+
* Dependency graph for SignStack resources
|
|
9
|
+
*/
|
|
10
|
+
export declare class DependencyGraph {
|
|
11
|
+
/** All parsed documents indexed by resource ID */
|
|
12
|
+
readonly nodes: Map<ResourceId, ParsedDocument>;
|
|
13
|
+
/** Outgoing edges: resource -> resources it depends on */
|
|
14
|
+
readonly edges: Map<ResourceId, Set<ResourceId>>;
|
|
15
|
+
/** Incoming edges: resource -> resources that depend on it */
|
|
16
|
+
readonly reverseDeps: Map<ResourceId, Set<ResourceId>>;
|
|
17
|
+
/**
|
|
18
|
+
* Create a ResourceId from components
|
|
19
|
+
*/
|
|
20
|
+
static createId(kind: SchemaKind, key: string, version: string): ResourceId;
|
|
21
|
+
/**
|
|
22
|
+
* Parse a ResourceId into components
|
|
23
|
+
*/
|
|
24
|
+
static parseId(id: ResourceId): {
|
|
25
|
+
kind: SchemaKind;
|
|
26
|
+
key: string;
|
|
27
|
+
version: string;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Find the latest (highest) version of a resource by kind and key.
|
|
31
|
+
* Compares versions using numeric semver segments (major.minor.patch).
|
|
32
|
+
*/
|
|
33
|
+
findLatestVersion(kind: SchemaKind, key: string): ParsedDocument | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Create a DependencyGraph from an array of parsed documents.
|
|
36
|
+
*/
|
|
37
|
+
static fromDocuments(documents: ParsedDocument[]): DependencyGraph;
|
|
38
|
+
/**
|
|
39
|
+
* Add a document to the graph
|
|
40
|
+
*/
|
|
41
|
+
addDocument(doc: ParsedDocument): void;
|
|
42
|
+
/**
|
|
43
|
+
* Add a dependency edge (from depends on to)
|
|
44
|
+
*/
|
|
45
|
+
addDependency(from: ResourceId, to: ResourceId): void;
|
|
46
|
+
/**
|
|
47
|
+
* Build edges from document references
|
|
48
|
+
*/
|
|
49
|
+
buildEdges(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Get leaf nodes (no outgoing dependencies to existing nodes)
|
|
52
|
+
*/
|
|
53
|
+
getLeafNodes(): ResourceId[];
|
|
54
|
+
/**
|
|
55
|
+
* Get root nodes (nothing depends on them)
|
|
56
|
+
*/
|
|
57
|
+
getRootNodes(): ResourceId[];
|
|
58
|
+
/**
|
|
59
|
+
* Get a resource and all its transitive dependencies (forward edges).
|
|
60
|
+
*/
|
|
61
|
+
getTransitiveDependencies(rootId: ResourceId): Set<ResourceId>;
|
|
62
|
+
/**
|
|
63
|
+
* Get missing dependencies (referenced but not in graph)
|
|
64
|
+
*/
|
|
65
|
+
getMissingDependencies(): Map<ResourceId, Set<ResourceId>>;
|
|
66
|
+
/**
|
|
67
|
+
* Get statistics about the graph
|
|
68
|
+
*/
|
|
69
|
+
getStats(): {
|
|
70
|
+
totalNodes: number;
|
|
71
|
+
totalEdges: number;
|
|
72
|
+
leafNodes: number;
|
|
73
|
+
rootNodes: number;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Perform topological sort using Kahn's algorithm
|
|
77
|
+
* Returns nodes in order where dependencies come before dependents
|
|
78
|
+
* (leaf nodes first, root nodes last)
|
|
79
|
+
*/
|
|
80
|
+
topologicalSort(): TopologicalSortResult;
|
|
81
|
+
/**
|
|
82
|
+
* Validate that versioned resources do not depend on draft resources.
|
|
83
|
+
*/
|
|
84
|
+
validateDraftDependencies(): {
|
|
85
|
+
sourceId: ResourceId;
|
|
86
|
+
dependencyId: ResourceId;
|
|
87
|
+
message: string;
|
|
88
|
+
}[];
|
|
89
|
+
/**
|
|
90
|
+
* Detect all cycles in the graph using DFS
|
|
91
|
+
* Returns arrays of nodes forming each cycle
|
|
92
|
+
*/
|
|
93
|
+
detectCycles(): ResourceId[][];
|
|
94
|
+
}
|
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DependencyGraph = void 0;
|
|
4
|
+
exports.extractReferences = extractReferences;
|
|
5
|
+
const base_1 = require("../models/base");
|
|
6
|
+
const graph_types_1 = require("./graph.types");
|
|
7
|
+
const schema_validation_types_1 = require("./schema-validation.types");
|
|
8
|
+
/**
|
|
9
|
+
* Extraction configurations for each schema kind
|
|
10
|
+
*/
|
|
11
|
+
const EXTRACTION_CONFIGS = {
|
|
12
|
+
[schema_validation_types_1.SchemaKind.Blueprint]: [
|
|
13
|
+
{ path: 'spec.inputs[].schema', targetKind: schema_validation_types_1.SchemaKind.Schema },
|
|
14
|
+
{
|
|
15
|
+
path: 'spec.envelopes[].documents[].template',
|
|
16
|
+
targetKind: schema_validation_types_1.SchemaKind.Template,
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
path: 'spec.functions',
|
|
20
|
+
targetKind: schema_validation_types_1.SchemaKind.JsonataFunction,
|
|
21
|
+
isObjectValues: true,
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
[schema_validation_types_1.SchemaKind.Template]: [
|
|
25
|
+
{ path: 'spec.content', targetKind: schema_validation_types_1.SchemaKind.Asset },
|
|
26
|
+
{ path: 'spec.inputs[].schema', targetKind: schema_validation_types_1.SchemaKind.Schema },
|
|
27
|
+
{ path: 'spec.roles[].output.schema', targetKind: schema_validation_types_1.SchemaKind.Schema },
|
|
28
|
+
{
|
|
29
|
+
path: 'spec.functions',
|
|
30
|
+
targetKind: schema_validation_types_1.SchemaKind.JsonataFunction,
|
|
31
|
+
isObjectValues: true,
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
[schema_validation_types_1.SchemaKind.JsonataFunction]: [
|
|
35
|
+
{ path: 'spec.params[].schema', targetKind: schema_validation_types_1.SchemaKind.Schema },
|
|
36
|
+
{ path: 'spec.returnType.schema', targetKind: schema_validation_types_1.SchemaKind.Schema },
|
|
37
|
+
{
|
|
38
|
+
path: 'spec.functions',
|
|
39
|
+
targetKind: schema_validation_types_1.SchemaKind.JsonataFunction,
|
|
40
|
+
isObjectValues: true,
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
// Schema is a leaf node - no outgoing dependencies
|
|
44
|
+
[schema_validation_types_1.SchemaKind.Schema]: [],
|
|
45
|
+
// Asset can reference other assets (partials, styles, images) and schemas
|
|
46
|
+
[schema_validation_types_1.SchemaKind.Asset]: [
|
|
47
|
+
{
|
|
48
|
+
path: 'spec.partials',
|
|
49
|
+
targetKind: schema_validation_types_1.SchemaKind.Asset,
|
|
50
|
+
isObjectValues: true,
|
|
51
|
+
},
|
|
52
|
+
{ path: 'spec.styles', targetKind: schema_validation_types_1.SchemaKind.Asset, isArray: true },
|
|
53
|
+
{
|
|
54
|
+
path: 'spec.images',
|
|
55
|
+
targetKind: schema_validation_types_1.SchemaKind.Asset,
|
|
56
|
+
isObjectValues: true,
|
|
57
|
+
},
|
|
58
|
+
{ path: 'spec.data.schema', targetKind: schema_validation_types_1.SchemaKind.Schema },
|
|
59
|
+
],
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Extract values at a path with array notation support
|
|
63
|
+
* Returns array of { value, fullPath } for each match
|
|
64
|
+
*/
|
|
65
|
+
function extractValuesAtPath(obj, path) {
|
|
66
|
+
const parts = path.split('.');
|
|
67
|
+
let current = [
|
|
68
|
+
{ value: obj, fullPath: '' },
|
|
69
|
+
];
|
|
70
|
+
for (const part of parts) {
|
|
71
|
+
const next = [];
|
|
72
|
+
for (const { value, fullPath } of current) {
|
|
73
|
+
if (value === null || value === undefined)
|
|
74
|
+
continue;
|
|
75
|
+
if (part.endsWith('[]')) {
|
|
76
|
+
// Array iteration
|
|
77
|
+
const key = part.slice(0, -2);
|
|
78
|
+
const arr = value[key];
|
|
79
|
+
if (Array.isArray(arr)) {
|
|
80
|
+
arr.forEach((item, index) => {
|
|
81
|
+
next.push({
|
|
82
|
+
value: item,
|
|
83
|
+
fullPath: `${fullPath}${fullPath ? '.' : ''}${key}[${index}]`,
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
// Regular property access
|
|
90
|
+
const nextValue = value[part];
|
|
91
|
+
if (nextValue !== undefined) {
|
|
92
|
+
next.push({
|
|
93
|
+
value: nextValue,
|
|
94
|
+
fullPath: fullPath ? `${fullPath}.${part}` : part,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
current = next;
|
|
100
|
+
}
|
|
101
|
+
return current;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Parse a reference string into structured data
|
|
105
|
+
*/
|
|
106
|
+
function parseReference(raw, targetKind, sourcePath) {
|
|
107
|
+
const [key, version] = raw.split('@');
|
|
108
|
+
return { raw, targetKind, key, version, sourcePath };
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Extract all references from a parsed document
|
|
112
|
+
*/
|
|
113
|
+
function extractReferences(content, kind) {
|
|
114
|
+
const paths = EXTRACTION_CONFIGS[kind];
|
|
115
|
+
if (!paths || paths.length === 0)
|
|
116
|
+
return [];
|
|
117
|
+
const references = [];
|
|
118
|
+
for (const pathConfig of paths) {
|
|
119
|
+
const values = extractValuesAtPath(content, pathConfig.path);
|
|
120
|
+
for (const { value, fullPath } of values) {
|
|
121
|
+
if (pathConfig.isObjectValues &&
|
|
122
|
+
typeof value === 'object' &&
|
|
123
|
+
value !== null) {
|
|
124
|
+
for (const [alias, ref] of Object.entries(value)) {
|
|
125
|
+
if (typeof ref === 'string' && graph_types_1.REFERENCE_PATTERN.test(ref)) {
|
|
126
|
+
// Simple reference: "key@version"
|
|
127
|
+
references.push(parseReference(ref, pathConfig.targetKind, `${fullPath}.${alias}`));
|
|
128
|
+
}
|
|
129
|
+
else if (typeof ref === 'object' &&
|
|
130
|
+
ref !== null &&
|
|
131
|
+
'asset' in ref) {
|
|
132
|
+
const assetRef = ref.asset;
|
|
133
|
+
if (typeof assetRef === 'string' &&
|
|
134
|
+
graph_types_1.REFERENCE_PATTERN.test(assetRef)) {
|
|
135
|
+
// Complex reference: { asset: "key@version", roleMap: {...} }
|
|
136
|
+
references.push(parseReference(assetRef, pathConfig.targetKind, `${fullPath}.${alias}.asset`));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else if (pathConfig.isArray && Array.isArray(value)) {
|
|
142
|
+
value.forEach((ref, index) => {
|
|
143
|
+
if (typeof ref === 'string' && graph_types_1.REFERENCE_PATTERN.test(ref)) {
|
|
144
|
+
references.push(parseReference(ref, pathConfig.targetKind, `${fullPath}[${index}]`));
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
else if (typeof value === 'string' && graph_types_1.REFERENCE_PATTERN.test(value)) {
|
|
149
|
+
references.push(parseReference(value, pathConfig.targetKind, fullPath));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return references;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Dependency graph for SignStack resources
|
|
157
|
+
*/
|
|
158
|
+
class DependencyGraph {
|
|
159
|
+
/** All parsed documents indexed by resource ID */
|
|
160
|
+
nodes = new Map();
|
|
161
|
+
/** Outgoing edges: resource -> resources it depends on */
|
|
162
|
+
edges = new Map();
|
|
163
|
+
/** Incoming edges: resource -> resources that depend on it */
|
|
164
|
+
reverseDeps = new Map();
|
|
165
|
+
/**
|
|
166
|
+
* Create a ResourceId from components
|
|
167
|
+
*/
|
|
168
|
+
static createId(kind, key, version) {
|
|
169
|
+
return `${kind}:${key}@${version}`;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Parse a ResourceId into components
|
|
173
|
+
*/
|
|
174
|
+
static parseId(id) {
|
|
175
|
+
const colonIndex = id.indexOf(':');
|
|
176
|
+
const kindPart = id.slice(0, colonIndex);
|
|
177
|
+
const rest = id.slice(colonIndex + 1);
|
|
178
|
+
const atIndex = rest.lastIndexOf('@');
|
|
179
|
+
const key = rest.slice(0, atIndex);
|
|
180
|
+
const version = rest.slice(atIndex + 1);
|
|
181
|
+
return { kind: kindPart, key, version };
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Find the latest (highest) version of a resource by kind and key.
|
|
185
|
+
* Compares versions using numeric semver segments (major.minor.patch).
|
|
186
|
+
*/
|
|
187
|
+
findLatestVersion(kind, key) {
|
|
188
|
+
let best;
|
|
189
|
+
let bestParts = [];
|
|
190
|
+
for (const doc of this.nodes.values()) {
|
|
191
|
+
if (doc.kind !== kind || doc.key !== key)
|
|
192
|
+
continue;
|
|
193
|
+
const parts = doc.version.split('.').map(Number);
|
|
194
|
+
if (!best ||
|
|
195
|
+
parts[0] > bestParts[0] ||
|
|
196
|
+
(parts[0] === bestParts[0] && parts[1] > bestParts[1]) ||
|
|
197
|
+
(parts[0] === bestParts[0] &&
|
|
198
|
+
parts[1] === bestParts[1] &&
|
|
199
|
+
parts[2] > bestParts[2])) {
|
|
200
|
+
best = doc;
|
|
201
|
+
bestParts = parts;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return best;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Create a DependencyGraph from an array of parsed documents.
|
|
208
|
+
*/
|
|
209
|
+
static fromDocuments(documents) {
|
|
210
|
+
const graph = new DependencyGraph();
|
|
211
|
+
for (const doc of documents) {
|
|
212
|
+
graph.addDocument(doc);
|
|
213
|
+
}
|
|
214
|
+
graph.buildEdges();
|
|
215
|
+
return graph;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Add a document to the graph
|
|
219
|
+
*/
|
|
220
|
+
addDocument(doc) {
|
|
221
|
+
this.nodes.set(doc.id, doc);
|
|
222
|
+
if (!this.edges.has(doc.id)) {
|
|
223
|
+
this.edges.set(doc.id, new Set());
|
|
224
|
+
}
|
|
225
|
+
if (!this.reverseDeps.has(doc.id)) {
|
|
226
|
+
this.reverseDeps.set(doc.id, new Set());
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Add a dependency edge (from depends on to)
|
|
231
|
+
*/
|
|
232
|
+
addDependency(from, to) {
|
|
233
|
+
if (!this.edges.has(from)) {
|
|
234
|
+
this.edges.set(from, new Set());
|
|
235
|
+
}
|
|
236
|
+
this.edges.get(from).add(to);
|
|
237
|
+
if (!this.reverseDeps.has(to)) {
|
|
238
|
+
this.reverseDeps.set(to, new Set());
|
|
239
|
+
}
|
|
240
|
+
this.reverseDeps.get(to).add(from);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Build edges from document references
|
|
244
|
+
*/
|
|
245
|
+
buildEdges() {
|
|
246
|
+
for (const [id, doc] of this.nodes) {
|
|
247
|
+
for (const ref of doc.references) {
|
|
248
|
+
const targetId = DependencyGraph.createId(ref.targetKind, ref.key, ref.version);
|
|
249
|
+
this.addDependency(id, targetId);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get leaf nodes (no outgoing dependencies to existing nodes)
|
|
255
|
+
*/
|
|
256
|
+
getLeafNodes() {
|
|
257
|
+
return Array.from(this.nodes.keys()).filter((id) => {
|
|
258
|
+
const deps = this.edges.get(id) ?? new Set();
|
|
259
|
+
// Leaf if no deps point to nodes in the graph
|
|
260
|
+
for (const dep of deps) {
|
|
261
|
+
if (this.nodes.has(dep))
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
return true;
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Get root nodes (nothing depends on them)
|
|
269
|
+
*/
|
|
270
|
+
getRootNodes() {
|
|
271
|
+
return Array.from(this.nodes.keys()).filter((id) => (this.reverseDeps.get(id)?.size ?? 0) === 0);
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Get a resource and all its transitive dependencies (forward edges).
|
|
275
|
+
*/
|
|
276
|
+
getTransitiveDependencies(rootId) {
|
|
277
|
+
const result = new Set();
|
|
278
|
+
const visit = (id) => {
|
|
279
|
+
if (result.has(id))
|
|
280
|
+
return;
|
|
281
|
+
result.add(id);
|
|
282
|
+
for (const dep of this.edges.get(id) ?? []) {
|
|
283
|
+
visit(dep);
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
visit(rootId);
|
|
287
|
+
return result;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Get missing dependencies (referenced but not in graph)
|
|
291
|
+
*/
|
|
292
|
+
getMissingDependencies() {
|
|
293
|
+
const missing = new Map();
|
|
294
|
+
for (const [id, deps] of this.edges) {
|
|
295
|
+
for (const dep of deps) {
|
|
296
|
+
if (!this.nodes.has(dep)) {
|
|
297
|
+
if (!missing.has(id)) {
|
|
298
|
+
missing.set(id, new Set());
|
|
299
|
+
}
|
|
300
|
+
missing.get(id).add(dep);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return missing;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Get statistics about the graph
|
|
308
|
+
*/
|
|
309
|
+
getStats() {
|
|
310
|
+
let totalEdges = 0;
|
|
311
|
+
for (const deps of this.edges.values()) {
|
|
312
|
+
totalEdges += deps.size;
|
|
313
|
+
}
|
|
314
|
+
return {
|
|
315
|
+
totalNodes: this.nodes.size,
|
|
316
|
+
totalEdges,
|
|
317
|
+
leafNodes: this.getLeafNodes().length,
|
|
318
|
+
rootNodes: this.getRootNodes().length,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Perform topological sort using Kahn's algorithm
|
|
323
|
+
* Returns nodes in order where dependencies come before dependents
|
|
324
|
+
* (leaf nodes first, root nodes last)
|
|
325
|
+
*/
|
|
326
|
+
topologicalSort() {
|
|
327
|
+
const result = [];
|
|
328
|
+
const inDegree = new Map();
|
|
329
|
+
// Initialize in-degree for all nodes
|
|
330
|
+
for (const id of this.nodes.keys()) {
|
|
331
|
+
inDegree.set(id, 0);
|
|
332
|
+
}
|
|
333
|
+
// Calculate in-degree (count of dependencies that exist in graph)
|
|
334
|
+
for (const [id, deps] of this.edges) {
|
|
335
|
+
if (!this.nodes.has(id))
|
|
336
|
+
continue;
|
|
337
|
+
let validDeps = 0;
|
|
338
|
+
for (const dep of deps) {
|
|
339
|
+
if (this.nodes.has(dep)) {
|
|
340
|
+
validDeps++;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
inDegree.set(id, validDeps);
|
|
344
|
+
}
|
|
345
|
+
// Queue starts with leaf nodes (no outgoing dependencies to existing nodes)
|
|
346
|
+
const queue = [];
|
|
347
|
+
for (const [id, degree] of inDegree) {
|
|
348
|
+
if (degree === 0) {
|
|
349
|
+
queue.push(id);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
// Process queue
|
|
353
|
+
while (queue.length > 0) {
|
|
354
|
+
const current = queue.shift();
|
|
355
|
+
result.push(current);
|
|
356
|
+
// Decrease in-degree for nodes that depend on current
|
|
357
|
+
const dependents = this.reverseDeps.get(current) ?? new Set();
|
|
358
|
+
for (const dependent of dependents) {
|
|
359
|
+
if (!this.nodes.has(dependent))
|
|
360
|
+
continue;
|
|
361
|
+
const newDegree = (inDegree.get(dependent) ?? 0) - 1;
|
|
362
|
+
inDegree.set(dependent, newDegree);
|
|
363
|
+
if (newDegree === 0) {
|
|
364
|
+
queue.push(dependent);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
// Check for cycles
|
|
369
|
+
const isAcyclic = result.length === this.nodes.size;
|
|
370
|
+
const cycles = [];
|
|
371
|
+
if (!isAcyclic) {
|
|
372
|
+
// Find cycles using DFS
|
|
373
|
+
cycles.push(...this.detectCycles());
|
|
374
|
+
}
|
|
375
|
+
return { order: result, isAcyclic, cycles };
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Validate that versioned resources do not depend on draft resources.
|
|
379
|
+
*/
|
|
380
|
+
validateDraftDependencies() {
|
|
381
|
+
const errors = [];
|
|
382
|
+
for (const [id, doc] of this.nodes) {
|
|
383
|
+
const { metadata: { key: srcKey, version: srcVersion }, kind: srcKind, } = doc.content;
|
|
384
|
+
const isSourceDraft = srcVersion === base_1.DRAFT_VERSION;
|
|
385
|
+
// Only active resources should be validated
|
|
386
|
+
if (isSourceDraft)
|
|
387
|
+
continue;
|
|
388
|
+
const deps = this.edges.get(id) ?? new Set();
|
|
389
|
+
for (const depId of deps) {
|
|
390
|
+
const depDoc = this.nodes.get(depId);
|
|
391
|
+
if (!depDoc)
|
|
392
|
+
continue;
|
|
393
|
+
const { metadata: { key: depKey, version: depVersion }, kind: depKind, } = depDoc.content;
|
|
394
|
+
const isDepDraft = depVersion === base_1.DRAFT_VERSION;
|
|
395
|
+
if (isDepDraft) {
|
|
396
|
+
errors.push({
|
|
397
|
+
sourceId: id,
|
|
398
|
+
dependencyId: depId,
|
|
399
|
+
message: `Versioned resource ${srcKind}:${srcKey}@${srcVersion} ` +
|
|
400
|
+
`cannot depend on draft resource ${depKind}:${depKey}@${depVersion}`,
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
return errors;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Detect all cycles in the graph using DFS
|
|
409
|
+
* Returns arrays of nodes forming each cycle
|
|
410
|
+
*/
|
|
411
|
+
detectCycles() {
|
|
412
|
+
const cycles = [];
|
|
413
|
+
const visited = new Set();
|
|
414
|
+
const recStack = new Set();
|
|
415
|
+
const path = [];
|
|
416
|
+
const dfs = (node) => {
|
|
417
|
+
visited.add(node);
|
|
418
|
+
recStack.add(node);
|
|
419
|
+
path.push(node);
|
|
420
|
+
const deps = this.edges.get(node) ?? new Set();
|
|
421
|
+
for (const dep of deps) {
|
|
422
|
+
if (!this.nodes.has(dep))
|
|
423
|
+
continue;
|
|
424
|
+
if (!visited.has(dep)) {
|
|
425
|
+
dfs(dep);
|
|
426
|
+
}
|
|
427
|
+
else if (recStack.has(dep)) {
|
|
428
|
+
// Found a cycle
|
|
429
|
+
const cycleStart = path.indexOf(dep);
|
|
430
|
+
const cycle = [...path.slice(cycleStart), dep];
|
|
431
|
+
cycles.push(cycle);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
path.pop();
|
|
435
|
+
recStack.delete(node);
|
|
436
|
+
};
|
|
437
|
+
for (const id of this.nodes.keys()) {
|
|
438
|
+
if (!visited.has(id)) {
|
|
439
|
+
dfs(id);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
return cycles;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
exports.DependencyGraph = DependencyGraph;
|
|
446
|
+
//# sourceMappingURL=dependency-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-graph.js","sourceRoot":"","sources":["../../../../../../../../../libs/signstack/base/src/lib/validation/dependency-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { SchemaKind } from './schema-validation.types';
|
|
2
|
+
/**
|
|
3
|
+
* Reference pattern: key@version (e.g., "employee@1.0.0")
|
|
4
|
+
*/
|
|
5
|
+
export declare const REFERENCE_PATTERN: RegExp;
|
|
6
|
+
/**
|
|
7
|
+
* Unique identifier for a resource in the dependency graph
|
|
8
|
+
* Format: "Kind:key@version" (e.g., "Blueprint:employee_onboarding@1.0.0")
|
|
9
|
+
*/
|
|
10
|
+
export type ResourceId = `${SchemaKind}:${string}@${string}`;
|
|
11
|
+
/**
|
|
12
|
+
* Parsed reference from a YAML document
|
|
13
|
+
*/
|
|
14
|
+
export interface ParsedReference {
|
|
15
|
+
/** The raw reference string (e.g., "employee@1.0.0") */
|
|
16
|
+
raw: string;
|
|
17
|
+
/** The target resource kind (inferred from context) */
|
|
18
|
+
targetKind: SchemaKind;
|
|
19
|
+
/** The key part of the reference */
|
|
20
|
+
key: string;
|
|
21
|
+
/** The version part of the reference */
|
|
22
|
+
version: string;
|
|
23
|
+
/** Path within the document where this reference was found */
|
|
24
|
+
sourcePath: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A parsed YAML document with metadata
|
|
28
|
+
*/
|
|
29
|
+
export interface ParsedDocument {
|
|
30
|
+
/** Unique resource identifier */
|
|
31
|
+
id: ResourceId;
|
|
32
|
+
/** The schema kind */
|
|
33
|
+
kind: SchemaKind;
|
|
34
|
+
/** Resource key from metadata */
|
|
35
|
+
key: string;
|
|
36
|
+
/** Resource version from metadata */
|
|
37
|
+
version: string;
|
|
38
|
+
/** File path where this document was found */
|
|
39
|
+
filePath: string;
|
|
40
|
+
/** Document index within the file (for multi-doc YAML) */
|
|
41
|
+
documentIndex?: number;
|
|
42
|
+
/** The raw parsed content */
|
|
43
|
+
content: Record<string, unknown>;
|
|
44
|
+
/** References extracted from this document */
|
|
45
|
+
references: ParsedReference[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Result of topological sort
|
|
49
|
+
*/
|
|
50
|
+
export interface TopologicalSortResult {
|
|
51
|
+
/** Sorted resource IDs (leaf nodes first) */
|
|
52
|
+
order: ResourceId[];
|
|
53
|
+
/** True if graph has no cycles */
|
|
54
|
+
isAcyclic: boolean;
|
|
55
|
+
/** Cycle chains if detected (e.g., [[A, B, C, A]]) */
|
|
56
|
+
cycles: ResourceId[][];
|
|
57
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.REFERENCE_PATTERN = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Reference pattern: key@version (e.g., "employee@1.0.0")
|
|
6
|
+
*/
|
|
7
|
+
exports.REFERENCE_PATTERN = /^[a-z][a-z0-9]*(_[a-z0-9]+)*@((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)|draft)$/;
|
|
8
|
+
//# sourceMappingURL=graph.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.types.js","sourceRoot":"","sources":["../../../../../../../../../libs/signstack/base/src/lib/validation/graph.types.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACU,QAAA,iBAAiB,GAC5B,gFAAgF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './schema-validation.types';
|
|
2
|
+
export { SchemaValidator } from './schema-validator';
|
|
3
|
+
export * from './graph.types';
|
|
4
|
+
export { DependencyGraph, extractReferences } from './dependency-graph';
|
|
5
|
+
export { validateDependencies, type DependencyValidationError, type DependencyValidationResult, } from './validate-dependencies';
|
|
6
|
+
export { validateTemplateInputs, type TemplateInputValidationError, type TemplateInputValidationResult, } from './validate-template-inputs';
|
|
7
|
+
export { parseYamlToDocument, parseYamlsToDocuments } from './yaml-document-utils';
|
|
8
|
+
export { validateResourceTree, type ResourceTreeValidationError, type ResourceTreeValidationResult, type ResourceInput, } from './validate-resource-tree';
|
|
9
|
+
export { getResourceSchemaValidator } from './resource-schemas';
|