Socket
Socket
Sign inDemoInstall

organic-dna-repo-loader

Package Overview
Dependencies
41
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    organic-dna-repo-loader

Utility module for loading repo dna accordingly to stem skeleton 2.1 structure.


Version published
Weekly downloads
7
Maintainers
1
Created
Weekly downloads
 

Readme

Source

organic-dna-repo-loader

Utility module for loading repo dna accordingly to stem skeleton v2.1 & v3.x.x structure.

Features:

  • loading of repo's root /dna folder
  • recognizing and loading repo's cells having dna folder in them
    • automatically (slower)
    • manually listed
  • mounting cell's dna index as its root dna branch
  • resolves refrences once all DNA folders are loaded into memory
  • based on organic-dna-loader@1.x.x
  • defers DNA loading to existing implementation under cells/node_modules/lib/load-root-dna as per stem skeleton 2.1 concept.
  • defers DNA loading to existing implementation under cells/packages/lib/load-root-dna as per stem skeleton 3.0.0 concept.

usage

install

$ npm i organic-dna-repo-loader

api

loadDNA({root, mod, skipExistingLoaderUsage: false}):Promise

Loads <root>/dna and any cell dna found with glob pattern <root>/cells/**/dna into memory by apply mode on the loaded DNA chunks before resolving.

  • root : String, a full path to folder containing dna and cells folders
  • mode : String, optional mode or combination of modes to instruct DNA folding, see organic-dna-cellmodes for more info.
  • skipExistingLoaderUsage : Boolean, defualts to false. If set to true will not use existing loader found at <repo>/cells/node_modules/lib/load-root-dna.js

example manual

//       /sample-repo-with-cell-paths
//       | - cells/cell1/dna/index.yaml
//       | - dna/branch.json
//       | - dna/common.yaml
# cells/cell1/dna/index.yaml
cellInfo: v1
cellPaths: # Array of path relative paths to cells
 - 'cells/cell1' 
// usage 

const loadDNA = require('organic-dna-repo-loader')
const dna = await loadDNA(process.cwd() + '/sample-repo')

expect(dna).toDeepEqual({
  branch: {
    property: "value"
  },
  cells: {
    cell1: {
      build: {
        myProperty: "value"
      }
    }
  },
  common: {
    property: "value"
  }
})

example automatic

:warning: this method doesn't scale well with increased amount of cells to search for, so it is useful up to 20 cells.

//       /sample-repo
//       | - cells/cell1/dna/index.yaml
//       | - dna/branch.json
//       | - dna/common.yaml

const loadDNA = require('organic-dna-repo-loader')
const dna = await loadDNA(process.cwd() + '/sample-repo')

expect(dna).toDeepEqual({
  branch: {
    property: "value"
  },
  cells: {
    cell1: {
      build: {
        myProperty: "value"
      }
    }
  },
  common: {
    property: "value"
  }
})

existing dna loader

The implementation is designed to check for existence of <repo>/cells/node_modules/lib/load-root-dna.js and if it is present to require that instead of the original logic.

It is expected that this existing dna loader module exports the following

module.exports = async function (mode) {
  return DNA
}

ie, it should accept mode, load the respective repo DNA and return it as Promise.

Usually the existing dna loader can be implemented using organic-dna-repo-loader as its first step like so:

const loadDNA = require('organic-dna-repo-loader')
module.exports = async function (mode) {
  let repoDNA = loadDNA({
    root: __dirname, // or any other way to indicate repo's root folder
    mode,
    skipExistingLoaderUsage: true
  })
  // augment repoDNA ...
  return repoDNA
}

FAQs

Last updated on 06 Dec 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc