exercism / exercism/typescript

🤖 Sync error for commit 877c8a

Open Beginner friendly
#1,656 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
165
Forks
173
PR merge metrics
No merged PRs in 30d

Description

We hit an error trying to sync the latest commit (877c8a9cb4093ba340e2cd2a8183834b3b305fa8) to the website.

The error was:
```
expected comma, not a string (after custom) at line 31, column 10 [parse.c:416] in '{
"authors": [
"masters3d"
],
"contributors": [
"CRivasGomez",
"DFXLuna",
"lukaszklis",
"SleeplessByte"
],
"files": {
"solution": [
"pangram.ts"
],
"test": [
"pangram.test.ts"
],
"example": [
".meta/proof.ci.ts"
]
},
"blurb": "Determine whether a phrase uses every letter in the Latin alphabet.",
"custom": {
"version.tests.compatibility": "jest-29",
"flag.tests.task-per-describe": false,
"flag.tests.may-run-long": false,
"flag.tests.includes-optional": false,
"flag.tests.jest": true,
"flag.tests.tstyche": false
}
"source": "Wikipedia",
"source_url": "https://en.wikipedia.org/wiki/Pangram"
}

/opt/exercism/website/app/models/git/repository.rb:33:in 'JSON.parse'
/opt/exercism/website/app/models/git/repository.rb:33:in 'Git::Repository#read_json_blob'
/opt/exercism/website/app/models/git/has_git_filepath.rb:29:in 'block in Git::Exercise#git_filepath'
/opt/exercism/website/app/models/git/exercise.rb:87:in 'Git::Exercise#icon_name'
/usr/local/bundle/ruby/3.4.0/gems/mandate-2.2.0/lib/mandate/memoize.rb:47:in 'block (2 levels) in __mandate_memoize'
/opt/exercism/website/app/commands/git/sync_track.rb:131:in 'block in Git::SyncTrack#sync_practice_exercises!'
/opt/exercism/website/app/commands/git/sync_track.rb:122:in 'Array#each'
/opt/exercism/website/app/commands/git/sync_track.rb:122:in 'Enumerable#each_with_index'
/opt/exercism/website/app/commands/git/sync_track.rb:122:in 'Git::SyncTrack#sync_practice_exercises!'
/usr/local/bundle/ruby/3.4.0/gems/mandate-2.2.0/lib/mandate/memoize.rb:47:in 'block (2 levels) in __mandate_memoize'
/opt/exercism/website/app/commands/git/sync_track.rb:40:in 'Git::SyncTrack#call'
/usr/local/bundle/ruby/3.4.0/gems/mandate-2.2.0/lib/mandate/call_injector.rb:10:in 'Git::SyncTrack.call'
/opt/exercism/website/app/jobs/sync_tracks_job.rb:8:in 'block in SyncTracksJob#perform'
/usr/local/bundle/ruby/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/relation/batches.rb:82:in 'Array#each'
/usr/local/bundle/ruby/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/relation/batches.rb:82:in 'block in ActiveRecord::Batches#find_each'
/usr/local/bundle/ruby/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/relation/batches.rb:158:in 'block in ActiveRecord::Batches#find_in_batches'
/usr/local/bundle/ruby/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/relation/batches.rb:396:in 'block in ActiveRecord::Batches#batch_on_unloaded_relation'
:168:in 'Kernel#loop'
/usr/local/bundle/ruby/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/relation/batches.rb:372:in 'ActiveRecord::Batches#batch_on_unloaded_relation'
/usr/local/bundle/ruby/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/relation/batches.rb:269:in 'ActiveRecord::Batches#in_batches'
/usr/local/bundle/ruby/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/relation/batches.rb:157:in 'ActiveRecord::Batches#find_in_batches'
/usr/local/bundle/ruby/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/relation/batches.rb:81:in 'ActiveRecord::Batches#find_each'
/usr/local/bundle/ruby/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/querying.rb:23:in 'ActiveRecord::Querying#find_each'
/opt/exercism/website/app/jobs/sync_tracks_job.rb:7:in 'SyncTracksJob#perform'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/execution.rb:68:in 'block in ActiveJob::Execution#_perform_job'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:121:in 'block in ActiveSupport::Callbacks#run_callbacks'
/usr/local/bundle/ruby/3.4.0/gems/anycable-rails-core-1.6.0/lib/anycable/rails.rb:39:in 'AnyCable::Rails.with_socket_id'
/usr/local/bundle/ruby/3.4.0/gems/anycable-rails-core-1.6.0/lib/anycable/rails/socket_id_tracking.rb:37:in 'block (2 levels) in '
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:130:in 'BasicObject#instance_exec'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/usr/local/bundle/ruby/3.4.0/gems/i18n-1.14.7/lib/i18n.rb:353:in 'I18n::Base#with_locale'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/translation.rb:9:in 'block (2 levels) in '
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:130:in 'BasicObject#instance_exec'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/core_ext/time/zones.rb:65:in 'Time.use_zone'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/timezones.rb:9:in 'block (2 levels) in '
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:130:in 'BasicObject#instance_exec'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:141:in 'ActiveSupport::Callbacks#run_callbacks'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/execution.rb:67:in 'ActiveJob::Execution#_perform_job'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/instrumentation.rb:32:in 'ActiveJob::Instrumentation#_perform_job'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/execution.rb:51:in 'ActiveJob::Execution#perform_now'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/instrumentation.rb:26:in 'block in ActiveJob::Instrumentation#perform_now'
/usr/local/bundle/ruby/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/railties/job_runtime.rb:13:in 'block in ActiveRecord::Railties::JobRuntime#instrument'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/instrumentation.rb:40:in 'block in ActiveJob::Instrumentation#instrument'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/notifications.rb:206:in 'block in ActiveSupport::Notifications.instrument'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/notifications/instrumenter.rb:58:in 'ActiveSupport::Notifications::Instrumenter#instrument'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/notifications.rb:206:in 'ActiveSupport::Notifications.instrument'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/instrumentation.rb:39:in 'ActiveJob::Instrumentation#instrument'
/usr/local/bundle/ruby/3.4.0/gems/activerecord-7.1.5.1/lib/active_record/railties/job_runtime.rb:11:in 'ActiveRecord::Railties::JobRuntime#instrument'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/instrumentation.rb:26:in 'ActiveJob::Instrumentation#perform_now'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/logging.rb:18:in 'block in ActiveJob::Logging#perform_now'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/tagged_logging.rb:139:in 'block in ActiveSupport::TaggedLogging#tagged'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/tagged_logging.rb:39:in 'ActiveSupport::TaggedLogging::Formatter#tagged'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/tagged_logging.rb:139:in 'ActiveSupport::TaggedLogging#tagged'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/broadcast_logger.rb:241:in 'ActiveSupport::BroadcastLogger#method_missing'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/logging.rb:25:in 'ActiveJob::Logging#tag_logger'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/logging.rb:18:in 'ActiveJob::Logging#perform_now'
/usr/local/bundle/ruby/3.4.0/gems/sentry-rails-6.3.0/lib/sentry/rails/active_job.rb:13:in 'block in Sentry::Rails::ActiveJobExtensions#perform_now'
/usr/local/bundle/ruby/3.4.0/gems/sentry-rails-6.3.0/lib/sentry/rails/active_job.rb:45:in 'block in Sentry::Rails::ActiveJobExtensions::SentryReporter.record'
/usr/local/bundle/ruby/3.4.0/gems/sentry-ruby-6.3.0/lib/sentry/hub.rb:89:in 'Sentry::Hub#with_scope'
/usr/local/bundle/ruby/3.4.0/gems/sentry-ruby-6.3.0/lib/sentry-ruby.rb:399:in 'Sentry.with_scope'
/usr/local/bundle/ruby/3.4.0/gems/sentry-rails-6.3.0/lib/sentry/rails/active_job.rb:32:in 'Sentry::Rails::ActiveJobExtensions::SentryReporter.record'
/usr/local/bundle/ruby/3.4.0/gems/sentry-rails-6.3.0/lib/sentry/rails/active_job.rb:12:in 'Sentry::Rails::ActiveJobExtensions#perform_now'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/execution.rb:29:in 'block in ActiveJob::Execution::ClassMethods#execute'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:121:in 'block in ActiveSupport::Callbacks#run_callbacks'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/railtie.rb:67:in 'block (4 levels) in '
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/reloader.rb:77:in 'block in ActiveSupport::Reloader.wrap'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/execution_wrapper.rb:88:in 'ActiveSupport::ExecutionWrapper.wrap'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/reloader.rb:74:in 'ActiveSupport::Reloader.wrap'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/railtie.rb:66:in 'block (3 levels) in '
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:130:in 'BasicObject#instance_exec'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/callbacks.rb:141:in 'ActiveSupport::Callbacks#run_callbacks'
/usr/local/bundle/ruby/3.4.0/gems/activejob-7.1.5.1/lib/active_job/execution.rb:27:in 'ActiveJob::Execution::ClassMethods#execute'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/rails.rb:13:in 'Sidekiq::ActiveJob::Wrapper#perform'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:220:in 'Sidekiq::Processor#execute_job'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:185:in 'block (4 levels) in Sidekiq::Processor#process'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:180:in 'Sidekiq::Middleware::Chain#traverse'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/job/interrupt_handler.rb:9:in 'Sidekiq::Job::InterruptHandler#call'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:26:in 'Sidekiq::Metrics::ExecutionTracker#track'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:134:in 'Sidekiq::Metrics::Middleware#call'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-failures-1.0.4/lib/sidekiq/failures/middleware.rb:9:in 'Sidekiq::Failures::Middleware#call'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
/usr/local/bundle/ruby/3.4.0/gems/skylight-6.0.4/lib/skylight/sidekiq.rb:33:in 'block in Skylight::Sidekiq::ServerMiddleware#call'
/usr/local/bundle/ruby/3.4.0/gems/skylight-6.0.4/lib/skylight.rb:150:in 'block in Skylight.trace'
/usr/local/bundle/ruby/3.4.0/gems/skylight-6.0.4/lib/skylight/instrumenter.rb:245:in 'Skylight::Instrumenter#trace'
/usr/local/bundle/ruby/3.4.0/gems/skylight-6.0.4/lib/skylight.rb:149:in 'Skylight.trace'
/usr/local/bundle/ruby/3.4.0/gems/skylight-6.0.4/lib/skylight/sidekiq.rb:32:in 'Skylight::Sidekiq::ServerMiddleware#call'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:173:in 'Sidekiq::Middleware::Chain#invoke'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:184:in 'block (3 levels) in Sidekiq::Processor#process'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:145:in 'block (6 levels) in Sidekiq::Processor#dispatch'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/job_retry.rb:118:in 'Sidekiq::JobRetry#local'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:144:in 'block (5 levels) in Sidekiq::Processor#dispatch'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/rails.rb:27:in 'block in Sidekiq::Rails::Reloader#call'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/reloader.rb:77:in 'block in ActiveSupport::Reloader.wrap'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/execution_wrapper.rb:92:in 'ActiveSupport::ExecutionWrapper.wrap'
/usr/local/bundle/ruby/3.4.0/gems/activesupport-7.1.5.1/lib/active_support/reloader.rb:74:in 'ActiveSupport::Reloader.wrap'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/rails.rb:26:in 'Sidekiq::Rails::Reloader#call'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:139:in 'block (4 levels) in Sidekiq::Processor#dispatch'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:281:in 'Sidekiq::Processor#stats'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:134:in 'block (3 levels) in Sidekiq::Processor#dispatch'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/job_logger.rb:15:in 'Sidekiq::JobLogger#call'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:133:in 'block (2 levels) in Sidekiq::Processor#dispatch'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/job_retry.rb:85:in 'Sidekiq::JobRetry#global'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:132:in 'block in Sidekiq::Processor#dispatch'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/job_logger.rb:40:in 'Sidekiq::JobLogger#prepare'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:131:in 'Sidekiq::Processor#dispatch'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in 'block (2 levels) in Sidekiq::Processor#process'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in 'Thread.handle_interrupt'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in 'block in Sidekiq::Processor#process'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in 'Thread.handle_interrupt'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in 'Sidekiq::Processor#process'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:86:in 'Sidekiq::Processor#process_one'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:76:in 'Sidekiq::Processor#run'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/component.rb:10:in 'Sidekiq::Component#watchdog'
/usr/local/bundle/ruby/3.4.0/gems/sidekiq-7.3.9/lib/sidekiq/component.rb:19:in 'block in Sidekiq::Component#safe_thread'
```

Please tag @exercism/maintainers-admin if you require more information.

Contributor guide

Open the contributing guide

Research direction

Start with the Pangram exercise metadata in commit 877c8a9cb4093ba340e2cd2a8183834b3b305fa8, alongside pangram.ts, pangram.test.ts, and .meta/proof.ci.ts. Validate the metadata JSON and retry the TypeScript track sync; done means the commit parses successfully and syncs to the website without the reported error.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
build-system
Issue type
Bug
Difficulty
1/5
Estimated time
Under an hour
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.