@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,63 @@
|
|
|
1
|
+
import type { RenderBlueprintResp, TemplateFieldInfo } from '@signstack/base';
|
|
2
|
+
import type { ExtendedValidationSummary as ValidationSummary } from './resource-validator.js';
|
|
3
|
+
import type { EntityDataResult } from './entity-data-resolver.js';
|
|
4
|
+
export interface BlueprintMeta {
|
|
5
|
+
ref?: string;
|
|
6
|
+
key?: string;
|
|
7
|
+
version?: string;
|
|
8
|
+
name?: string;
|
|
9
|
+
source: 'local' | 'signstack';
|
|
10
|
+
}
|
|
11
|
+
export interface TemplateMeta {
|
|
12
|
+
ref?: string;
|
|
13
|
+
key?: string;
|
|
14
|
+
version?: string;
|
|
15
|
+
name?: string;
|
|
16
|
+
type?: 'pdf' | 'html';
|
|
17
|
+
source: 'local' | 'signstack';
|
|
18
|
+
}
|
|
19
|
+
export interface TemplatePreviewResult {
|
|
20
|
+
signedUrl: string;
|
|
21
|
+
detectedFields?: TemplateFieldInfo[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Handles formatting and printing of preview command output
|
|
25
|
+
*/
|
|
26
|
+
export declare class PreviewOutputFormatter {
|
|
27
|
+
private readonly log;
|
|
28
|
+
constructor(log: (message: string) => void);
|
|
29
|
+
/**
|
|
30
|
+
* Print validation errors
|
|
31
|
+
*/
|
|
32
|
+
printValidationErrors(summary: ValidationSummary, jsonOutput: boolean): void;
|
|
33
|
+
/**
|
|
34
|
+
* Print preview results (works for both local and SignStack flows)
|
|
35
|
+
*/
|
|
36
|
+
printPreviewResults(result: RenderBlueprintResp, jsonOutput: boolean, entityData: EntityDataResult, blueprint: BlueprintMeta): void;
|
|
37
|
+
/**
|
|
38
|
+
* Print template preview results
|
|
39
|
+
*/
|
|
40
|
+
printTemplatePreviewResults(result: TemplatePreviewResult, jsonOutput: boolean, entityData: EntityDataResult, template: TemplateMeta): void;
|
|
41
|
+
/**
|
|
42
|
+
* Print scenarios list
|
|
43
|
+
*/
|
|
44
|
+
printScenariosList(scenarios: {
|
|
45
|
+
key: string;
|
|
46
|
+
name: string;
|
|
47
|
+
}[], jsonOutput: boolean): void;
|
|
48
|
+
/**
|
|
49
|
+
* Print API warnings
|
|
50
|
+
*/
|
|
51
|
+
printWarnings(warnings: {
|
|
52
|
+
resourceId: string;
|
|
53
|
+
message: string;
|
|
54
|
+
}[]): void;
|
|
55
|
+
/**
|
|
56
|
+
* Print validation success message
|
|
57
|
+
*/
|
|
58
|
+
printValidationSuccess(count: number): void;
|
|
59
|
+
/**
|
|
60
|
+
* Print file check results
|
|
61
|
+
*/
|
|
62
|
+
printFileCheckResults(reusedCount: number, uploadCount: number): void;
|
|
63
|
+
}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import pc from 'picocolors';
|
|
2
|
+
import Table from 'cli-table3';
|
|
3
|
+
/**
|
|
4
|
+
* Handles formatting and printing of preview command output
|
|
5
|
+
*/
|
|
6
|
+
export class PreviewOutputFormatter {
|
|
7
|
+
log;
|
|
8
|
+
constructor(log) {
|
|
9
|
+
this.log = log;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Print validation errors
|
|
13
|
+
*/
|
|
14
|
+
printValidationErrors(summary, jsonOutput) {
|
|
15
|
+
if (jsonOutput) {
|
|
16
|
+
this.log(JSON.stringify({
|
|
17
|
+
error: 'Validation failed',
|
|
18
|
+
failed: summary.failed,
|
|
19
|
+
hasCycles: summary.hasCycles,
|
|
20
|
+
errors: summary.results.filter((r) => !r.valid),
|
|
21
|
+
}, null, 2));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
this.log('');
|
|
25
|
+
this.log(pc.red('Validation Errors:'));
|
|
26
|
+
for (const result of summary.results.filter((r) => !r.valid)) {
|
|
27
|
+
const fileDisplay = result.resourceKey
|
|
28
|
+
? `${result.filePath} [${result.resourceKey}@${result.resourceVersion}]`
|
|
29
|
+
: result.filePath;
|
|
30
|
+
this.log(`${pc.red('✗')} ${fileDisplay}`);
|
|
31
|
+
for (const error of result.errors) {
|
|
32
|
+
this.log(` ${pc.red('•')} ${error.message}`);
|
|
33
|
+
if (error.path !== '/') {
|
|
34
|
+
this.log(pc.dim(` Path: ${error.path}`));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (summary.hasCycles && summary.cycles?.length) {
|
|
39
|
+
this.log('');
|
|
40
|
+
this.log(pc.red('Circular dependencies detected:'));
|
|
41
|
+
for (const cycle of summary.cycles) {
|
|
42
|
+
const cycleStr = cycle.join(' → ');
|
|
43
|
+
this.log(pc.red(` • ${cycleStr}`));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
this.log('');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Print preview results (works for both local and SignStack flows)
|
|
50
|
+
*/
|
|
51
|
+
printPreviewResults(result, jsonOutput, entityData, blueprint) {
|
|
52
|
+
if (jsonOutput) {
|
|
53
|
+
const output = {
|
|
54
|
+
blueprint: {
|
|
55
|
+
...(blueprint.ref ? { ref: blueprint.ref } : {}),
|
|
56
|
+
...(blueprint.key ? { key: blueprint.key } : {}),
|
|
57
|
+
...(blueprint.name ? { name: blueprint.name } : {}),
|
|
58
|
+
...(blueprint.version ? { version: blueprint.version } : {}),
|
|
59
|
+
source: blueprint.source,
|
|
60
|
+
},
|
|
61
|
+
entityData: {
|
|
62
|
+
source: entityData.isAutoGenerated
|
|
63
|
+
? 'generated'
|
|
64
|
+
: entityData.entities.length > 0
|
|
65
|
+
? 'scenario'
|
|
66
|
+
: 'none',
|
|
67
|
+
},
|
|
68
|
+
warnings: result.warnings,
|
|
69
|
+
};
|
|
70
|
+
output['envelopes'] = result.envelopes;
|
|
71
|
+
this.log(JSON.stringify(output, null, 2));
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
this.log('');
|
|
75
|
+
this.log(pc.bold(pc.green('Preview Generated Successfully')));
|
|
76
|
+
if (blueprint.source === 'local') {
|
|
77
|
+
this.log(pc.dim('(from local files)'));
|
|
78
|
+
}
|
|
79
|
+
if (entityData.isAutoGenerated) {
|
|
80
|
+
this.log(pc.dim('(with generated sample data)'));
|
|
81
|
+
}
|
|
82
|
+
this.log('');
|
|
83
|
+
for (const envelope of result.envelopes) {
|
|
84
|
+
if (result.envelopes.length > 1) {
|
|
85
|
+
this.log(pc.bold(`Envelope: ${envelope.envelopeKey}`));
|
|
86
|
+
}
|
|
87
|
+
for (const doc of envelope.documents) {
|
|
88
|
+
this.log(pc.cyan(`📄 ${doc.name}`));
|
|
89
|
+
this.log(pc.dim(' Signed URL:'));
|
|
90
|
+
this.log(` ${doc.signedUrl}`);
|
|
91
|
+
this.log('');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
this.log(pc.yellow('⚠ Note: Signed URLs expire in 1 hour.'));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Print template preview results
|
|
98
|
+
*/
|
|
99
|
+
printTemplatePreviewResults(result, jsonOutput, entityData, template) {
|
|
100
|
+
if (jsonOutput) {
|
|
101
|
+
this.log(JSON.stringify({
|
|
102
|
+
template: {
|
|
103
|
+
...(template.ref ? { ref: template.ref } : {}),
|
|
104
|
+
...(template.key ? { key: template.key } : {}),
|
|
105
|
+
...(template.name ? { name: template.name } : {}),
|
|
106
|
+
...(template.version ? { version: template.version } : {}),
|
|
107
|
+
...(template.type ? { type: template.type } : {}),
|
|
108
|
+
source: template.source,
|
|
109
|
+
},
|
|
110
|
+
entityData: {
|
|
111
|
+
source: entityData.isAutoGenerated
|
|
112
|
+
? 'generated'
|
|
113
|
+
: entityData.entities.length > 0
|
|
114
|
+
? 'scenario'
|
|
115
|
+
: 'none',
|
|
116
|
+
},
|
|
117
|
+
signedUrl: result.signedUrl,
|
|
118
|
+
detectedFields: result.detectedFields,
|
|
119
|
+
}, null, 2));
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
this.log('');
|
|
123
|
+
this.log(pc.bold(pc.green('Template Preview Generated Successfully')));
|
|
124
|
+
if (template.name) {
|
|
125
|
+
this.log(pc.dim(`Template: ${template.name}${template.version ? ` (v${template.version})` : ''}${template.type ? ` [${template.type.toUpperCase()}]` : ''}`));
|
|
126
|
+
}
|
|
127
|
+
if (template.source === 'local') {
|
|
128
|
+
this.log(pc.dim('(from local files)'));
|
|
129
|
+
}
|
|
130
|
+
if (entityData.isAutoGenerated) {
|
|
131
|
+
this.log(pc.dim('(with generated sample data)'));
|
|
132
|
+
}
|
|
133
|
+
this.log('');
|
|
134
|
+
const name = template.name || template.key || 'Rendered Template';
|
|
135
|
+
this.log(pc.cyan(`📄 ${name}`));
|
|
136
|
+
this.log(pc.dim(' Signed URL:'));
|
|
137
|
+
this.log(` ${result.signedUrl}`);
|
|
138
|
+
this.log('');
|
|
139
|
+
if (result.detectedFields?.length) {
|
|
140
|
+
this.log(pc.dim(`Detected ${result.detectedFields.length} field(s) in the rendered document.`));
|
|
141
|
+
this.log('');
|
|
142
|
+
}
|
|
143
|
+
this.log(pc.yellow('⚠ Note: Signed URLs expire in 1 hour.'));
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Print scenarios list
|
|
147
|
+
*/
|
|
148
|
+
printScenariosList(scenarios, jsonOutput) {
|
|
149
|
+
if (jsonOutput) {
|
|
150
|
+
this.log(JSON.stringify(scenarios, null, 2));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
if (scenarios.length === 0) {
|
|
154
|
+
this.log(pc.yellow('No scenarios found.'));
|
|
155
|
+
this.log(pc.dim('Create a scenario in the SignStack web app to use with preview.'));
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
this.log('');
|
|
159
|
+
this.log(pc.bold('Available Scenarios'));
|
|
160
|
+
this.log('');
|
|
161
|
+
const table = new Table({
|
|
162
|
+
head: [pc.cyan('Key'), pc.cyan('Display Name')],
|
|
163
|
+
colWidths: [40, 40],
|
|
164
|
+
});
|
|
165
|
+
for (const scenario of scenarios) {
|
|
166
|
+
table.push([scenario.key, scenario.name]);
|
|
167
|
+
}
|
|
168
|
+
this.log(table.toString());
|
|
169
|
+
this.log('');
|
|
170
|
+
this.log(pc.dim('Use: signstack preview --blueprint <key> --scenario <scenario-key>'));
|
|
171
|
+
this.log(pc.dim('Note: Scenario is optional. Without it, sample data is generated dynamically using AI.'));
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Print API warnings
|
|
175
|
+
*/
|
|
176
|
+
printWarnings(warnings) {
|
|
177
|
+
if (!warnings?.length)
|
|
178
|
+
return;
|
|
179
|
+
this.log('');
|
|
180
|
+
this.log(pc.yellow('Warnings:'));
|
|
181
|
+
for (const warning of warnings) {
|
|
182
|
+
this.log(pc.yellow(` ⚠ ${warning.resourceId}: ${warning.message}`));
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Print validation success message
|
|
187
|
+
*/
|
|
188
|
+
printValidationSuccess(count) {
|
|
189
|
+
this.log(pc.green(`✓ Validated ${count} resource(s)`));
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Print file check results
|
|
193
|
+
*/
|
|
194
|
+
printFileCheckResults(reusedCount, uploadCount) {
|
|
195
|
+
this.log(pc.dim(`File check complete: ${reusedCount} reused, ${uploadCount} to upload`));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=preview-output-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview-output-formatter.js","sourceRoot":"","sources":["../../../../../src/lib/preview-output-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { HttpClient } from './resource-puller.js';
|
|
2
|
+
/**
|
|
3
|
+
* Unauthenticated HTTP client for public library endpoints. Supports the
|
|
4
|
+
* `@OptionalAuth` routes on the backend (anonymous callers see `scope: public`
|
|
5
|
+
* listings only).
|
|
6
|
+
*/
|
|
7
|
+
export declare class PublicApiClient implements HttpClient {
|
|
8
|
+
private readonly apiUrl;
|
|
9
|
+
constructor(apiUrl?: string);
|
|
10
|
+
get<T>(path: string): Promise<T>;
|
|
11
|
+
post<T>(path: string, body: unknown): Promise<T>;
|
|
12
|
+
private _request;
|
|
13
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { getApiUrl } from './config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Unauthenticated HTTP client for public library endpoints. Supports the
|
|
4
|
+
* `@OptionalAuth` routes on the backend (anonymous callers see `scope: public`
|
|
5
|
+
* listings only).
|
|
6
|
+
*/
|
|
7
|
+
export class PublicApiClient {
|
|
8
|
+
apiUrl;
|
|
9
|
+
constructor(apiUrl) {
|
|
10
|
+
this.apiUrl = apiUrl ?? getApiUrl();
|
|
11
|
+
}
|
|
12
|
+
async get(path) {
|
|
13
|
+
return this._request('GET', path);
|
|
14
|
+
}
|
|
15
|
+
async post(path, body) {
|
|
16
|
+
return this._request('POST', path, body);
|
|
17
|
+
}
|
|
18
|
+
async _request(method, path, body) {
|
|
19
|
+
const url = `${this.apiUrl}${path}`;
|
|
20
|
+
const response = await fetch(url, {
|
|
21
|
+
method,
|
|
22
|
+
headers: { 'Content-Type': 'application/json' },
|
|
23
|
+
body: body === undefined ? undefined : JSON.stringify(body),
|
|
24
|
+
});
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
let message = response.statusText || 'Request failed';
|
|
27
|
+
try {
|
|
28
|
+
const parsed = await response.json();
|
|
29
|
+
message = parsed.errorInfo?.message || message;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// ignore parse errors
|
|
33
|
+
}
|
|
34
|
+
throw new Error(`${response.status}: ${message}`);
|
|
35
|
+
}
|
|
36
|
+
return response.json();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=public-api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api-client.js","sourceRoot":"","sources":["../../../../../src/lib/public-api-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;GAIG;AACH,MAAM,OAAO,eAAe;IACT,MAAM,CAAS;IAEhC,YAAY,MAAe;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,IAAY;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAI,KAAK,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,IAAa;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAI,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,MAAsB,EACtB,IAAY,EACZ,IAAc;QAEd,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM;YACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC5D,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,IAAI,OAAO,GAAG,QAAQ,CAAC,UAAU,IAAI,gBAAgB,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACrC,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,OAAO,CAAC;YACjD,CAAC;YAAC,MAAM,CAAC;gBACP,sBAAsB;YACxB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { SchemaKind } from '../types/schema.types.js';
|
|
2
|
+
/** Minimal HTTP client interface. */
|
|
3
|
+
export interface HttpClient {
|
|
4
|
+
get<T>(path: string): Promise<T>;
|
|
5
|
+
}
|
|
6
|
+
/** Abstracts URL building for different pull sources. */
|
|
7
|
+
export interface PullSource {
|
|
8
|
+
buildDependencyTreeUrl(kind: string, key: string, version: string): string;
|
|
9
|
+
buildResourceUrl(kind: string, key: string, version: string): string;
|
|
10
|
+
fetchFileDownloadUrl(client: HttpClient, fileId: string): Promise<string>;
|
|
11
|
+
}
|
|
12
|
+
/** Org-scoped pull source — uses authenticated org/namespace endpoints. */
|
|
13
|
+
export declare class OrgPullSource implements PullSource {
|
|
14
|
+
readonly orgId: string;
|
|
15
|
+
readonly nsKey: string;
|
|
16
|
+
constructor(orgId: string, nsKey: string);
|
|
17
|
+
buildDependencyTreeUrl(kind: string, key: string, version: string): string;
|
|
18
|
+
buildResourceUrl(kind: string, key: string, version: string): string;
|
|
19
|
+
fetchFileDownloadUrl(client: HttpClient, fileId: string): Promise<string>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Public library pull source — scoped by the listing that's being pulled. All
|
|
23
|
+
* URLs are keyed by the listing (`listingKey@listingVersion`), not the
|
|
24
|
+
* underlying resource. Sub-resources are fetched through the listing so the
|
|
25
|
+
* backend can authorize access once at the listing level. No auth required.
|
|
26
|
+
*/
|
|
27
|
+
export declare class LibraryPullSource implements PullSource {
|
|
28
|
+
readonly listingKey: string;
|
|
29
|
+
readonly listingVersion: string;
|
|
30
|
+
constructor(listingKey: string, listingVersion: string);
|
|
31
|
+
private get _prefix();
|
|
32
|
+
buildDependencyTreeUrl(): string;
|
|
33
|
+
buildResourceUrl(kind: string, key: string, version: string): string;
|
|
34
|
+
fetchFileDownloadUrl(client: HttpClient, fileId: string): Promise<string>;
|
|
35
|
+
}
|
|
36
|
+
/** Result of pulling a single resource */
|
|
37
|
+
export interface PullResourceResult {
|
|
38
|
+
resourceId: string;
|
|
39
|
+
kind: SchemaKind;
|
|
40
|
+
key: string;
|
|
41
|
+
version: string;
|
|
42
|
+
success: boolean;
|
|
43
|
+
yamlPath?: string;
|
|
44
|
+
additionalFiles?: string[];
|
|
45
|
+
error?: string;
|
|
46
|
+
}
|
|
47
|
+
/** Overall pull summary */
|
|
48
|
+
export interface PullSummary {
|
|
49
|
+
outputDir: string;
|
|
50
|
+
total: number;
|
|
51
|
+
succeeded: number;
|
|
52
|
+
failed: number;
|
|
53
|
+
results: PullResourceResult[];
|
|
54
|
+
byKind: Record<string, number>;
|
|
55
|
+
}
|
|
56
|
+
/** Parameters for the pull operation */
|
|
57
|
+
export interface PullParams {
|
|
58
|
+
kind: string;
|
|
59
|
+
key: string;
|
|
60
|
+
version: string;
|
|
61
|
+
outputDir: string;
|
|
62
|
+
verbose: boolean;
|
|
63
|
+
}
|
|
64
|
+
/** Map CLI SchemaKind to backend ResourceKind */
|
|
65
|
+
export declare const SCHEMA_KIND_TO_BACKEND: Record<SchemaKind, string>;
|
|
66
|
+
/** Map backend ResourceKind to API endpoint path segment */
|
|
67
|
+
export declare const KIND_TO_ENDPOINT: Record<string, string>;
|
|
68
|
+
/**
|
|
69
|
+
* ResourcePuller — Fetches SignStack resources from the API and converts them to YAML files.
|
|
70
|
+
*
|
|
71
|
+
* This is the inverse of ResourcePusher. It:
|
|
72
|
+
* 1. Fetches the dependency tree for a resource
|
|
73
|
+
* 2. Downloads each dependent resource
|
|
74
|
+
* 3. Converts API responses to YAML format
|
|
75
|
+
* 4. Downloads binary files for assets with fileIds
|
|
76
|
+
* 5. Writes everything to a local folder structure
|
|
77
|
+
*/
|
|
78
|
+
export declare class ResourcePuller {
|
|
79
|
+
private readonly client;
|
|
80
|
+
private readonly source;
|
|
81
|
+
private readonly log;
|
|
82
|
+
constructor(client: HttpClient, source: PullSource, log: (msg: string) => void);
|
|
83
|
+
/**
|
|
84
|
+
* Pull a resource and all its dependencies from the API.
|
|
85
|
+
*/
|
|
86
|
+
pull(params: PullParams): Promise<PullSummary>;
|
|
87
|
+
/**
|
|
88
|
+
* Fetch the transitive dependency tree and collect all unique resource IDs.
|
|
89
|
+
* Also includes the root resource itself.
|
|
90
|
+
*/
|
|
91
|
+
private fetchAllDependencyIds;
|
|
92
|
+
/**
|
|
93
|
+
* Recursively flatten a dependency tree into a set of resource IDs.
|
|
94
|
+
* Handles both org format ({ resourceId }) and library format ({ kind, key, version }).
|
|
95
|
+
*/
|
|
96
|
+
private flattenTree;
|
|
97
|
+
/**
|
|
98
|
+
* Pull a single resource: fetch from API, convert to YAML, write files.
|
|
99
|
+
*/
|
|
100
|
+
private pullSingleResource;
|
|
101
|
+
/**
|
|
102
|
+
* Convert an API response to a YAML document object.
|
|
103
|
+
* Also writes any additional files (JSON definitions, HTML/CSS content, binary files).
|
|
104
|
+
*/
|
|
105
|
+
private convertResource;
|
|
106
|
+
private convertSchema;
|
|
107
|
+
private convertAsset;
|
|
108
|
+
/**
|
|
109
|
+
* Convert API htmlConfig refs back to YAML format.
|
|
110
|
+
*/
|
|
111
|
+
private convertHtmlConfig;
|
|
112
|
+
/**
|
|
113
|
+
* Convert a template and, when contentKey was absent from the API response
|
|
114
|
+
* (supplement templates like exhibit_a_nwmls), also write a stub asset YAML
|
|
115
|
+
* so that --resolve local preview can find the content dependency.
|
|
116
|
+
*/
|
|
117
|
+
private convertTemplateWithAssetStub;
|
|
118
|
+
private convertTemplate;
|
|
119
|
+
private convertBlueprint;
|
|
120
|
+
private convertJsonataFunction;
|
|
121
|
+
/**
|
|
122
|
+
* Get a signed download URL for a file.
|
|
123
|
+
*/
|
|
124
|
+
private getSignedUrl;
|
|
125
|
+
/**
|
|
126
|
+
* Determine file extension by making a HEAD request to the signed URL.
|
|
127
|
+
* Falls back to the default extension for the asset type if the Content-Type
|
|
128
|
+
* is unrecognized or the request fails.
|
|
129
|
+
*/
|
|
130
|
+
private getFileExtension;
|
|
131
|
+
}
|