Skip to content

Conversation

Dhruv-Maradiya
Copy link
Contributor

Description

Fixes #1801 by adding toJson method in Pubspec class.

Changes

  • Added the toJson serializable to serialize object into map.
  • Added tests to validate functionality round-trip the shape of the source.
  • Updated CHANGELOG.md to document the changes.

Checklist

  • I’ve reviewed the contributor guide and followed the relevant guidelines.
  • Added tests to ensure the new feature works as intended.

@Dhruv-Maradiya Dhruv-Maradiya requested a review from kevmoo January 31, 2025 04:48
@Dhruv-Maradiya Dhruv-Maradiya changed the title Tojson pubspec parser Added the toJson method in Pubspec Feb 1, 2025
@mosuem mosuem requested a review from a team as a code owner April 17, 2025 12:40
@mosuem
Copy link
Member

mosuem commented Oct 7, 2025

@dart-lang/dart-bat any update here?

@kevmoo
Copy link
Member

kevmoo commented Oct 8, 2025

Looks like we need a rebase?

@Dhruv-Maradiya
Copy link
Contributor Author

Sure I will rebase the branch and push.

mattrbeck and others added 17 commits October 15, 2025 15:15
…ang#2077)

This is to support using this package to write a dart analyzer LSP client, which requires String ids.

Also closes dart-lang#738

This is technically breaking because there was some code which tries to coerce string ids back into integers, but this should never have happened. Any server stringifying integer IDs is not spec compliant.

Let me know if we want to release this as non-breaking instead of breaking, I think it would be fine personally, but don't feel strongly either way.
@kevmoo
Copy link
Member

kevmoo commented Oct 15, 2025

@Dhruv-Maradiya – yeah, looks like you have a mess.

I'd create a new checkout and apply your fixes there. Close this out unless you know git-fu pretty well.

@natebosch
Copy link
Member

natebosch commented Oct 16, 2025

I unborked the merge to the latest on main and now a "squash and merge" should result in a clean final commit on main if we want to keep running with this branch. The PR UI is still cluttered with the rebased history so up to @kevmoo and @Dhruv-Maradiya whether to continue here or in a fresh PR.

If you decide on using a fresh PR you can create it from the content after the merge I made. Be sure to git fetch so that you locally have the latest content of main and of this PR branch. Then make a new feature branch from the latest commit to main and git restore --source=tojson-pubspec-parser --worktree --stage . to get the diff setup. After that you can commit with

git commit -m "Add a toJson method on Pubspec

Closes #1801

- Added the `toJson` serializable to serialize object into `map`.  
- Added tests to validate functionality round-trip the shape of the source.  
- Updated `CHANGELOG.md` to document the changes."

Copy link

Package publishing

Package Version Status Publish tag (post-merge)
package:bazel_worker 1.1.4 already published at pub.dev
package:benchmark_harness 2.4.0-wip WIP (no publish necessary)
package:boolean_selector 2.1.2 already published at pub.dev
package:browser_launcher 1.1.3 already published at pub.dev
package:cli_config 0.2.1-wip WIP (no publish necessary)
package:cli_util 0.5.0-wip WIP (no publish necessary)
package:clock 1.1.3-wip WIP (no publish necessary)
package:code_builder 4.11.0 already published at pub.dev
package:coverage 1.15.0 already published at pub.dev
package:csslib 1.0.2 already published at pub.dev
package:extension_discovery 2.1.0 already published at pub.dev
package:file 7.0.2-wip WIP (no publish necessary)
package:file_testing 3.1.0-wip WIP (no publish necessary)
package:glob 2.1.3 already published at pub.dev
package:graphs 2.3.3-wip WIP (no publish necessary)
package:html 0.15.7-wip WIP (no publish necessary)
package:io 1.1.0-wip WIP (no publish necessary)
package:json_rpc_2 4.0.0 already published at pub.dev
package:markdown 7.3.1-wip WIP (no publish necessary)
package:mime 2.0.0 already published at pub.dev
package:oauth2 2.0.4 ready to publish oauth2-v2.0.4
package:package_config 2.3.0-wip WIP (no publish necessary)
package:pool 1.5.2 already published at pub.dev
package:process 5.0.5 already published at pub.dev
package:pub_semver 2.2.0 already published at pub.dev
package:pubspec_parse 1.6.0-wip WIP (no publish necessary)
package:source_map_stack_trace 2.1.3-wip WIP (no publish necessary)
package:source_maps 0.10.14-wip WIP (no publish necessary)
package:source_span 1.10.1 already published at pub.dev
package:sse 4.1.8 already published at pub.dev
package:stack_trace 1.12.1 already published at pub.dev
package:stream_channel 2.1.4 already published at pub.dev
package:stream_transform 2.1.2-wip WIP (no publish necessary)
package:string_scanner 1.4.1 already published at pub.dev
package:term_glyph 1.2.3-wip WIP (no publish necessary)
package:test_reflective_loader 0.4.0 already published at pub.dev
package:timing 1.0.2 already published at pub.dev
package:unified_analytics 8.0.6 ready to publish unified_analytics-v8.0.6
package:watcher 1.1.5-wip WIP (no publish necessary)
package:yaml 3.1.3 already published at pub.dev
package:yaml_edit 2.2.2 already published at pub.dev

Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

Copy link

PR Health

Breaking changes ✔️
Package Change Current Version New Version Needed Version Looking good?
pubspec_parse Non-Breaking 1.5.0 1.6.0-wip 1.5.1 ✔️

This check can be disabled by tagging the PR with skip-breaking-check.

Changelog Entry ✔️
Package Changed Files

Changes to files need to be accounted for in their respective changelogs.

This check can be disabled by tagging the PR with skip-changelog-check.

Coverage ⚠️
File Coverage
pkgs/pubspec_parse/lib/src/dependency.dart 💚 80 % ⬆️ 10 %
pkgs/pubspec_parse/lib/src/pubspec.dart 💚 98 % ⬆️ 0 %
pkgs/pubspec_parse/lib/src/screenshot.dart 💔 95 % ⬇️ 5 %

This check for test coverage is informational (issues shown here will not fail the PR).

This check can be disabled by tagging the PR with skip-coverage-check.

API leaks ✔️

The following packages contain symbols visible in the public API, but not exported by the library. Export these symbols or remove them from your publicly visible API.

Package Leaked API symbol Leaking sources

This check can be disabled by tagging the PR with skip-leaking-check.

License Headers ✔️
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
Files
no missing headers

All source files should start with a license header.

Unrelated files missing license headers
Files
pkgs/bazel_worker/benchmark/benchmark.dart
pkgs/benchmark_harness/integration_test/perf_benchmark_test.dart
pkgs/boolean_selector/example/example.dart
pkgs/clock/lib/clock.dart
pkgs/clock/lib/src/clock.dart
pkgs/clock/lib/src/default.dart
pkgs/clock/lib/src/stopwatch.dart
pkgs/clock/lib/src/utils.dart
pkgs/clock/test/clock_test.dart
pkgs/clock/test/default_test.dart
pkgs/clock/test/stopwatch_test.dart
pkgs/clock/test/utils.dart
pkgs/coverage/lib/src/coverage_options.dart
pkgs/html/example/main.dart
pkgs/html/lib/dom.dart
pkgs/html/lib/dom_parsing.dart
pkgs/html/lib/html_escape.dart
pkgs/html/lib/parser.dart
pkgs/html/lib/src/constants.dart
pkgs/html/lib/src/encoding_parser.dart
pkgs/html/lib/src/html_input_stream.dart
pkgs/html/lib/src/list_proxy.dart
pkgs/html/lib/src/query_selector.dart
pkgs/html/lib/src/token.dart
pkgs/html/lib/src/tokenizer.dart
pkgs/html/lib/src/treebuilder.dart
pkgs/html/lib/src/utils.dart
pkgs/html/test/dom_test.dart
pkgs/html/test/parser_feature_test.dart
pkgs/html/test/parser_test.dart
pkgs/html/test/query_selector_test.dart
pkgs/html/test/selectors/level1_baseline_test.dart
pkgs/html/test/selectors/level1_lib.dart
pkgs/html/test/selectors/selectors.dart
pkgs/html/test/support.dart
pkgs/html/test/tokenizer_test.dart
pkgs/html/test/trie_test.dart
pkgs/html/tool/generate_trie.dart
pkgs/pubspec_parse/test/git_uri_test.dart
pkgs/stack_trace/example/example.dart
pkgs/watcher/test/custom_watcher_factory_test.dart
pkgs/yaml_edit/example/example.dart

This check can be disabled by tagging the PR with skip-license-check.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Can toJson() functionality be included as well?