pulsar-edit / ppm Goto Github PK
View Code? Open in Web Editor NEWPulsar Package Manager
License: MIT License
Pulsar Package Manager
License: MIT License
On June 29th ownership of the .com
extension to pulsar-edit
will lapse and be given back to the domain registrar, we need to ensure this is not being used anywhere within the project, but most importantly ppm
as this executes the actual installation of packages to users machines.
It's usage must be changed to .dev
instead, following our new subdomains
Security and Stability
NO
No response
As discussed in pulsar#216
it would be nice to add more templates for packages.
If you have more suggestion just comment here and I will add them to the list.
It would support people to create packages in the enviroment/language they like.
No response
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
Warning
These dependencies are deprecated:
Datasource | Name | Replacement PR? |
---|---|---|
npm | coffee-script |
|
npm | request |
|
npm | superagent |
|
npm | wrench |
These branches will be created by Renovate only once you click their checkbox below.
.github/workflows/CI.yml
actions/checkout v3.3.0
actions/setup-node v3.6.0
actions/setup-python v4
actions/setup-python v4
package.json
asar-require 0.3.0
async ^3.2.0
colors ~1.4.0
fs-plus 3.x
git-utils ^5.7.2
hosted-git-info ^3.0.7
keytar ^7.7.0
mv 2.1.1
ncp ~2.0.0
open 7.3.0
plist 3
read ~1.0.7
request ^2.88.2
season ^6.0.2
second-mate 9686771
semver ^7.3.4
superagent ^8.0.9
superagent-proxy ^3.0.0
tar ^6.0.5
temp ^0.9.4
underscore-plus 1.x
wordwrap 1.0.0
wrench ~1.5.1
yargs ^3.32.0
coffee-script ^1.12.7
express ^4.17.1
jasmine-focused >=1.0.7 <2.0
shx ^0.3.3
ip ^1.1.9
got ^11.8.6
http-cache-semantics ^4.1.1
tar ^6.1.2
It is not properly possible to install a scoped package. The first part of the name is interpreted as package name. eg. @sertonix
if the package is called @sertonix/test
When you try to uninstall the package it gives an error because the package.json
is not in the expected path.
@sertonix/test
apm link <path>
@sertonix
the /
is interpreted as a sub folder. To prevent this an escape sequence is required that does not contain /
or \\
. Maybe use encodeURIComponent
for that.
I wrote a TypeScript package as a way of dogfooding the IDE experience with my pulsar-ide-typescript-alpha
package. By and large it's a smooth process, but the hardest part has been automatically transpiling to JavaScript before publish.
My understanding is that most NPM packages that are written in TypeScript use the prepublishOnly
script hook for this task. prepublishOnly
is called after the user runs npm publish
, but before anything else happens.
Inspecting the artifacts of other high-profile Atom packages that were written in TypeScript implies that this might’ve worked for ppm
at some point in the past, but I can’t imagine how that would be true.
My goal for my own project is (a) never to have to care about built files until publish time, and (b) never to run the risk of forgetting to transpile (and commit the transpilation) before publishing.
This is not a major priority, but I think it’s worth visiting at some point.
Feature parity with npm
. Makes it much easier to do something that might be a common need for new package contributors.
I can't think of a good alternative to this. In my case, I've managed to build a system out of duct tape and twine that forces me to build code before I run ppm publish patch
, but that's not a proper solution.
No response
I've just updated my atom package autocomplete-tailwindcss for pulsar. During this, I've renamed it to autocomplete-tailwindcss
. As you might guess, it's an autocompletion provider for Tailwind CSS class names.
The code is several years old and was initially written by Vincent Klaiber. They published the package under the name autocomplete-tailwind
. Note the missing 'css' and the end. That repository is no longer accessible at GitHub and results in a 404 error.
After I've published the package with ppm publish, it got registered at https://web.pulsar-edit.dev/packages/autocomplete-tailwindcss.
However, I cannot install the package -- instead, the abandoned package from Vincent Klaiber gets installed. This is rather surprising. Especially, because the package does not even exist at https://web.pulsar-edit.dev/.
1.113.0
🐧 Debian based (Linux Mint, Ubuntu, etc.)
Debian GNU/Linux trixie/sid
x86_64/AMD64
$ ppm install autocomplete-tailwindcss
Installing autocomplete-tailwindcss to /home/toddy/.pulsar/packages ✓
$ ls ~/.pulsar/packages
autocomplete-tailwind
No response
Hello. I've been working in a fork from a old package that it's no longer working. And now I decided to publish since it's stable I named the package auto-prettier-eslint.
But I've made some mistakes in the publishing and I can't neither publish a new version or unpublish it. All I get is Internal Server Error
.)
1.112.1
🐧 Debian based (Linux Mint, Ubuntu, etc.)
Ubuntu
x86_64/AMD64
Here is more or less what I've done:
No response
I was wondering why some of my git-installed packages were able to be upgraded — both within the editor and via ppm upgrade
— and some were not. I managed to track down what I think is the answer: ppm upgrade
checks a hard-coded refs/heads/master
, and many newer repos use main
as the default branch.
GitHub changed the default on new repos back in 2020, but never updated apm
accordingly.
I suppose the simplest fix would be to do repo.getUpstreamBranch('refs/heads/main') || repo.getUpstreamBranch('refs/heads/master')
, so that’s probably what I’ll do unless someone has a better suggestion.
1.101.0-beta
🍎 macOS
11.7.3
64-bit(x86_64)
I don't expect anyone to do this, but here we go:
main
as its default branch. Put a skeleton package in it — perhaps a sample package from the Flight Manual.ppm install [github username]/[repo name]
.main
.ppm upgrade [repo name]
; nothing will happen.No response
Hi, I have often encountered an error when trying to publish a package `Creating new version failed: Application error'. My observation I often encounter this error while trying to publish a few packages in a row.
On the same hand, I have first tried to now produce too many new tags, but to overwrite them. It looks like `--allow-same-version' doesn't work.
1.111.0
🪟 Windows
win 10 x64
x86_64/AMD64
try to publish a package
log file:
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli 'c:\\ProgramData\\Pulsar\\resources\\app\\ppm\\bin\\node.exe',
1 verbose cli 'c:\\ProgramData\\Pulsar\\resources\\app\\ppm\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli 'version',
1 verbose cli '1.1.0',
1 verbose cli '-m',
1 verbose cli 'Prepare v%s release'
1 verbose cli ]
2 info using [email protected]
3 info using [email protected]
4 verbose stack Error: Version not changed, might want --allow-same-version
4 verbose stack at persistVersion (c:\ProgramData\Pulsar\resources\app\ppm\node_modules\npm\lib\version.js:98:16)
4 verbose stack at c:\ProgramData\Pulsar\resources\app\ppm\node_modules\npm\lib\version.js:52:7
4 verbose stack at c:\ProgramData\Pulsar\resources\app\ppm\node_modules\npm\lib\version.js:129:5
4 verbose stack at c:\ProgramData\Pulsar\resources\app\ppm\node_modules\npm\node_modules\graceful-fs\graceful-fs.js:123:16
4 verbose stack at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3)
5 verbose cwd C:\Data\Develop\Pulsar\open-external
6 verbose Windows_NT 10.0.19045
7 verbose argv "c:\\ProgramData\\Pulsar\\resources\\app\\ppm\\bin\\node.exe" "c:\\ProgramData\\Pulsar\\resources\\app\\ppm\\node_modules\\npm\\bin\\npm-cli.js" "version" "1.1.0" "-m" "Prepare v%s release"
8 verbose node v16.0.0
9 verbose npm v6.14.19-pulsar1-1
10 error Version not changed, might want --allow-same-version
11 verbose exit [ 1, true ]
It would be nice to be able to install packages from git that are not in the root of the repo. For example like the packages in the core repo.
I found some instructions on how to do that here.
Example for the settings-view package:
git clone --depth 1 --filter=blob:none --sparse https://github.com/pulsar-edit/pulsar
cd pulsar
git sparse-checkout set packages/settings-view
cd packages/settings-view
It would allow the installation of packages that have been moved into the core repo directly from git.
Do the installation manually. It would be possible but for example updating would not work.
No response
Atom occasionally needed to rebuild the dependencies of community packages. For one thing, some NPM packages don't have prebuilds for some platforms. And when Atom upgraded its own version of Electron, that would require a rebuild of the native modules of previously installed community packages so that they could work with the new Electron version.
It seems that this used to be possible simply by running ppm rebuild [package]
. That command delegates to npm rebuild
(using ppm
's internal copy of npm
, of course). And Pulsar's builtin incompatible-packages
package offers a GUI for performing this task — which internally just shells out to ppm rebuild
.
Nowadays, however, this doesn't seem to be enough; these tasks claim to work, but don't produce modules capable of working in Pulsar. One possible fix for this problem would be to rewrite PPM's rebuild
task to delegate to electron-rebuild
.
This will require two things:
pulsar
the way that the test
tasks seems to do, taking care to ensure we're finding the version of the command that pairs with the version of ppm
that's currently running. (In other words, don't just run pulsar
and rely on PATH
to find it.)electron-rebuild
to be a dependency of ppm
. Currently it's only a dev dependency of Pulsar itself, while PPR doesn't require or use it at all.I'm inclined to assume control of the existing rebuild
task here because I don't think that it does anything that electron-rebuild
won't be able to do, but I'm happy to discuss that if anyone is concerned about it.
The short-term goal isn't to do anything magical or fancy with this — just to make it so that ppm rebuild [package]
actually does what it says on the tin, instead of being seemingly useless. If this works, we can have a discussion about whether this should be a mandatory post-install task for a given package. If electron-rebuild
understands when it does not need to rebuild a module, then I don't see a downside to doing this, but we don't need to decide it now.
(Reminder to myself or someone else: before working on this, I know I need to understand the installation process better, and exactly what happens when ppm
installs a package that uses native modules. For instance, I've never need to run electron-rebuild
on any package that uses @savetheclocktower/atom-languageclient
, even though it has a dependency with a native module. Why is my experience different from that of @mjrodgers (as reported in Discord)? He's on ARM64 and I'm on Intel, but surely a native module would need a rebuild anyway for an Electron environment, right? I should try to run (e.g.) ppm install --verbose pulsar-ide-typescript-alpha
in a clean environment and pore over the output to see if I can answer these questions.)
Easier package installations.
@mauricioszabo wants a fix that doesn't depend on PPM, but that can be pursued in parallel.
No response
When installing a list of packages from a file using the command ppm install --packages-file ./MyPackages.txt
, and for some reason the installation of a single package in this list fails (e.g. broken internet connection), re-running the command results in all packages, even those that have already been successfully installed, being rebuilt and reinstalled.
When ppm installs packages from a file, it should only install those packages which aren't yet installed, skipping those packages that are already installed.
This behaviour could be optional, e.g. activated by a CLI argument such as --dont-reinstall
This feature would greatly improve the resiliency of PPM when installing multiple packages at once, as it would allow an interrupted installation process to continue where it left off instead of started all over again.
I don't see any similarly efficient or effective solutions to the described problem.
No response
Packages don't install after install a few basic packages
1.116
🐧 Debian based (Linux Mint, Ubuntu, etc.)
Mx Linux 23.2
x86_64/AMD64
The log:
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli '/opt/Pulsar/resources/app/ppm/bin/node',
1 verbose cli '/opt/Pulsar/resources/app/ppm/node_modules/npm/bin/npm-cli.js',
1 verbose cli '--globalconfig',
1 verbose cli '/home/Ayush/.pulsar/.apm/.apmrc',
1 verbose cli '--userconfig',
1 verbose cli '/home/Ayush/.pulsar/.apmrc',
1 verbose cli 'install',
1 verbose cli 'https://api.pulsar-edit.dev/api/packages/atom-ide-hyperclick/versions/1.0.11/tarball',
1 verbose cli '--target=12.2.3',
1 verbose cli '--disturl=https://artifacts.electronjs.org/headers/dist',
1 verbose cli '--arch=x64',
1 verbose cli '--force-process-config',
1 verbose cli '--global-style',
1 verbose cli '--production'
1 verbose cli ]
2 info using [email protected]
3 info using [email protected]
4 verbose npm-session c9b901d4ddacc70d
5 silly install loadCurrentTree
6 silly install readLocalPackageData
7 http fetch GET 200 https://codeload.github.com/atom-community/atom-ide-hyperclick/legacy.tar.gz/refs/tags/v1.0.11 2938ms
8 silly pacote remote manifest for undefined@https://api.pulsar-edit.dev/api/packages/atom-ide-hyperclick/versions/1.0.11/tarball fetched in 2971ms
9 timing stage:loadCurrentTree Completed in 3014ms
10 silly install loadIdealTree
11 silly install cloneCurrentTreeToIdealTree
12 timing stage:loadIdealTree:cloneCurrentTree Completed in 0ms
13 silly install loadShrinkwrap
14 timing stage:loadIdealTree:loadShrinkwrap Completed in 1ms
15 silly install loadAllDepsIntoIdealTree
16 silly resolveWithNewModule [email protected] checking installable status
17 http fetch GET 200 https://registry.npmjs.org/atom-ide-base 124ms (from cache)
18 http fetch GET 200 https://registry.npmjs.org/rxjs 131ms (from cache)
19 http fetch GET 200 https://registry.npmjs.org/react 169ms (from cache)
20 silly pacote range manifest for atom-ide-base@^3.0.0 fetched in 323ms
21 silly resolveWithNewModule [email protected] checking installable status
22 http fetch GET 200 https://registry.npmjs.org/react-dom 353ms (from cache)
23 silly pacote range manifest for react@^17.0.2 fetched in 497ms
24 silly resolveWithNewModule [email protected] checking installable status
25 silly pacote range manifest for react-dom@^17.0.2 fetched in 500ms
26 silly resolveWithNewModule [email protected] checking installable status
27 http fetch GET 200 https://registry.npmjs.org/prop-types 778ms
28 http fetch GET 200 https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz 232ms
29 silly pacote range manifest for prop-types@^15.7.2 fetched in 1081ms
30 silly resolveWithNewModule [email protected] checking installable status
31 timing npm Completed in 4915ms
32 error cb() never called!
33 error This is an error with npm itself. Please report this error at:
34 error https://npm.community
I don't know. I'm trying to install pulsar packages with its install procedure
Trying to install an extension, I got this result:
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli '/opt/Pulsar/resources/app/ppm/bin/node',
1 verbose cli '/opt/Pulsar/resources/app/ppm/node_modules/npm/bin/npm-cli.js',
1 verbose cli '--globalconfig',
1 verbose cli '/home/paolo/.pulsar/.apm/.apmrc',
1 verbose cli '--userconfig',
1 verbose cli '/home/paolo/.pulsar/.apmrc',
1 verbose cli 'install',
1 verbose cli 'https://api.pulsar-edit.dev/api/packages/symbols-tree-view/versions/0.14.0/tarball',
1 verbose cli '--target=12.2.3',
1 verbose cli '--disturl=https://artifacts.electronjs.org/headers/dist',
1 verbose cli '--arch=x64',
1 verbose cli '--force-process-config',
1 verbose cli '--global-style'
1 verbose cli ]
2 info using [email protected]
3 info using [email protected]
4 verbose npm-session e07fbfd776ab1f49
5 silly install loadCurrentTree
6 silly install readLocalPackageData
7 http fetch GET 304 https://codeload.github.com/xndcn/symbols-tree-view/legacy.tar.gz/refs/tags/v0.14.0 2232ms (from cache)
8 silly pacote remote manifest for undefined@https://api.pulsar-edit.dev/api/packages/symbols-tree-view/versions/0.14.0/tarball fetched in 2243ms
9 timing stage:loadCurrentTree Completed in 2258ms
10 silly install loadIdealTree
11 silly install cloneCurrentTreeToIdealTree
12 timing stage:loadIdealTree:cloneCurrentTree Completed in 0ms
13 silly install loadShrinkwrap
14 timing stage:loadIdealTree:loadShrinkwrap Completed in 1ms
15 silly install loadAllDepsIntoIdealTree
16 silly resolveWithNewModule [email protected] checking installable status
17 silly fetchPackageMetaData error for event-kit@latest request to https://registry.npmjs.org/event-kit failed, reason: read ECONNRESET
18 silly fetchPackageMetaData error for atom-space-pen-views@^2.0.0 request to https://registry.npmjs.org/atom-space-pen-views failed, reason: read ECONNRESET
19 silly fetchPackageMetaData error for q@~1.0.1 request to https://registry.npmjs.org/q failed, reason: read ECONNRESET
20 timing stage:rollbackFailedOptional Completed in 1ms
21 timing stage:runTopLevelLifecycles Completed in 73784ms
22 silly saveTree apm-install-dir-2024326-164637-1naek43.ge59
22 silly saveTree └── [email protected]
23 verbose type system
24 verbose stack FetchError: request to https://registry.npmjs.org/event-kit failed, reason: read ECONNRESET
24 verbose stack at ClientRequest.<anonymous> (/opt/Pulsar/resources/app/ppm/node_modules/npm/node_modules/node-fetch-npm/src/index.js:68:14)
24 verbose stack at ClientRequest.emit (node:events:365:28)
24 verbose stack at TLSSocket.socketErrorListener (node:_http_client:447:9)
24 verbose stack at TLSSocket.emit (node:events:365:28)
24 verbose stack at emitErrorNT (node:internal/streams/destroy:193:8)
24 verbose stack at emitErrorCloseNT (node:internal/streams/destroy:158:3)
24 verbose stack at processTicksAndRejections (node:internal/process/task_queues:83:21)
25 verbose cwd /tmp/apm-install-dir-2024326-164637-1naek43.ge59
26 verbose Linux 6.8.0-31-generic
27 verbose argv "/opt/Pulsar/resources/app/ppm/bin/node" "/opt/Pulsar/resources/app/ppm/node_modules/npm/bin/npm-cli.js" "--globalconfig" "/home/paolo/.pulsar/.apm/.apmrc" "--userconfig" "/home/paolo/.pulsar/.apmrc" "install" "https://api.pulsar-edit.dev/api/packages/symbols-tree-view/versions/0.14.0/tarball" "--target=12.2.3" "--disturl=https://artifacts.electronjs.org/headers/dist" "--arch=x64" "--force-process-config" "--global-style"
28 verbose node v16.0.0
29 verbose npm v6.14.19-pulsar1-1
30 error code ECONNRESET
31 error errno ECONNRESET
32 error network request to https://registry.npmjs.org/event-kit failed, reason: read ECONNRESET
33 error network This is a problem related to network connectivity.
33 error network In most cases you are behind a proxy or have bad network settings.
33 error network
33 error network If you are behind a proxy, please make sure that the
33 error network 'proxy' config is set properly. See: 'npm help config'
34 verbose exit [ 1, true ]
Pulsar 1.111.0
🐧 Debian based (Linux Mint, Ubuntu, etc.)
xubuntu 24.04; same behaviour in 22.04
x86_64/AMD64
In Pulsar:
Install doesn't happen, and after about a minute I get the error notification
I suspect that it's because I'm in Cuba, and many web sites doesn't permit connection from this country.
Unfortunatly I'm not able to run pulsar behind a vpn.
Please fork all of AtomLinter to pulsar-edit organisation to ensure the Pulsar Package Manager will able to distribute the linters in case that Github org is completely shut down.
All the repositories in https://github.com/AtomLinter seem to have been archived on August 7th, 2023. They are still accessible in 'public archive' mode, but development has halted. There is no way for contributors to submit Pull Requests and we don't know how long the repos will stay in 'public archive' mode, so it would be good if they could be forked to the Pulsar-edit org.
No alternative / do nothing
No response
When running pulsar -p featured
it does not return any results. This is due to pulsar-edit/package-backend#3. It can also be resolved if checking for relesases.latest
is removed in https://github.com/pulsar-edit/ppm/blob/master/src/featured.coffee#L40, if that check is considered not necessary.
🐧 Arch based (Manjaro, Garuda, etc.)
Gnome 43
64-bit(x86_64)
pulsar -p featured
Featured Atom Packages (0)
No response
Switching to (bundled) npm 8 or newer in apm.
My first plan would be to ask the author of atom-community/apm#123 if it is okay to use their implementation at this repo. We can then verify whether it "just works" at that point, or needs more work for successful integration of newer npm into ppm.
Allegedly, but I think in my personal use I have in fact seen it to be faster.
In summary: Node 14 has npm 6. Node 16 has npm 8. Node 18 has npm 9.
Node 14 support ends 30 April, which is soon. We want to be on something newer for longer support.
See NodeJS support timeline, that's what most of this is based off of: https://github.com/nodejs/release#release-schedule
Note: Most of the biggest churn and breaking changes happened in npm 7, if I recall correctly / in my subjective recollection.
This was around the time GitHub acquired npm (!), and they (in my subjective opinion), went though a bit of a "move fast, break things" phase. They technically haven't stopped doing the "moving fast" part, I really wish they would focus more on testing changes with the ecosystem, but that is my bias as an end-user-testing-focused contributor to open source projects that apparently use some of npm's most obscure (and so least well preserved) features and quirks. It's just that many of their biggest ideas for "breakin' stuff" got expressed into code by the time npm 7.x was done, and so once we get over that hurdle of getting "somewhere past npm 7", npm 8 and 9 should hopefully be relatively somewhat smoother.
Alternatives are to stay on an unsupported npm version (npm 6)...
Which I prefer not to do long-term, so why not get out ahead of the (semi-official unofficial) EOL of npm 6?
No response
I found a few issues with the publish
task, mainly around the part where we check GitHub to see whether it knows about the new tag:
waitForTagToBeAvailable
method assumes that the tag will eventually show up. It doesn't try to handle situations where the API returns errors — for example, because of an exceeded rate limit.waitForTagToBeAvailable
used the same token that PPM uses in calls to the PPM API, that limit could be raised at least tenfold. It's worth doing.waitForTagToBeAvailable
doesn't have any error processing of its own. It doesn't envision that waitForTagToBeAvailable
can fail in any way. If we can't be sure the tag is present, we shouldn't proceed with publishing.Better error handling for ppm publish
.
Probably.
No response
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.