@skillsmith/core 0.4.1 → 0.4.3
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/dist/.tsbuildinfo +1 -1
- package/dist/src/analysis/adapters/java-parsers.d.ts +64 -0
- package/dist/src/analysis/adapters/java-parsers.d.ts.map +1 -0
- package/dist/src/analysis/adapters/java-parsers.js +114 -0
- package/dist/src/analysis/adapters/java-parsers.js.map +1 -0
- package/dist/src/analysis/adapters/java.d.ts +1 -51
- package/dist/src/analysis/adapters/java.d.ts.map +1 -1
- package/dist/src/analysis/adapters/java.js +94 -205
- package/dist/src/analysis/adapters/java.js.map +1 -1
- package/dist/src/analysis/adapters/python-frameworks.d.ts +21 -0
- package/dist/src/analysis/adapters/python-frameworks.d.ts.map +1 -0
- package/dist/src/analysis/adapters/python-frameworks.js +86 -0
- package/dist/src/analysis/adapters/python-frameworks.js.map +1 -0
- package/dist/src/analysis/adapters/python.d.ts +0 -50
- package/dist/src/analysis/adapters/python.d.ts.map +1 -1
- package/dist/src/analysis/adapters/python.js +5 -120
- package/dist/src/analysis/adapters/python.js.map +1 -1
- package/dist/src/analysis/adapters/rust-parsers.d.ts +33 -0
- package/dist/src/analysis/adapters/rust-parsers.d.ts.map +1 -0
- package/dist/src/analysis/adapters/rust-parsers.js +94 -0
- package/dist/src/analysis/adapters/rust-parsers.js.map +1 -0
- package/dist/src/analysis/adapters/rust.d.ts +1 -43
- package/dist/src/analysis/adapters/rust.d.ts.map +1 -1
- package/dist/src/analysis/adapters/rust.js +74 -173
- package/dist/src/analysis/adapters/rust.js.map +1 -1
- package/dist/src/analysis/worker-pool.d.ts +25 -52
- package/dist/src/analysis/worker-pool.d.ts.map +1 -1
- package/dist/src/analysis/worker-pool.js +29 -181
- package/dist/src/analysis/worker-pool.js.map +1 -1
- package/dist/src/analysis/worker-types.d.ts +64 -0
- package/dist/src/analysis/worker-types.d.ts.map +1 -0
- package/dist/src/analysis/worker-types.js +11 -0
- package/dist/src/analysis/worker-types.js.map +1 -0
- package/dist/src/analysis/worker-utils.d.ts +49 -0
- package/dist/src/analysis/worker-utils.d.ts.map +1 -0
- package/dist/src/analysis/worker-utils.js +206 -0
- package/dist/src/analysis/worker-utils.js.map +1 -0
- package/dist/src/analytics/AnalyticsRepository.d.ts +1 -5
- package/dist/src/analytics/AnalyticsRepository.d.ts.map +1 -1
- package/dist/src/analytics/AnalyticsRepository.helpers.d.ts +28 -0
- package/dist/src/analytics/AnalyticsRepository.helpers.d.ts.map +1 -0
- package/dist/src/analytics/AnalyticsRepository.helpers.js +90 -0
- package/dist/src/analytics/AnalyticsRepository.helpers.js.map +1 -0
- package/dist/src/analytics/AnalyticsRepository.js +16 -129
- package/dist/src/analytics/AnalyticsRepository.js.map +1 -1
- package/dist/src/analytics/AnalyticsRepository.types.d.ts +82 -0
- package/dist/src/analytics/AnalyticsRepository.types.d.ts.map +1 -0
- package/dist/src/analytics/AnalyticsRepository.types.js +8 -0
- package/dist/src/analytics/AnalyticsRepository.types.js.map +1 -0
- package/dist/src/api/client.d.ts +5 -121
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +24 -136
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/schemas.d.ts +122 -0
- package/dist/src/api/schemas.d.ts.map +1 -0
- package/dist/src/api/schemas.js +71 -0
- package/dist/src/api/schemas.js.map +1 -0
- package/dist/src/api/utils.d.ts +46 -0
- package/dist/src/api/utils.d.ts.map +1 -0
- package/dist/src/api/utils.js +96 -0
- package/dist/src/api/utils.js.map +1 -0
- package/dist/src/billing/GDPRComplianceService.d.ts +2 -97
- package/dist/src/billing/GDPRComplianceService.d.ts.map +1 -1
- package/dist/src/billing/GDPRComplianceService.js.map +1 -1
- package/dist/src/billing/StripeClient.d.ts +3 -62
- package/dist/src/billing/StripeClient.d.ts.map +1 -1
- package/dist/src/billing/StripeClient.js +10 -68
- package/dist/src/billing/StripeClient.js.map +1 -1
- package/dist/src/billing/StripeReconciliationJob.d.ts +2 -47
- package/dist/src/billing/StripeReconciliationJob.d.ts.map +1 -1
- package/dist/src/billing/StripeReconciliationJob.js +1 -41
- package/dist/src/billing/StripeReconciliationJob.js.map +1 -1
- package/dist/src/billing/StripeWebhookHandler.d.ts +3 -59
- package/dist/src/billing/StripeWebhookHandler.d.ts.map +1 -1
- package/dist/src/billing/StripeWebhookHandler.js +14 -304
- package/dist/src/billing/StripeWebhookHandler.js.map +1 -1
- package/dist/src/billing/gdpr-types.d.ts +103 -0
- package/dist/src/billing/gdpr-types.d.ts.map +1 -0
- package/dist/src/billing/gdpr-types.js +7 -0
- package/dist/src/billing/gdpr-types.js.map +1 -0
- package/dist/src/billing/reconciliation-helpers.d.ts +16 -0
- package/dist/src/billing/reconciliation-helpers.d.ts.map +1 -0
- package/dist/src/billing/reconciliation-helpers.js +53 -0
- package/dist/src/billing/reconciliation-helpers.js.map +1 -0
- package/dist/src/billing/reconciliation-types.d.ts +71 -0
- package/dist/src/billing/reconciliation-types.d.ts.map +1 -0
- package/dist/src/billing/reconciliation-types.js +7 -0
- package/dist/src/billing/reconciliation-types.js.map +1 -0
- package/dist/src/billing/stripe-client-types.d.ts +45 -0
- package/dist/src/billing/stripe-client-types.d.ts.map +1 -0
- package/dist/src/billing/stripe-client-types.js +7 -0
- package/dist/src/billing/stripe-client-types.js.map +1 -0
- package/dist/src/billing/stripe-helpers.d.ts +17 -0
- package/dist/src/billing/stripe-helpers.d.ts.map +1 -0
- package/dist/src/billing/stripe-helpers.js +50 -0
- package/dist/src/billing/stripe-helpers.js.map +1 -0
- package/dist/src/billing/webhook-handlers.d.ts +56 -0
- package/dist/src/billing/webhook-handlers.d.ts.map +1 -0
- package/dist/src/billing/webhook-handlers.js +303 -0
- package/dist/src/billing/webhook-handlers.js.map +1 -0
- package/dist/src/billing/webhook-types.d.ts +42 -0
- package/dist/src/billing/webhook-types.d.ts.map +1 -0
- package/dist/src/billing/webhook-types.js +7 -0
- package/dist/src/billing/webhook-types.js.map +1 -0
- package/dist/src/config/index.d.ts +118 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +172 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/db/migration-types.d.ts +101 -0
- package/dist/src/db/migration-types.d.ts.map +1 -0
- package/dist/src/db/migration-types.js +6 -0
- package/dist/src/db/migration-types.js.map +1 -0
- package/dist/src/db/migration.d.ts +7 -104
- package/dist/src/db/migration.d.ts.map +1 -1
- package/dist/src/db/migration.js +15 -65
- package/dist/src/db/migration.js.map +1 -1
- package/dist/src/embeddings/embedding-types.d.ts +44 -0
- package/dist/src/embeddings/embedding-types.d.ts.map +1 -0
- package/dist/src/embeddings/embedding-types.js +6 -0
- package/dist/src/embeddings/embedding-types.js.map +1 -0
- package/dist/src/embeddings/embedding-utils.d.ts +42 -0
- package/dist/src/embeddings/embedding-utils.d.ts.map +1 -0
- package/dist/src/embeddings/embedding-utils.js +121 -0
- package/dist/src/embeddings/embedding-utils.js.map +1 -0
- package/dist/src/embeddings/index.d.ts +36 -112
- package/dist/src/embeddings/index.d.ts.map +1 -1
- package/dist/src/embeddings/index.js +37 -210
- package/dist/src/embeddings/index.js.map +1 -1
- package/dist/src/exports/repositories.d.ts +18 -0
- package/dist/src/exports/repositories.d.ts.map +1 -0
- package/dist/src/exports/repositories.js +30 -0
- package/dist/src/exports/repositories.js.map +1 -0
- package/dist/src/exports/services.d.ts +30 -0
- package/dist/src/exports/services.d.ts.map +1 -0
- package/dist/src/exports/services.js +70 -0
- package/dist/src/exports/services.js.map +1 -0
- package/dist/src/exports/types.d.ts +21 -0
- package/dist/src/exports/types.d.ts.map +1 -0
- package/dist/src/exports/types.js +12 -0
- package/dist/src/exports/types.js.map +1 -0
- package/dist/src/index.d.ts +11 -55
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +24 -59
- package/dist/src/index.js.map +1 -1
- package/dist/src/pipeline/DailyIndexPipeline.d.ts +4 -176
- package/dist/src/pipeline/DailyIndexPipeline.d.ts.map +1 -1
- package/dist/src/pipeline/DailyIndexPipeline.js +9 -83
- package/dist/src/pipeline/DailyIndexPipeline.js.map +1 -1
- package/dist/src/pipeline/pipeline-types.d.ts +132 -0
- package/dist/src/pipeline/pipeline-types.d.ts.map +1 -0
- package/dist/src/pipeline/pipeline-types.js +6 -0
- package/dist/src/pipeline/pipeline-types.js.map +1 -0
- package/dist/src/routing/expert-types.d.ts +109 -0
- package/dist/src/routing/expert-types.d.ts.map +1 -0
- package/dist/src/routing/expert-types.js +162 -0
- package/dist/src/routing/expert-types.js.map +1 -0
- package/dist/src/routing/request-types.d.ts +113 -0
- package/dist/src/routing/request-types.d.ts.map +1 -0
- package/dist/src/routing/request-types.js +9 -0
- package/dist/src/routing/request-types.js.map +1 -0
- package/dist/src/routing/types.d.ts +5 -207
- package/dist/src/routing/types.d.ts.map +1 -1
- package/dist/src/routing/types.js +3 -153
- package/dist/src/routing/types.js.map +1 -1
- package/dist/src/scripts/github-import/github-auth.d.ts +17 -0
- package/dist/src/scripts/github-import/github-auth.d.ts.map +1 -0
- package/dist/src/scripts/github-import/github-auth.js +201 -0
- package/dist/src/scripts/github-import/github-auth.js.map +1 -0
- package/dist/src/scripts/github-import/github-client.d.ts +5 -5
- package/dist/src/scripts/github-import/github-client.d.ts.map +1 -1
- package/dist/src/scripts/github-import/github-client.js +5 -203
- package/dist/src/scripts/github-import/github-client.js.map +1 -1
- package/dist/src/scripts/merge-skills.d.ts +5 -27
- package/dist/src/scripts/merge-skills.d.ts.map +1 -1
- package/dist/src/scripts/merge-skills.js +4 -144
- package/dist/src/scripts/merge-skills.js.map +1 -1
- package/dist/src/scripts/merge-types.d.ts +72 -0
- package/dist/src/scripts/merge-types.d.ts.map +1 -0
- package/dist/src/scripts/merge-types.js +7 -0
- package/dist/src/scripts/merge-types.js.map +1 -0
- package/dist/src/scripts/merge-utils.d.ts +23 -0
- package/dist/src/scripts/merge-utils.d.ts.map +1 -0
- package/dist/src/scripts/merge-utils.js +150 -0
- package/dist/src/scripts/merge-utils.js.map +1 -0
- package/dist/src/scripts/review-categories.d.ts +41 -0
- package/dist/src/scripts/review-categories.d.ts.map +1 -0
- package/dist/src/scripts/review-categories.js +316 -0
- package/dist/src/scripts/review-categories.js.map +1 -0
- package/dist/src/scripts/review-lenny-skills.d.ts +1 -0
- package/dist/src/scripts/review-lenny-skills.d.ts.map +1 -1
- package/dist/src/scripts/review-lenny-skills.js +5 -310
- package/dist/src/scripts/review-lenny-skills.js.map +1 -1
- package/dist/src/security/AuditLogger.d.ts +4 -75
- package/dist/src/security/AuditLogger.d.ts.map +1 -1
- package/dist/src/security/AuditLogger.js +2 -11
- package/dist/src/security/AuditLogger.js.map +1 -1
- package/dist/src/security/audit-types.d.ts +96 -0
- package/dist/src/security/audit-types.d.ts.map +1 -0
- package/dist/src/security/audit-types.js +15 -0
- package/dist/src/security/audit-types.js.map +1 -0
- package/dist/src/security/sanitization.d.ts +1 -85
- package/dist/src/security/sanitization.d.ts.map +1 -1
- package/dist/src/security/sanitization.js +2 -133
- package/dist/src/security/sanitization.js.map +1 -1
- package/dist/src/security/stripe-validators.d.ts +92 -0
- package/dist/src/security/stripe-validators.d.ts.map +1 -0
- package/dist/src/security/stripe-validators.js +139 -0
- package/dist/src/security/stripe-validators.js.map +1 -0
- package/dist/src/services/SearchService.d.ts +2 -31
- package/dist/src/services/SearchService.d.ts.map +1 -1
- package/dist/src/services/SearchService.helpers.d.ts +42 -0
- package/dist/src/services/SearchService.helpers.d.ts.map +1 -0
- package/dist/src/services/SearchService.helpers.js +128 -0
- package/dist/src/services/SearchService.helpers.js.map +1 -0
- package/dist/src/services/SearchService.js +14 -132
- package/dist/src/services/SearchService.js.map +1 -1
- package/dist/src/services/SearchService.types.d.ts +53 -0
- package/dist/src/services/SearchService.types.d.ts.map +1 -0
- package/dist/src/services/SearchService.types.js +7 -0
- package/dist/src/services/SearchService.types.js.map +1 -0
- package/dist/src/services/SkillAnalyzer.d.ts +6 -86
- package/dist/src/services/SkillAnalyzer.d.ts.map +1 -1
- package/dist/src/services/SkillAnalyzer.helpers.d.ts +103 -0
- package/dist/src/services/SkillAnalyzer.helpers.d.ts.map +1 -0
- package/dist/src/services/SkillAnalyzer.helpers.js +237 -0
- package/dist/src/services/SkillAnalyzer.helpers.js.map +1 -0
- package/dist/src/services/SkillAnalyzer.js +16 -167
- package/dist/src/services/SkillAnalyzer.js.map +1 -1
- package/dist/src/services/SkillAnalyzer.types.d.ts +110 -0
- package/dist/src/services/SkillAnalyzer.types.d.ts.map +1 -0
- package/dist/src/services/SkillAnalyzer.types.js +9 -0
- package/dist/src/services/SkillAnalyzer.types.js.map +1 -0
- package/dist/src/services/SkillDecomposer.d.ts +4 -70
- package/dist/src/services/SkillDecomposer.d.ts.map +1 -1
- package/dist/src/services/SkillDecomposer.helpers.d.ts +75 -0
- package/dist/src/services/SkillDecomposer.helpers.d.ts.map +1 -0
- package/dist/src/services/SkillDecomposer.helpers.js +277 -0
- package/dist/src/services/SkillDecomposer.helpers.js.map +1 -0
- package/dist/src/services/SkillDecomposer.js +6 -249
- package/dist/src/services/SkillDecomposer.js.map +1 -1
- package/dist/src/services/SkillDecomposer.types.d.ts +104 -0
- package/dist/src/services/SkillDecomposer.types.d.ts.map +1 -0
- package/dist/src/services/SkillDecomposer.types.js +9 -0
- package/dist/src/services/SkillDecomposer.types.js.map +1 -0
- package/dist/src/services/SubagentGenerator.d.ts +12 -3
- package/dist/src/services/SubagentGenerator.d.ts.map +1 -1
- package/dist/src/services/SubagentGenerator.js +43 -10
- package/dist/src/services/SubagentGenerator.js.map +1 -1
- package/dist/src/services/TaskRunner.d.ts +227 -0
- package/dist/src/services/TaskRunner.d.ts.map +1 -0
- package/dist/src/services/TaskRunner.js +423 -0
- package/dist/src/services/TaskRunner.js.map +1 -0
- package/dist/src/services/TransformationService.d.ts +8 -4
- package/dist/src/services/TransformationService.d.ts.map +1 -1
- package/dist/src/services/TransformationService.js +58 -34
- package/dist/src/services/TransformationService.js.map +1 -1
- package/dist/src/services/__tests__/TaskRunner.test.d.ts +7 -0
- package/dist/src/services/__tests__/TaskRunner.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/TaskRunner.test.js +316 -0
- package/dist/src/services/__tests__/TaskRunner.test.js.map +1 -0
- package/dist/src/services/__tests__/TransformationService.test.js +12 -10
- package/dist/src/services/__tests__/TransformationService.test.js.map +1 -1
- package/dist/src/telemetry/metric-helpers.d.ts +47 -0
- package/dist/src/telemetry/metric-helpers.d.ts.map +1 -0
- package/dist/src/telemetry/metric-helpers.js +96 -0
- package/dist/src/telemetry/metric-helpers.js.map +1 -0
- package/dist/src/telemetry/metric-types.d.ts +73 -0
- package/dist/src/telemetry/metric-types.d.ts.map +1 -0
- package/dist/src/telemetry/metric-types.js +9 -0
- package/dist/src/telemetry/metric-types.js.map +1 -0
- package/dist/src/telemetry/metrics.d.ts +8 -119
- package/dist/src/telemetry/metrics.d.ts.map +1 -1
- package/dist/src/telemetry/metrics.js +20 -193
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/span-utils.d.ts +30 -0
- package/dist/src/telemetry/span-utils.d.ts.map +1 -0
- package/dist/src/telemetry/span-utils.js +62 -0
- package/dist/src/telemetry/span-utils.js.map +1 -0
- package/dist/src/telemetry/tracer-types.d.ts +91 -0
- package/dist/src/telemetry/tracer-types.d.ts.map +1 -0
- package/dist/src/telemetry/tracer-types.js +6 -0
- package/dist/src/telemetry/tracer-types.js.map +1 -0
- package/dist/src/telemetry/tracer.d.ts +5 -122
- package/dist/src/telemetry/tracer.d.ts.map +1 -1
- package/dist/src/telemetry/tracer.js +23 -168
- package/dist/src/telemetry/tracer.js.map +1 -1
- package/dist/src/triggers/TriggerDetector.d.ts +6 -142
- package/dist/src/triggers/TriggerDetector.d.ts.map +1 -1
- package/dist/src/triggers/TriggerDetector.js +15 -247
- package/dist/src/triggers/TriggerDetector.js.map +1 -1
- package/dist/src/triggers/trigger-constants.d.ts +22 -0
- package/dist/src/triggers/trigger-constants.d.ts.map +1 -0
- package/dist/src/triggers/trigger-constants.js +185 -0
- package/dist/src/triggers/trigger-constants.js.map +1 -0
- package/dist/src/triggers/trigger-types.d.ts +90 -0
- package/dist/src/triggers/trigger-types.d.ts.map +1 -0
- package/dist/src/triggers/trigger-types.js +6 -0
- package/dist/src/triggers/trigger-types.js.map +1 -0
- package/dist/src/types/skill.d.ts +4 -1
- package/dist/src/types/skill.d.ts.map +1 -1
- package/dist/src/types/skill.js.map +1 -1
- package/dist/src/types.d.ts +6 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +1 -0
- package/dist/src/types.js.map +1 -1
- package/dist/src/validation/index.d.ts +5 -105
- package/dist/src/validation/index.d.ts.map +1 -1
- package/dist/src/validation/index.js +9 -421
- package/dist/src/validation/index.js.map +1 -1
- package/dist/src/validation/input-validators.d.ts +68 -0
- package/dist/src/validation/input-validators.d.ts.map +1 -0
- package/dist/src/validation/input-validators.js +126 -0
- package/dist/src/validation/input-validators.js.map +1 -0
- package/dist/src/validation/path-validators.d.ts +23 -0
- package/dist/src/validation/path-validators.d.ts.map +1 -0
- package/dist/src/validation/path-validators.js +47 -0
- package/dist/src/validation/path-validators.js.map +1 -0
- package/dist/src/validation/url-validators.d.ts +55 -0
- package/dist/src/validation/url-validators.d.ts.map +1 -0
- package/dist/src/validation/url-validators.js +267 -0
- package/dist/src/validation/url-validators.js.map +1 -0
- package/dist/src/validation/validation-error.d.ts +14 -0
- package/dist/src/validation/validation-error.d.ts.map +1 -0
- package/dist/src/validation/validation-error.js +19 -0
- package/dist/src/validation/validation-error.js.map +1 -0
- package/dist/src/webhooks/WebhookPayload.d.ts +4 -215
- package/dist/src/webhooks/WebhookPayload.d.ts.map +1 -1
- package/dist/src/webhooks/WebhookPayload.js +1 -122
- package/dist/src/webhooks/WebhookPayload.js.map +1 -1
- package/dist/src/webhooks/WebhookQueue.d.ts +2 -140
- package/dist/src/webhooks/WebhookQueue.d.ts.map +1 -1
- package/dist/src/webhooks/WebhookQueue.js +4 -11
- package/dist/src/webhooks/WebhookQueue.js.map +1 -1
- package/dist/src/webhooks/WebhookQueue.types.d.ts +149 -0
- package/dist/src/webhooks/WebhookQueue.types.d.ts.map +1 -0
- package/dist/src/webhooks/WebhookQueue.types.js +10 -0
- package/dist/src/webhooks/WebhookQueue.types.js.map +1 -0
- package/dist/src/webhooks/WebhookQueue.utils.d.ts +44 -0
- package/dist/src/webhooks/WebhookQueue.utils.d.ts.map +1 -0
- package/dist/src/webhooks/WebhookQueue.utils.js +58 -0
- package/dist/src/webhooks/WebhookQueue.utils.js.map +1 -0
- package/dist/src/webhooks/webhook-schemas.d.ts +213 -0
- package/dist/src/webhooks/webhook-schemas.d.ts.map +1 -0
- package/dist/src/webhooks/webhook-schemas.js +132 -0
- package/dist/src/webhooks/webhook-schemas.js.map +1 -0
- package/dist/src/webhooks/webhook-types.d.ts +222 -0
- package/dist/src/webhooks/webhook-types.d.ts.map +1 -0
- package/dist/src/webhooks/webhook-types.js +10 -0
- package/dist/src/webhooks/webhook-types.js.map +1 -0
- package/dist/tests/api/utils.test.d.ts +7 -0
- package/dist/tests/api/utils.test.d.ts.map +1 -0
- package/dist/tests/api/utils.test.js +121 -0
- package/dist/tests/api/utils.test.js.map +1 -0
- package/dist/tests/integration/neural/neural-fixtures.d.ts +19 -0
- package/dist/tests/integration/neural/neural-fixtures.d.ts.map +1 -0
- package/dist/tests/integration/neural/neural-fixtures.js +49 -0
- package/dist/tests/integration/neural/neural-fixtures.js.map +1 -0
- package/dist/tests/integration/neural/neural-mocks-privacy.d.ts +78 -0
- package/dist/tests/integration/neural/neural-mocks-privacy.d.ts.map +1 -0
- package/dist/tests/integration/neural/neural-mocks-privacy.js +146 -0
- package/dist/tests/integration/neural/neural-mocks-privacy.js.map +1 -0
- package/dist/tests/integration/neural/neural-mocks.d.ts +90 -0
- package/dist/tests/integration/neural/neural-mocks.d.ts.map +1 -0
- package/dist/tests/integration/neural/neural-mocks.js +288 -0
- package/dist/tests/integration/neural/neural-mocks.js.map +1 -0
- package/dist/tests/integration/neural/neural-test-utils.d.ts +27 -0
- package/dist/tests/integration/neural/neural-test-utils.d.ts.map +1 -0
- package/dist/tests/integration/neural/neural-test-utils.js +35 -0
- package/dist/tests/integration/neural/neural-test-utils.js.map +1 -0
- package/dist/tests/integration/neural/setup.d.ts +6 -165
- package/dist/tests/integration/neural/setup.d.ts.map +1 -1
- package/dist/tests/integration/neural/setup.js +9 -477
- package/dist/tests/integration/neural/setup.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod Schemas for API Response Validation
|
|
3
|
+
* @module api/schemas
|
|
4
|
+
*
|
|
5
|
+
* SMI-1258: Runtime validation for API responses using zod
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Trust Tier Schema
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Trust tier enum values
|
|
13
|
+
*/
|
|
14
|
+
export const TrustTierSchema = z.enum(['verified', 'community', 'experimental', 'unknown']);
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// API Search Result Schema
|
|
17
|
+
// ============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Schema for individual search result from API
|
|
20
|
+
* SMI-1577: Added .optional() and .default() to handle partial API responses
|
|
21
|
+
*/
|
|
22
|
+
export const ApiSearchResultSchema = z.object({
|
|
23
|
+
id: z.string(),
|
|
24
|
+
name: z.string(),
|
|
25
|
+
description: z.string().nullable(),
|
|
26
|
+
author: z.string().nullable(),
|
|
27
|
+
repo_url: z.string().nullable().optional(),
|
|
28
|
+
quality_score: z.number().nullable(),
|
|
29
|
+
trust_tier: TrustTierSchema.default('unknown'),
|
|
30
|
+
tags: z.array(z.string()).default([]),
|
|
31
|
+
stars: z.number().nullable().optional(),
|
|
32
|
+
installable: z.boolean().nullable().optional(),
|
|
33
|
+
created_at: z.string().optional(),
|
|
34
|
+
updated_at: z.string().optional(),
|
|
35
|
+
});
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// API Response Schema Factory
|
|
38
|
+
// ============================================================================
|
|
39
|
+
/**
|
|
40
|
+
* Schema for generic API response wrapper
|
|
41
|
+
*/
|
|
42
|
+
export function createApiResponseSchema(dataSchema) {
|
|
43
|
+
return z.object({
|
|
44
|
+
data: dataSchema,
|
|
45
|
+
meta: z.record(z.string(), z.unknown()).optional(),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// ============================================================================
|
|
49
|
+
// Telemetry Schema
|
|
50
|
+
// ============================================================================
|
|
51
|
+
/**
|
|
52
|
+
* Schema for telemetry response
|
|
53
|
+
*/
|
|
54
|
+
export const TelemetryResponseSchema = z.object({
|
|
55
|
+
data: z.object({
|
|
56
|
+
ok: z.boolean(),
|
|
57
|
+
}),
|
|
58
|
+
meta: z.record(z.string(), z.unknown()).optional(),
|
|
59
|
+
});
|
|
60
|
+
// ============================================================================
|
|
61
|
+
// Pre-built Response Schemas
|
|
62
|
+
// ============================================================================
|
|
63
|
+
/**
|
|
64
|
+
* Search response schema with array of results
|
|
65
|
+
*/
|
|
66
|
+
export const SearchResponseSchema = createApiResponseSchema(z.array(ApiSearchResultSchema));
|
|
67
|
+
/**
|
|
68
|
+
* Single skill response schema
|
|
69
|
+
*/
|
|
70
|
+
export const SingleSkillResponseSchema = createApiResponseSchema(ApiSearchResultSchema);
|
|
71
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/api/schemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAA;AAE3F,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC1C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC9C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAA;AAEF,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAyB,UAAa;IAC3E,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;KACnD,CAAC,CAAA;AACJ,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;KAChB,CAAC;IACF,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAA;AAEF,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAE3F;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC,qBAAqB,CAAC,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Utility Functions
|
|
3
|
+
* @module api/utils
|
|
4
|
+
*
|
|
5
|
+
* Helper functions for API client operations
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Calculate delay with exponential backoff and jitter
|
|
9
|
+
*
|
|
10
|
+
* @param attempt - Current attempt number (0-indexed)
|
|
11
|
+
* @param baseDelay - Base delay in milliseconds (default: 1000)
|
|
12
|
+
* @returns Delay in milliseconds (capped at 30000)
|
|
13
|
+
*/
|
|
14
|
+
export declare function calculateBackoff(attempt: number, baseDelay?: number): number;
|
|
15
|
+
/**
|
|
16
|
+
* Generate anonymous ID for telemetry using cryptographic randomness.
|
|
17
|
+
* Returns a UUID v4 format string (e.g., "550e8400-e29b-41d4-a716-446655440000").
|
|
18
|
+
*
|
|
19
|
+
* Note: This generates a fresh ID per session - it is NOT stored persistently.
|
|
20
|
+
* For persistent anonymous IDs, the caller must handle storage.
|
|
21
|
+
*/
|
|
22
|
+
export declare function generateAnonymousId(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Build request headers for API calls
|
|
25
|
+
*
|
|
26
|
+
* @param anonKey - Optional Supabase anon key for authentication
|
|
27
|
+
* @returns Headers object
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildRequestHeaders(anonKey?: string): Record<string, string>;
|
|
30
|
+
/**
|
|
31
|
+
* Production API URL for Skillsmith registry.
|
|
32
|
+
* This is the public API endpoint that all users should use.
|
|
33
|
+
*/
|
|
34
|
+
export declare const PRODUCTION_API_URL = "https://api.skillsmith.app/functions/v1";
|
|
35
|
+
/**
|
|
36
|
+
* Default base URL for API client.
|
|
37
|
+
*
|
|
38
|
+
* Priority order:
|
|
39
|
+
* 1. SKILLSMITH_API_URL env var (for custom deployments)
|
|
40
|
+
* 2. SUPABASE_URL env var (for development with local Supabase)
|
|
41
|
+
* 3. Production API URL (default for all users)
|
|
42
|
+
*
|
|
43
|
+
* SMI-1948: Previously fell back to undefined, causing offline mode for all users.
|
|
44
|
+
*/
|
|
45
|
+
export declare const DEFAULT_BASE_URL: string;
|
|
46
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/api/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,MAAM,CAI1E;AAMD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAyB5C;AAMD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY5E;AAMD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,4CAA4C,CAAA;AAE3E;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,QAEiE,CAAA"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Utility Functions
|
|
3
|
+
* @module api/utils
|
|
4
|
+
*
|
|
5
|
+
* Helper functions for API client operations
|
|
6
|
+
*/
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Backoff Calculation
|
|
9
|
+
// ============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Calculate delay with exponential backoff and jitter
|
|
12
|
+
*
|
|
13
|
+
* @param attempt - Current attempt number (0-indexed)
|
|
14
|
+
* @param baseDelay - Base delay in milliseconds (default: 1000)
|
|
15
|
+
* @returns Delay in milliseconds (capped at 30000)
|
|
16
|
+
*/
|
|
17
|
+
export function calculateBackoff(attempt, baseDelay = 1000) {
|
|
18
|
+
const exponentialDelay = baseDelay * Math.pow(2, attempt);
|
|
19
|
+
const jitter = Math.random() * 0.3 * exponentialDelay;
|
|
20
|
+
return Math.min(exponentialDelay + jitter, 30000); // Max 30s
|
|
21
|
+
}
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Anonymous ID Generation
|
|
24
|
+
// ============================================================================
|
|
25
|
+
/**
|
|
26
|
+
* Generate anonymous ID for telemetry using cryptographic randomness.
|
|
27
|
+
* Returns a UUID v4 format string (e.g., "550e8400-e29b-41d4-a716-446655440000").
|
|
28
|
+
*
|
|
29
|
+
* Note: This generates a fresh ID per session - it is NOT stored persistently.
|
|
30
|
+
* For persistent anonymous IDs, the caller must handle storage.
|
|
31
|
+
*/
|
|
32
|
+
export function generateAnonymousId() {
|
|
33
|
+
// Use Node.js crypto.randomUUID() for cryptographically secure random IDs
|
|
34
|
+
// This is available in Node.js 14.17.0+ and all modern browsers
|
|
35
|
+
if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {
|
|
36
|
+
return crypto.randomUUID();
|
|
37
|
+
}
|
|
38
|
+
// Fallback for older environments: use crypto.getRandomValues if available
|
|
39
|
+
if (typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function') {
|
|
40
|
+
const bytes = new Uint8Array(16);
|
|
41
|
+
crypto.getRandomValues(bytes);
|
|
42
|
+
// Set version (4) and variant (RFC4122) bits
|
|
43
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
44
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
45
|
+
const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');
|
|
46
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
47
|
+
}
|
|
48
|
+
// Last resort fallback (not cryptographically secure, but functional)
|
|
49
|
+
const chars = 'abcdef0123456789';
|
|
50
|
+
let id = '';
|
|
51
|
+
for (let i = 0; i < 32; i++) {
|
|
52
|
+
id += chars[Math.floor(Math.random() * chars.length)];
|
|
53
|
+
}
|
|
54
|
+
return `${id.slice(0, 8)}-${id.slice(8, 12)}-${id.slice(12, 16)}-${id.slice(16, 20)}-${id.slice(20)}`;
|
|
55
|
+
}
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Request Header Builder
|
|
58
|
+
// ============================================================================
|
|
59
|
+
/**
|
|
60
|
+
* Build request headers for API calls
|
|
61
|
+
*
|
|
62
|
+
* @param anonKey - Optional Supabase anon key for authentication
|
|
63
|
+
* @returns Headers object
|
|
64
|
+
*/
|
|
65
|
+
export function buildRequestHeaders(anonKey) {
|
|
66
|
+
const headers = {
|
|
67
|
+
'Content-Type': 'application/json',
|
|
68
|
+
'x-request-id': `client-${Date.now()}-${Math.random().toString(36).slice(2)}`,
|
|
69
|
+
};
|
|
70
|
+
if (anonKey) {
|
|
71
|
+
headers['Authorization'] = `Bearer ${anonKey}`;
|
|
72
|
+
headers['apikey'] = anonKey;
|
|
73
|
+
}
|
|
74
|
+
return headers;
|
|
75
|
+
}
|
|
76
|
+
// ============================================================================
|
|
77
|
+
// URL Constants
|
|
78
|
+
// ============================================================================
|
|
79
|
+
/**
|
|
80
|
+
* Production API URL for Skillsmith registry.
|
|
81
|
+
* This is the public API endpoint that all users should use.
|
|
82
|
+
*/
|
|
83
|
+
export const PRODUCTION_API_URL = 'https://api.skillsmith.app/functions/v1';
|
|
84
|
+
/**
|
|
85
|
+
* Default base URL for API client.
|
|
86
|
+
*
|
|
87
|
+
* Priority order:
|
|
88
|
+
* 1. SKILLSMITH_API_URL env var (for custom deployments)
|
|
89
|
+
* 2. SUPABASE_URL env var (for development with local Supabase)
|
|
90
|
+
* 3. Production API URL (default for all users)
|
|
91
|
+
*
|
|
92
|
+
* SMI-1948: Previously fell back to undefined, causing offline mode for all users.
|
|
93
|
+
*/
|
|
94
|
+
export const DEFAULT_BASE_URL = process.env.SKILLSMITH_API_URL ||
|
|
95
|
+
(process.env.SUPABASE_URL ? `${process.env.SUPABASE_URL}/functions/v1` : PRODUCTION_API_URL);
|
|
96
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/api/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,103 +7,8 @@
|
|
|
7
7
|
*
|
|
8
8
|
* All operations are logged for audit purposes.
|
|
9
9
|
*/
|
|
10
|
-
import type {
|
|
11
|
-
|
|
12
|
-
export interface GDPRComplianceServiceConfig {
|
|
13
|
-
/**
|
|
14
|
-
* Database connection (better-sqlite3)
|
|
15
|
-
*/
|
|
16
|
-
db: BetterSqliteDatabase;
|
|
17
|
-
/**
|
|
18
|
-
* Optional StripeClient for Stripe data operations
|
|
19
|
-
*/
|
|
20
|
-
stripeClient?: StripeClient;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Exported customer data format
|
|
24
|
-
*/
|
|
25
|
-
export interface CustomerDataExport {
|
|
26
|
-
/**
|
|
27
|
-
* Export metadata
|
|
28
|
-
*/
|
|
29
|
-
metadata: {
|
|
30
|
-
exportedAt: string;
|
|
31
|
-
customerId: string;
|
|
32
|
-
format: 'json';
|
|
33
|
-
version: '1.0';
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* Subscription data
|
|
37
|
-
*/
|
|
38
|
-
subscriptions: SubscriptionExportData[];
|
|
39
|
-
/**
|
|
40
|
-
* Invoice data
|
|
41
|
-
*/
|
|
42
|
-
invoices: InvoiceExportData[];
|
|
43
|
-
/**
|
|
44
|
-
* License key data (without the actual JWT for security)
|
|
45
|
-
*/
|
|
46
|
-
licenseKeys: LicenseKeyExportData[];
|
|
47
|
-
/**
|
|
48
|
-
* Webhook events related to this customer
|
|
49
|
-
*/
|
|
50
|
-
webhookEvents: WebhookEventExportData[];
|
|
51
|
-
}
|
|
52
|
-
export interface SubscriptionExportData {
|
|
53
|
-
id: string;
|
|
54
|
-
stripeSubscriptionId: string | null;
|
|
55
|
-
tier: string;
|
|
56
|
-
status: string;
|
|
57
|
-
seatCount: number;
|
|
58
|
-
currentPeriodStart: string | null;
|
|
59
|
-
currentPeriodEnd: string | null;
|
|
60
|
-
canceledAt: string | null;
|
|
61
|
-
createdAt: string;
|
|
62
|
-
updatedAt: string;
|
|
63
|
-
}
|
|
64
|
-
export interface InvoiceExportData {
|
|
65
|
-
id: string;
|
|
66
|
-
stripeInvoiceId: string;
|
|
67
|
-
amountCents: number;
|
|
68
|
-
currency: string;
|
|
69
|
-
status: string;
|
|
70
|
-
invoiceNumber: string | null;
|
|
71
|
-
paidAt: string | null;
|
|
72
|
-
periodStart: string | null;
|
|
73
|
-
periodEnd: string | null;
|
|
74
|
-
createdAt: string;
|
|
75
|
-
}
|
|
76
|
-
export interface LicenseKeyExportData {
|
|
77
|
-
id: string;
|
|
78
|
-
keyExpiry: string;
|
|
79
|
-
isActive: boolean;
|
|
80
|
-
generatedAt: string;
|
|
81
|
-
revokedAt: string | null;
|
|
82
|
-
revocationReason: string | null;
|
|
83
|
-
}
|
|
84
|
-
export interface WebhookEventExportData {
|
|
85
|
-
id: string;
|
|
86
|
-
stripeEventId: string;
|
|
87
|
-
eventType: string;
|
|
88
|
-
processedAt: string;
|
|
89
|
-
success: boolean;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Result of a data deletion operation
|
|
93
|
-
*/
|
|
94
|
-
export interface DeletionResult {
|
|
95
|
-
success: boolean;
|
|
96
|
-
customerId: string;
|
|
97
|
-
deletedAt: string;
|
|
98
|
-
counts: {
|
|
99
|
-
subscriptions: number;
|
|
100
|
-
invoices: number;
|
|
101
|
-
licenseKeys: number;
|
|
102
|
-
webhookEvents: number;
|
|
103
|
-
};
|
|
104
|
-
stripeDeleted: boolean;
|
|
105
|
-
errors: string[];
|
|
106
|
-
}
|
|
10
|
+
import type { GDPRComplianceServiceConfig, CustomerDataExport, DeletionResult } from './gdpr-types.js';
|
|
11
|
+
export type { GDPRComplianceServiceConfig, CustomerDataExport, SubscriptionExportData, InvoiceExportData, LicenseKeyExportData, WebhookEventExportData, DeletionResult, } from './gdpr-types.js';
|
|
107
12
|
/**
|
|
108
13
|
* GDPR Compliance Service for billing data
|
|
109
14
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GDPRComplianceService.d.ts","sourceRoot":"","sources":["../../../src/billing/GDPRComplianceService.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"GDPRComplianceService.d.ts","sourceRoot":"","sources":["../../../src/billing/GDPRComplianceService.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EACV,2BAA2B,EAC3B,kBAAkB,EAKlB,cAAc,EACf,MAAM,iBAAiB,CAAA;AAGxB,YAAY,EACV,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,GACf,MAAM,iBAAiB,CAAA;AAQxB;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc;gBAE1B,MAAM,EAAE,2BAA2B;IAW/C;;;;;;;;OAQG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IAgC1D,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,iBAAiB;IA4CzB,OAAO,CAAC,mBAAmB;IA2C3B;;;;;;;;;;;;;;;OAeG;IACG,kBAAkB,CACtB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QACR,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B,MAAM,CAAC,EAAE,OAAO,CAAA;KACjB,GACA,OAAO,CAAC,cAAc,CAAC;IA+I1B;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAQ5C;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG;QAClC,eAAe,EAAE,OAAO,CAAA;QACxB,YAAY,EAAE,MAAM,CAAA;QACpB,eAAe,EAAE,MAAM,CAAA;QACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;KAChC;CA+BF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GDPRComplianceService.js","sourceRoot":"","sources":["../../../src/billing/GDPRComplianceService.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"GDPRComplianceService.js","sourceRoot":"","sources":["../../../src/billing/GDPRComplianceService.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,68 +11,9 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import Stripe from 'stripe';
|
|
13
13
|
import type { BillingPeriod, CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, CreatePortalSessionRequest, CreatePortalSessionResponse, LicenseTier, StripeCheckoutSessionId, StripeCustomerId, StripePriceId, StripeSubscriptionId, SubscriptionStatus } from './types.js';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*/
|
|
17
|
-
export interface StripeClientConfig {
|
|
18
|
-
/**
|
|
19
|
-
* Stripe secret key (sk_test_xxx or sk_live_xxx)
|
|
20
|
-
*/
|
|
21
|
-
secretKey: string;
|
|
22
|
-
/**
|
|
23
|
-
* Stripe webhook signing secret (whsec_xxx)
|
|
24
|
-
*/
|
|
25
|
-
webhookSecret: string;
|
|
26
|
-
/**
|
|
27
|
-
* Price ID mappings for each tier
|
|
28
|
-
*/
|
|
29
|
-
prices: TierPriceConfigs;
|
|
30
|
-
/**
|
|
31
|
-
* Base URL for success/cancel redirects
|
|
32
|
-
*/
|
|
33
|
-
appUrl?: string;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Price configurations for all tiers
|
|
37
|
-
*/
|
|
38
|
-
export interface TierPriceConfigs {
|
|
39
|
-
individual: {
|
|
40
|
-
monthly: StripePriceId;
|
|
41
|
-
annual: StripePriceId;
|
|
42
|
-
};
|
|
43
|
-
team: {
|
|
44
|
-
monthly: StripePriceId;
|
|
45
|
-
annual: StripePriceId;
|
|
46
|
-
};
|
|
47
|
-
enterprise: {
|
|
48
|
-
monthly: StripePriceId;
|
|
49
|
-
annual: StripePriceId;
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Stripe API client wrapper
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* ```typescript
|
|
57
|
-
* const client = new StripeClient({
|
|
58
|
-
* secretKey: process.env.STRIPE_SECRET_KEY!,
|
|
59
|
-
* webhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
|
|
60
|
-
* prices: {
|
|
61
|
-
* individual: { monthly: 'price_xxx', annual: 'price_yyy' },
|
|
62
|
-
* team: { monthly: 'price_xxx', annual: 'price_yyy' },
|
|
63
|
-
* enterprise: { monthly: 'price_xxx', annual: 'price_yyy' },
|
|
64
|
-
* },
|
|
65
|
-
* });
|
|
66
|
-
*
|
|
67
|
-
* const session = await client.createCheckoutSession({
|
|
68
|
-
* tier: 'team',
|
|
69
|
-
* billingPeriod: 'monthly',
|
|
70
|
-
* seatCount: 5,
|
|
71
|
-
* successUrl: 'https://app.example.com/success',
|
|
72
|
-
* cancelUrl: 'https://app.example.com/cancel',
|
|
73
|
-
* });
|
|
74
|
-
* ```
|
|
75
|
-
*/
|
|
14
|
+
import type { StripeClientConfig } from './stripe-client-types.js';
|
|
15
|
+
export type { StripeClientConfig, TierPriceConfigs } from './stripe-client-types.js';
|
|
16
|
+
/** Stripe API client wrapper for subscription management and billing operations */
|
|
76
17
|
export declare class StripeClient {
|
|
77
18
|
private readonly stripe;
|
|
78
19
|
private readonly webhookSecret;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StripeClient.d.ts","sourceRoot":"","sources":["../../../src/billing/StripeClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B,OAAO,KAAK,EACV,aAAa,EACb,4BAA4B,EAC5B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,WAAW,EACX,uBAAuB,EACvB,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"StripeClient.d.ts","sourceRoot":"","sources":["../../../src/billing/StripeClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,34 +12,9 @@
|
|
|
12
12
|
import Stripe from 'stripe';
|
|
13
13
|
import { createLogger } from '../utils/logger.js';
|
|
14
14
|
import { BillingError } from './types.js';
|
|
15
|
+
import { mapSubscriptionStatus as mapStripeSubscriptionStatus } from './stripe-helpers.js';
|
|
15
16
|
const logger = createLogger('StripeClient');
|
|
16
|
-
|
|
17
|
-
// StripeClient Class
|
|
18
|
-
// ============================================================================
|
|
19
|
-
/**
|
|
20
|
-
* Stripe API client wrapper
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* const client = new StripeClient({
|
|
25
|
-
* secretKey: process.env.STRIPE_SECRET_KEY!,
|
|
26
|
-
* webhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
|
|
27
|
-
* prices: {
|
|
28
|
-
* individual: { monthly: 'price_xxx', annual: 'price_yyy' },
|
|
29
|
-
* team: { monthly: 'price_xxx', annual: 'price_yyy' },
|
|
30
|
-
* enterprise: { monthly: 'price_xxx', annual: 'price_yyy' },
|
|
31
|
-
* },
|
|
32
|
-
* });
|
|
33
|
-
*
|
|
34
|
-
* const session = await client.createCheckoutSession({
|
|
35
|
-
* tier: 'team',
|
|
36
|
-
* billingPeriod: 'monthly',
|
|
37
|
-
* seatCount: 5,
|
|
38
|
-
* successUrl: 'https://app.example.com/success',
|
|
39
|
-
* cancelUrl: 'https://app.example.com/cancel',
|
|
40
|
-
* });
|
|
41
|
-
* ```
|
|
42
|
-
*/
|
|
17
|
+
/** Stripe API client wrapper for subscription management and billing operations */
|
|
43
18
|
export class StripeClient {
|
|
44
19
|
stripe;
|
|
45
20
|
webhookSecret;
|
|
@@ -55,9 +30,7 @@ export class StripeClient {
|
|
|
55
30
|
this.appUrl = config.appUrl ?? 'https://skillsmith.app';
|
|
56
31
|
logger.info('Stripe client initialized');
|
|
57
32
|
}
|
|
58
|
-
//
|
|
59
|
-
// Customer Management
|
|
60
|
-
// ==========================================================================
|
|
33
|
+
// --- Customer Management ---
|
|
61
34
|
/**
|
|
62
35
|
* Create a new Stripe customer
|
|
63
36
|
*/
|
|
@@ -109,9 +82,7 @@ export class StripeClient {
|
|
|
109
82
|
async updateCustomer(customerId, params) {
|
|
110
83
|
return this.stripe.customers.update(customerId, params);
|
|
111
84
|
}
|
|
112
|
-
//
|
|
113
|
-
// Checkout Session
|
|
114
|
-
// ==========================================================================
|
|
85
|
+
// --- Checkout Session ---
|
|
115
86
|
/**
|
|
116
87
|
* Create a Stripe Checkout session for subscription
|
|
117
88
|
*/
|
|
@@ -190,9 +161,7 @@ export class StripeClient {
|
|
|
190
161
|
expand: ['subscription', 'customer'],
|
|
191
162
|
});
|
|
192
163
|
}
|
|
193
|
-
//
|
|
194
|
-
// Subscription Management
|
|
195
|
-
// ==========================================================================
|
|
164
|
+
// --- Subscription Management ---
|
|
196
165
|
/**
|
|
197
166
|
* Get a subscription by ID
|
|
198
167
|
*/
|
|
@@ -317,9 +286,7 @@ export class StripeClient {
|
|
|
317
286
|
cancel_at_period_end: false,
|
|
318
287
|
});
|
|
319
288
|
}
|
|
320
|
-
//
|
|
321
|
-
// Customer Portal
|
|
322
|
-
// ==========================================================================
|
|
289
|
+
// --- Customer Portal ---
|
|
323
290
|
/**
|
|
324
291
|
* Create a Stripe Customer Portal session
|
|
325
292
|
*/
|
|
@@ -347,9 +314,7 @@ export class StripeClient {
|
|
|
347
314
|
});
|
|
348
315
|
}
|
|
349
316
|
}
|
|
350
|
-
//
|
|
351
|
-
// Invoice Management
|
|
352
|
-
// ==========================================================================
|
|
317
|
+
// --- Invoice Management ---
|
|
353
318
|
/**
|
|
354
319
|
* List invoices for a customer
|
|
355
320
|
*/
|
|
@@ -395,9 +360,7 @@ export class StripeClient {
|
|
|
395
360
|
throw error;
|
|
396
361
|
}
|
|
397
362
|
}
|
|
398
|
-
//
|
|
399
|
-
// Webhook Handling
|
|
400
|
-
// ==========================================================================
|
|
363
|
+
// --- Webhook Handling ---
|
|
401
364
|
/**
|
|
402
365
|
* Verify and parse a webhook event
|
|
403
366
|
*/
|
|
@@ -412,9 +375,7 @@ export class StripeClient {
|
|
|
412
375
|
throw new BillingError('Invalid webhook signature', 'WEBHOOK_SIGNATURE_INVALID');
|
|
413
376
|
}
|
|
414
377
|
}
|
|
415
|
-
//
|
|
416
|
-
// Helper Methods
|
|
417
|
-
// ==========================================================================
|
|
378
|
+
// --- Helper Methods ---
|
|
418
379
|
/**
|
|
419
380
|
* Get the price ID for a tier and billing period
|
|
420
381
|
*/
|
|
@@ -432,26 +393,7 @@ export class StripeClient {
|
|
|
432
393
|
* Map Stripe subscription status to our status
|
|
433
394
|
*/
|
|
434
395
|
static mapSubscriptionStatus(stripeStatus) {
|
|
435
|
-
|
|
436
|
-
case 'active':
|
|
437
|
-
return 'active';
|
|
438
|
-
case 'past_due':
|
|
439
|
-
return 'past_due';
|
|
440
|
-
case 'canceled':
|
|
441
|
-
return 'canceled';
|
|
442
|
-
case 'trialing':
|
|
443
|
-
return 'trialing';
|
|
444
|
-
case 'paused':
|
|
445
|
-
return 'paused';
|
|
446
|
-
case 'incomplete':
|
|
447
|
-
return 'incomplete';
|
|
448
|
-
case 'incomplete_expired':
|
|
449
|
-
return 'incomplete_expired';
|
|
450
|
-
case 'unpaid':
|
|
451
|
-
return 'unpaid';
|
|
452
|
-
default:
|
|
453
|
-
return 'active';
|
|
454
|
-
}
|
|
396
|
+
return mapStripeSubscriptionStatus(stripeStatus);
|
|
455
397
|
}
|
|
456
398
|
/**
|
|
457
399
|
* Get the underlying Stripe instance (for advanced operations)
|