Skip to content

Instantly share code, notes, and snippets.

@kayhadrin
Created August 10, 2016 19:52
Show Gist options
  • Save kayhadrin/c3c56a7c07cf1cbfd237a053ad6b0e81 to your computer and use it in GitHub Desktop.
Save kayhadrin/c3c56a7c07cf1cbfd237a053ad6b0e81 to your computer and use it in GitHub Desktop.
How to extract angular 1.x full dependency list
# # How to use?
# Put a breakpoint in angular.module() and when in there,
# Save the `modules` variable on the window object like `window.modules = modules`
# Then load the script below
# Then invoke: `angular.toJson(analyseModules(modules), true)`
analyseModule = (module) ->
module.map (provider) ->
[providerType, type, definition] = provider
# providerTypes[providerType] = 0 if providerTypes[providerType] is undefined
# providerTypes[providerType]++
entityName = definition[0]
defs = definition[1]
if providerType is '$provide'
entityName = entityName
switch type
when 'constant', 'service', 'factory', 'directive'
entityType = type
when 'register'
if providerType is '$controllerProvider'
entityType = 'controller'
if defs and defs[0]
deps = (dep for dep in defs when dep)
# console.group 'providerType=%s type=%s entityName=%s entityType=%s', providerType, type, entityName, entityType
console.group 'entityName=%s entityType=%s', entityName, entityType
if deps
console.log 'deps=', deps
console.groupEnd()
{
name: entityName
type: entityType
deps
}
.reduce (ret, item) ->
ret[item.name] = item
delete item.name
ret
, {}
analyseModules = (modules) ->
ret = {}
ret[name] = analyseModule item._invokeQueue for own name, item of modules
ret
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment