Exemplo de API do pacote Meteor

Contexto

Nos últimos dias, eu estava brincando com o framework do meteoro e estava tentando instalar o editor aloha . Eu percebi que já havia um pacote atmosfera chamado aloha-meteoro que me permitiu instalá-lo com meteorito: mrt add aloha-meteor.

O problema é que por algum motivo nenhum arquivo de tradução foi incluído neste pacote, e eu queria usá-lo em pt-BR. Então eu bifurquei o pacote e comecei a fazer algumas modificações, mas logo fiquei paralisado porque precisei usar a API do pacote do meteoro (que atualmente é privada) e não consegui encontrar sua documentação em lugar nenhum. Então, decidi documentar os métodos de API do pacote de meteoros para referência futura.

API de pacote

A maior parte desta documentação foi reunida olhando para packages.js de meteoro e outros pacotes.

Em primeiro lugar, você precisa de um arquivo chamado ‘package.js’ dentro do seu pacote. Os métodos possíveis que você pode usar são: (por exemplo)

Package.describe({
summary
: "Package Description. Will appear with meteor list",
internal: false, // optional, will not show with meteor list if false
environments
: ['client', 'server'] // optional. Supposedly specifies environments to load package, but i did not find any package that specifies this key.
});

Package.on_use(function (api, where){
// calls another package's on_use method
api
.use('package name', 'client')
api
.use('package name', ['client', 'server'])
api
.use('package name', where || 'client')

// add file(s) with specified environment(s)
api
.add_files('file_name.js', 'client');
api
.add_files('file_name.js', ['client', 'server']);
api
.add_files(['file_name.css', 'file_name.html'], 'client');
});

Package.on_test(function (api, where){
// same api methods as Package.on_use's callback function parameter
});

// used to describe a new extension file type
Package.register_extension("coffee", function (bundle, source_path, serve_path, where) {
// look at https://github.com/meteor/meteor/blob/master/packages/coffeescript/package.js for example
});

Um dos problemas que enfrento ao tentar criar meu pacote aloha-editor é que, por padrão, ele carrega alguns de seus arquivos javascript de forma assíncrona e, portanto, espera que esses arquivos js existam como arquivos estáticos. No entanto, api.add_filesnão adiciona arquivos js como estáticos, em vez disso, executa o conteúdo do arquivo. api.add_filesapenas adiciona arquivos como estáticos (o que seria o mesmo que colocá-los na pasta pública do seu aplicativo) se não houver um manipulador definido para o tipo de extensão do arquivo.