Ejemplo de API de paquete de meteoritos

Contexto

En los últimos días estuve jugando con el framework de meteoritos e intenté instalar el editor aloha . Me di cuenta de que ya había un envase de atmósfera llama aloha-meteoritos que me ha permitido instalarlo con meteoritos: mrt add aloha-meteor.

El problema era que, por alguna razón, no se incluían archivos de traducción en este paquete y quería usarlo en pt-BR. Así que bifurqué el paquete y comencé a hacer algunas modificaciones, pero me quedé atascado muy pronto porque necesitaba usar la API del paquete de meteor (que actualmente es privada) y no pude encontrar su documentación en ninguna parte. Así que decidí documentar los métodos de API del paquete de meteor para futuras referencias.

API de paquete

La mayor parte de esta documentación se recopiló examinando los paquetes packages.js de meteor y otros paquetes.

En primer lugar, necesita un archivo llamado ‘package.js’ dentro de su paquete. Los posibles métodos que puede utilizar son: (por ejemplo)

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
});

Uno de los problemas con los que me encuentro al intentar crear mi paquete aloha-editor es que, de forma predeterminada, carga algunos de sus archivos javascript de forma asincrónica, por lo que espera que esos archivos js existan como archivos estáticos. Sin embargo, api.add_filesno agrega archivos js como estáticos, sino que ejecuta el contenido del archivo. api.add_filessolo agrega archivos como estáticos (lo que equivaldría a colocarlos en la carpeta pública de su aplicación) si no hay un controlador definido para el tipo de extensión del archivo.