gg_lang library
Shared language catalog and project-type detection for the gg toolchain.
Classes
- LanguageCatalog
-
The catalog of all language-specific commands, loaded from
lib/src/assets/languages.json. - LanguageCommand
- A single language-specific command, loaded from the language catalog.
- LanguageSpec
- All language-specific configuration for a single language.
- Manifest
-
Reads and writes package metadata (name, version, publish marker) from a
language manifest (
pubspec.yaml/package.json), driven by a ManifestSpec so the field names and format never need to be hardcoded. - ManifestSpec
- Describes where a language stores its package metadata (name, version, publish target).
- MockManifest
- A mocktail mock.
- MockNpmRegistryResolver
- A mocktail mock.
- MockRegistry
- A mocktail mock.
- MockRegistryWaiter
- A mocktail mock.
- NpmRegistry
-
npm implementation (TypeScript) shelling out via the catalog command
(
npm view <name> versions --json). - NpmRegistryResolver
-
Resolves the npm registry a package actually publishes to, by asking the
package manager for its merged
.npmrcconfiguration. - PackageManagerSpec
- Describes how a language's package manager wraps tool invocations.
- PubDevRegistry
- pub.dev implementation (Dart/Flutter) using the HTTP JSON API.
- Registry
- Looks up the latest version a package has published to its registry.
- RegistryFactory
- Builds the right Registry for a ProjectType / LanguageSpec, based on the language's RegistrySpec.kind.
- RegistrySpec
- Describes how to query the version a package has published to its registry.
- RegistryWaiter
- Polls a Registry until a published version becomes visible.
Enums
- ProjectType
- The kind of project gg is operating on.
- PublishTarget
- A public package registry gg can upload to.
- TypeScriptPackageManager
- The JavaScript/TypeScript package manager in use by a project.
Extensions
- ProjectTypeX on ProjectType
- Convenience predicates on ProjectType.
-
PublishTargetsX
on Set<
PublishTarget> - Convenience predicates on a set of PublishTargets.
Constants
- languagesJsonSource → const String
-
The bundled
languages.jsoncatalog, embedded as a Dart constant. - npmjsStatusUrl → const String
-
The status page of the public npm registry, with a
{name}placeholder. -
pinnedNpmVersions
→ const Map<
String, String> - npm packages gg holds at a fixed version instead of letting an upgrade carry them along.
Properties
-
allLockFileNames
→ Set<
String> -
All lock file names any supported language or package manager writes.
final
Functions
-
checkProjectType(
Directory directory) → ProjectType -
The ProjectType that gg's check pipeline (analyze / format / tests)
should use for
directory. -
detectProjectType(
Directory directory) → ProjectType -
Detects the ProjectType of
directory— which manifest the directory carries, not which pipeline gg should run on it. For the latter, use checkProjectType. -
detectTypeScriptPackageManager(
Directory directory) → TypeScriptPackageManager -
Detects the TypeScriptPackageManager of
directoryby looking at the lockfiles present. Falls back to TypeScriptPackageManager.npm. -
hasNpmScript(
Directory directory, String name) → bool -
Whether the
package.jsonindirectorydeclares an npm script namedname. -
hybridVersions(
Directory directory, {LanguageCatalog? catalog}) → Future< ({Version packageJson, Version pubspec})?> -
The two manifest versions of the hybrid in
directory, or null whendirectoryis not a hybrid or either version cannot be parsed. -
hybridVersionsDiffer(
Directory directory, {LanguageCatalog? catalog}) → Future< bool> -
Whether
directoryis a hybrid whose two manifests carry different versions. -
isBridgeProject(
Directory directory) → bool - Former name of isHybridProject, kept so callers keep compiling.
-
isHybridProject(
Directory directory) → bool -
Whether
directoryis a hybrid project — a repo that ships a Dart manifest (pubspec.yaml) and a TypeScript manifest (package.json) side by side. -
isPrivateNpmPackage(
Directory directory) → bool -
Whether the
package.jsonindirectorysets"private": true. -
lockFileFor(
Directory directory) → String -
Returns the dependency lock file name for the project in
directory. -
npmStatusUrlTemplate(
String registryUrl) → String -
Returns the human-facing page where the published versions of a package on
registryUrlcan be checked, as a template with a{name}placeholder. -
publishTargetsOf(
Directory directory, {LanguageCatalog? catalog}) → Future< Set< PublishTarget> > -
The registries the package in
directorypublishes to. -
readNpmDependencyNames(
Directory directory) → Set< String> -
The names of every dependency the
package.jsonindirectorydeclares —dependencies,devDependencies,peerDependenciesandoptionalDependencies. -
readNpmScripts(
Directory directory) → Map< String, String> -
Reads the
scriptssection of thepackage.jsonindirectory.
Exceptions / Errors
- ManifestException
- Thrown when a manifest field is missing or the manifest cannot be parsed.
- RegistryException
- Thrown on unexpected registry errors (non-404 HTTP status, npm non-zero exit that is not a "not found").