JSPM

  • Created
  • Published
  • Downloads 135
  • Score
    100M100P100Q88140F
  • License MIT

Incept is a content management framework.

Package Exports

  • stackpress
  • stackpress/Attribute
  • stackpress/Column
  • stackpress/Exception
  • stackpress/Fieldset
  • stackpress/Language
  • stackpress/Model
  • stackpress/Registry
  • stackpress/Revisions
  • stackpress/Session
  • stackpress/Terminal
  • stackpress/admin
  • stackpress/admin/pages/create
  • stackpress/admin/pages/detail
  • stackpress/admin/pages/detail/create
  • stackpress/admin/pages/detail/search
  • stackpress/admin/pages/export
  • stackpress/admin/pages/import
  • stackpress/admin/pages/remove
  • stackpress/admin/pages/restore
  • stackpress/admin/pages/search
  • stackpress/admin/pages/update
  • stackpress/admin/plugin
  • stackpress/admin/transform
  • stackpress/admin/types
  • stackpress/api
  • stackpress/api/plugin
  • stackpress/api/types
  • stackpress/api/views/oauth
  • stackpress/assert
  • stackpress/assets.d.ts
  • stackpress/bin
  • stackpress/cjs/api/views/oauth
  • stackpress/cjs/session/views/signin
  • stackpress/cjs/session/views/signup
  • stackpress/client
  • stackpress/client/plugin
  • stackpress/client/transform
  • stackpress/client/types
  • stackpress/email
  • stackpress/email/plugin
  • stackpress/email/types
  • stackpress/esm/api/views/oauth
  • stackpress/esm/session/views/signin
  • stackpress/esm/session/views/signup
  • stackpress/http
  • stackpress/language
  • stackpress/language/plugin
  • stackpress/language/types
  • stackpress/lib
  • stackpress/mysql
  • stackpress/pglite
  • stackpress/pgsql
  • stackpress/plugin
  • stackpress/schema
  • stackpress/schema/types
  • stackpress/scripts
  • stackpress/scripts/build
  • stackpress/scripts/drop
  • stackpress/scripts/emit
  • stackpress/scripts/generate
  • stackpress/scripts/index
  • stackpress/scripts/install
  • stackpress/scripts/migrate
  • stackpress/scripts/purge
  • stackpress/scripts/push
  • stackpress/scripts/serve
  • stackpress/server
  • stackpress/server/types
  • stackpress/session
  • stackpress/session/plugin
  • stackpress/session/types
  • stackpress/session/views/signin
  • stackpress/session/views/signup
  • stackpress/sql
  • stackpress/sql/actions
  • stackpress/sql/actions/batch
  • stackpress/sql/actions/create
  • stackpress/sql/actions/detail
  • stackpress/sql/actions/get
  • stackpress/sql/actions/index
  • stackpress/sql/actions/remove
  • stackpress/sql/actions/restore
  • stackpress/sql/actions/search
  • stackpress/sql/actions/update
  • stackpress/sql/actions/upsert
  • stackpress/sql/events
  • stackpress/sql/events/batch
  • stackpress/sql/events/create
  • stackpress/sql/events/detail
  • stackpress/sql/events/get
  • stackpress/sql/events/index
  • stackpress/sql/events/purge
  • stackpress/sql/events/remove
  • stackpress/sql/events/restore
  • stackpress/sql/events/search
  • stackpress/sql/events/update
  • stackpress/sql/events/upsert
  • stackpress/sql/plugin
  • stackpress/sql/transform
  • stackpress/sql/types
  • stackpress/sqlite
  • stackpress/stackpress.css
  • stackpress/terminal
  • stackpress/tsconfig/cjs
  • stackpress/tsconfig/esm
  • stackpress/types
  • stackpress/types/plugin
  • stackpress/types/transform
  • stackpress/unocss
  • stackpress/view
  • stackpress/view/client
  • stackpress/view/import
  • stackpress/view/plugin
  • stackpress/view/transform
  • stackpress/view/types
  • stackpress/whatwg

Readme

Stackpress

Stackpress is a content management framework.

Usage

See Example for use case.

Model Spec

The following attributes can be applied to model types in an idea file.

model User @icon("user") @label("User" "Users") {}
Attribute Description Attributes Example
@icon(string) An icon representation of a model. Uses font awesome names.   @icon("user")
@template(string) Used to describe each row in a model   @template("User {{name}}")
@label(string string) A friendly name that represents the model   @label("User" "Users")
@active A flag that represents the active field. Active fields are changed when deleting or restoring a row, as an alternative to actually deleting the row in the database.    
@default(string|number|boolean) The default value applied when creating a row if no value was provided.   @default(1)
@default("user")
@default(true)
@default("now()")
@default("nanoid()")
@default("nanoid(10)")
@default("cuid()")
@default("cuid(10)")
@generated A flag that represents that the value of this column is generated, bypassing the need to be validated    
@id A flag that represents the models identifier. If multiple ids then the combination will be used to determine each rows uniqueness.    
@searchable A flag deonoting this column is searchable and will be considered in a search field for example. Also used to know which columns need to be optimized in the database.    
@sortable A flag deonoting this column is sortable. Also used to know which columns need to be optimized in the database.    
@label(string) A label that will be shown to represent this column instead of the actual column name.   @label("Name")
@min(number) The minimum number value that will be accepted. This is also a consideration when determining the database type.   @min(10)
@max(number) The maximum number value that will be accepted. This is also a consideration when determining the database type.   @max(100)
@step(number) The incremental amount value that will be used when changing the columns value. This is also a consideration when determining the database type.   @step(1)
@step(0.01)
@relation(config) Maps columns in the model that is related to another model. local: string
foreign: string
name?: string
@relation({ local "userId" foreign "id" })
@relation({ name "memberships" local "ownerId" foreign "id" })
@relation({ name "connections" local "memberId" foreign "id" })
@unique A flag that ensures no duplicate value can be added to the model    
@updated A flag that will automatically update the timestamp whenever a row is changed.    

Validation Spec

The following validation attributes can be applied to model columns in an idea file.

name String @is.required @is.cgt(10)
Attribute Description Example
@is.required Validates that a value must be given before being inserted.  
@is.notempty Validates that a value is something as opposed to an empty string.  
@is.eq(string|number) Validates that the value is explicitly equal to the given argument @is.eq(10)
@is.eq("foobar")
@is.ne(string|number) Validates that the value is explicitly not equal to the given argument @is.neq(10)
@is.neq("foobar")
@is.option(string|number[]) Validates that the value is one of the given options @is.option([ 1 2 "foo" 3 "bar" ])
@is.regex(string) Validates that the value matches the given regular expression @is.regex("[a-z]$")
@is.date Validates that the value is a date  
@is.future Validates that the value is a future date  
@is.past Validates that the value is a past date  
@is.present Validates that the value is the present date  
@is.gt(number) Validate that the value is greater than the given number @is.gt(10)
@is.ge(number) Validate that the value is greater than or equal to the given number @is.ge(10)
@is.lt(number) Validate that the value is less than the given number @is.lt(10)
@is.le(number) Validate that the value is less than or equal to the given number @is.le(10)
@is.ceq(number) Validate that the character count of the value is equal to the given number @is.ceq(10)
@is.cgt(number) Validate that the character count of the value is greater than or equal to the given number @is.cle(10)
@is.cge(number) Validate that the character count of the value is less than the given number @is.cge(10)
@is.clt(number) Validate that the character count of the value is less than or equal to the given number @is.clt(10)
@is.cle(number) Validate that the character count of the value is less than or equal to the given number @is.cle(10)
@is.weq(number) Validate that the word count of the value is equal to the given number @is.weq(10)
@is.wgt(number) Validate that the word count of the value is greater than or equal to the given number @is.wle(10)
@is.wge(number) Validate that the word count of the value is less than the given number @is.wge(10)
@is.wlt(number) Validate that the word count of the value is less than or equal to the given number @is.wlt(10)
@is.wle(number) Validate that the word count of the value is less than or equal to the given number @is.wle(10)
@is.cc Validates that the value is a credit card  
@is.color Validates that the value is a color value (color name or hex)  
@is.email Validates that the value is an email  
@is.hex Validates that the value is a hexidecimal  
@is.price Validates that the value is a price number (ie. 2 decimal numbers)  
@is.url Validates that the value is a URL  
@is.boolean Validates that the value is a boolean  
@is.number Validates that the value is a number format  
@is.float Validates that the value is a float format  
@is.integer Validates that the value is an integer format  
@is.object Validates that the value is an object  

Field Spec

The following fields can be applied to model columns in an idea file.

name String @field.text
Attribute Description Attributes Example
@field.color Use a color field to represent this column in a form    
@field.checkbox(attributes?) Use a checkbox to represent this column in a form label: string
check: boolean
circle: boolean
square: boolean
rounded: boolean
blue: boolean
orange: boolean
@field.checkbox
@field.checkbox({ label "Enabled" circle true })
@field.country(attributes?) Use a country dropdown to represent this column in a form placeholder: string @field.country
@field.country({ placeholder "Select Country" })
@field.currency(attributes?) Use a currency dropdown to represent this column in a form placeholder: string @field.currency
@field.currency({ placeholder "Select Currency" })
@field.date Use a date field to represent this column in a form    
@field.datetime Use a date time field to represent this column in a form    
@field.editor(attributes?) Use a code editor to represent this column in a form lang: html|md|css|js|ts
numbers: boolean
@field.editor
@field.editor({ lang "html" numbers true })
@field.file Use a file input to represent this column in a form    
@field.filelist Use a file list fieldset to represent this column in a form    
@field.input Use an input field to represent this column in a form    
@field.markdown(attributes?) Use a markdown editor to represent this column in a form numbers: boolean @field.markdown
@field.markdown({ numbers true })
@field.mask(attributes) Use an input mask to represent this column in a form mask: string @field.mask
@field.mask({ mask "999-999-999" })
@field.metadata Use a key value fieldset to represent this column in a form    
@field.number(attributes?) Uses a number field to represent this column in a form min: number
max: number
step: number
separator: string
decimal: string
absolute: boolean
@field.number
@field.number({ min 0 max 10 step 0.01 separator "," decimal "." absolute true })
@field.password Uses a password field to represent this column in a form    
@field.range(attributes?) Uses a range field to represent this column in a form min: number
max: number
step: number
width: number
@field.range
@field.range({ min 0 max 10 step 0.01 width 100 })
@field.rating(attributes?) Uses a rating field to represent this column in a form max: number @field.rating
@field.rating({ max 5 })
@field.select(attributes?) Uses a select dropdown to represent this column in a form placeholder: string @field.select
@field.select({ placeholder "Select Country" })
@field.slug Uses an input field that transforms the value into a slug to represent this column in a form    
@field.switch(attributes?) Uses a switch toggle to represent this column in a form rounded: boolean
onoff: boolean
yesno: boolean
checkex: boolean
sunmoon: boolean
ridge: boolean
smooth: boolean
blue: boolean
orange: boolean
green: boolean
@field.switch
@field.switch({ label "Enabled" yesno true })
@field.textarea(attributes?) Uses a textarea field to represent this column in a form rows: number @field.textarea
@field.textarea({ rows 10 })
@field.taglist Uses a tag field to represent this column in a form    
@field.textlist Uses a text list fieldset to represent this column in a form    
@field.time Uses a time field to represent this column in a form    
@field.wysiwyg(attributes?) Uses a WYSIWYG to represent this column in a form history: boolean
font: boolean
size: boolean
format: boolean
paragraph: boolean
blockquote: boolean
style: boolean
color: boolean
highlight: boolean
text: boolean
remove: boolean
indent: boolean
align: boolean
rule: boolean
list: boolean
lineheight: boolean
table: boolean
link: boolean
image: boolean
video: boolean
audio: boolean
fullscreen: boolean
showblocks: boolean
code: boolean
dir: boolean
@field.wysiwyg
@field.wysiwyg({ font true size true format true })

Filter Spec

The following filter fields can be applied to model columns in an idea file.

name String @field.text
Attribute Description Attributes Example
@filter.color Use a color field to represent this column in a filter form    
@filter.checkbox(attributes?) Use a checkbox to represent this column in a filter form label: string
check: boolean
circle: boolean
square: boolean
rounded: boolean
blue: boolean
orange: boolean
@filter.checkbox
@filter.checkbox({ label "Enabled" circle true })
@filter.country(attributes?) Use a country dropdown to represent this column in a filter form placeholder: string @filter.select
@filter.select({ placeholder "Select Country" })
@filter.currency(attributes?) Use a currency dropdown to represent this column in a filter form placeholder: string @filter.currency
@filter.currency({ placeholder "Select Currency" })
@filter.date Use a date field to represent this column in a filter form    
@filter.datetime Use a date time field to represent this column in a filter form    
@filter.file Use a file input to represent this column in a filter form    
@filter.input Use an input field to represent this column in a filter form    
@filter.mask(attributes) Use an input mask to represent this column in a filter form mask: string @filter.mask
@filter.mask({ mask "999-999-999" })
@filter.number(attributes?) Uses a number field to represent this column in a filter form min: number
max: number
step: number
separator: string
decimal: string
absolute: boolean
@filter.number
@filter.number({ min 0 max 10 step 0.01 separator "," decimal "." absolute true })
@filter.password Uses a password field to represent this column in a filter form    
@filter.range(attributes?) Uses a range field to represent this column in a filter form min: number
max: number
step: number
width: number
@filter.range
@filter.range({ min 0 max 10 step 0.01 width 100 })
@filter.rating(attributes?) Uses a rating field to represent this column in a filter form max: number @filter.rating
@filter.rating({ max 5 })
@filter.select(attributes?) Uses a select dropdown to represent this column in a filter form placeholder: string @filter.select
@filter.select({ placeholder "Select Country" })
@filter.slug Uses an input field that transforms the value into a slug to represent this column in a filter form    
@filter.switch(attributes?) Uses a switch toggle to represent this column in a filter form rounded: boolean
onoff: boolean
yesno: boolean
checkex: boolean
sunmoon: boolean
ridge: boolean
smooth: boolean
blue: boolean
orange: boolean
green: boolean
@filter.switch
@filter.switch({ label "Enabled" yesno true })
@filter.time Uses a time field to represent this column in a filter form    

Spans

Attribute Description Attributes Example
@span.date Use a pair of date fields as a span to represent this column in a filter form    
@span.datetime Use a pair of date time fields as a span to represent this column in a filter form    
@span.input Use a pair of input fields as a span to represent this column in a filter form    
@span.number(attributes?) Use a pair of number fields as a span to represent this column in a filter form min: number
max: number
step: number
separator: string
decimal: string
absolute: boolean
@span.number
@span.number({ min 0 max 10 step 0.01 separator "," decimal "." absolute true })
@span.range(attributes?) Use a range field as a span to represent this column in a filter form min: number
max: number
step: number
width: number
@span.range
@span.range({ min 0 max 10 step 0.01 width 100 })
@span.rating(attributes?) Use a pair of rating fields as a span to represent this column in a filter form max: number @span.rating
@span.rating({ max 5 })
@span.select(attributes?) Use a pair of select dropdowns as a span to represent this column in a filter form placeholder: string @span.select
@span.select({ placeholder "Select Country" })
@span.time Use a pair of time fields as a span to represent this column in a filter form    

List Spec

The following list format fields can be applied to model columns in an idea file.

created Datetime @list.date({ locale "en" })
Attribute Description Attributes Example
@list.hide Hides this column in a formatted list of results    
@list.code(attributes?) Uses a code format to represent this column in a formatted list of results lang: string
numbers: boolean
inline: boolean
trim: boolean
ltrim: boolean
rtrim: boolean
@list.code
@list.code(lang "en" trim true)
@list.color(attributes?) Uses a code color to represent this column in a formatted list of results box: boolean
text: boolean
@list.color
@list.color(box true text true)
@list.country(attributes?) Uses a country format to represent this column in a formatted list of results flag: boolean
text: boolean
@list.country
@list.country(flag true text true)
@list.currency(attributes?) Uses a currency format to represent this column in a formatted list of results flag: boolean
text: boolean
@list.currency
@list.currency(flag true text true)
@list.date(attributes?) Uses a date format to represent this column in a formatted list of results locale: string
format: string
@list.date
@list.date(locale "en" format "MMMM D, YYYY, h:mm:ss a")
@list.email Uses an email format to represent this column in a formatted list of results    
@list.formula(attributes) Outputs the value of the given formula in a formatted list of results formula: string
data: object
@list.formula(formula "{x} + {this} + {y}" data { x 3 y 4 })
@list.html(attributes?) Uses a raw HTML format to represent this column in a formatted list of results ordered: boolean
indent: number
spacing: number
@list.html
@list.html({ ordered true indent 10 spacing 10 })
@list.image Uses a image format to represent this column in a formatted list of results    
@list.imagelist Uses an image carousel to represent this column in a formatted list of results. Ideally for an array of strings.    
@list.json Uses a json format to represent this column in a formatted list of results. Ideally for arrays or objects.    
@list.link Uses a clickable link to represent this column in a formatted list of results    
@list.list Uses a list (ordered or unordered) to represent this column in a formatted list of results. Ideally for an array of strings    
@list.markdown Converts the column value from markdown to raw HTML to represent this column in a formatted list of results    
@list.metadata(attributes?) Outputs the keys and values of the columns value in tabular format. Ideally for a key value object. padding: number
align: left|right|center
format: boolean
@list.metadata
@list.metadata({ padding 10 align "left" format true })
@list.number(attributes?) Uses a number format to represent this column in a formatted list of results separator: string
decimal: string
decimals: number
absolute: boolean
@list.number
@list.number({ separator "," decimal "." decimals 4 absolute true })
@list.overflow(attributes?) Uses a format that considers text overflows to represent this column in a formatted list of results length: number
words: boolean
hellip: boolean
@list.overflow
@list.overflow({ length 10 words true hellip true})
@list.phone(attributes?) Uses a phone format to represent this column in a formatted list of results label: string @list.phone
@list.phone({ label "Call Me Maybe" })
@list.rating(attributes?) Uses a rating format to represent this column in a formatted list of results max: number
remainder: boolean
round: round|ceil|floor
spacing: number
@list.rating
@list.rating({ max 5 remainder true round "floor" spacing 10 })
@list.separated(attributes?) Uses a separator format to represent this column in a formatted list of results. Ideally for an array of strings. separator: string @list.separated
@list.separated({ separator ", " })
@list.table(attributes?) Uses a tablular format to represent this column in a formatted list of results. Ideally for an array of objects. top: boolean
left: boolean
right: boolean
padding: number
align: left|right|center
background: color
border: color
header: color
stripe: color
@list.table
@list.table({ align "left" top true padding 100 background "blue" header "#CCC" })
@list.taglist(attributes?) Uses a tag list format to represent this column in a formatted list of results. Ideally for an array of strings. curved: boolean
rounded: boolean
pill: boolean
info: boolean
warning: boolean
success: boolean
error: boolean
muted: boolean
primary: boolean
color: color
secondary: boolean
outline: boolean
solid: boolean
transparent: boolean
@list.taglist
@list.taglist({ curved true info true outline true })
@list.template(attributes) Uses a template to generate a text to represent this column in a formatted list of results template: string @list.template({ template "{{foo}} and {{bar}}" })
@list.text(attributes?) Uses a text format to represent this column in a formatted list of results upper: boolean
lower: boolean
capital: boolean
@list.text
@list.text({ upper true })
@list.yesno(attributes?) Converts a boolean to a string representation to represent this column in a formatted list of results yes: string
no: string
@list.yesno
@list.yesno({ yes "Yep" no "Nah" })

View Spec

The following view format fields can be applied to model columns in an idea file.

created Datetime @view.date({ locale "en" })
Attribute Description Attributes Example
@view.hide Hides this column in a view    
@view.code(attributes?) Uses a code format to represent this column in a view lang: string
numbers: boolean
inline: boolean
trim: boolean
ltrim: boolean
rtrim: boolean
@view.code
@view.code(lang "en" trim true)
@view.color(attributes?) Uses a code color to represent this column in a view box: boolean
text: boolean
@view.color
@view.color(box true text true)
@view.country(attributes?) Uses a country format to represent this column in a view flag: boolean
text: boolean
@view.country
@view.country(flag true text true)
@view.currency(attributes?) Uses a currency format to represent this column in a view flag: boolean
text: boolean
@view.currency
@view.currency(flag true text true)
@view.date(attributes?) Uses a date format to represent this column in a view locale: string
format: string
@view.date
@view.date(locale "en" format "MMMM D, YYYY, h:mm:ss a")
@view.email Uses an email format to represent this column in a view    
@view.formula(attributes?) Outputs the value of the given formula in a view formula: string @view.formula(formula "{x} + {this} + {y}" data { x 3 y 4 })
@view.html(attributes?) Uses a raw HTML format to represent this column in a view ordered: boolean
indent: number
spacing: number
@view.html
@view.html({ ordered true indent 10 spacing 10 })
@view.image Uses a image format to represent this column in a view    
@view.imagelist Uses an image carousel to represent this column in a view. Ideally for an array of strings.    
@view.json Uses a json format to represent this column in a view. Ideally for arrays or objects.    
@view.link Uses a clickable link to represent this column in a view    
@view.list Uses a list (ordered or unordered) to represent this column in a view. Ideally for an array of strings    
@view.markdown Converts the column value from markdown to raw HTML to represent this column in a view    
@view.metadata(attributes?) Outputs the keys and values of the columns value in tabular format. Ideally for a key value object. padding: number
align: left|right|center
format: boolean
@view.metadata
@view.metadata({ padding 10 align "left" format true })
@view.number(attributes?) Uses a number format to represent this column in a view separator: string
decimal: string
decimals: boolean
absolute: boolean
@view.number
@view.number({ separator "," decimal "." decimals 4 absolute true })
@view.overflow(attributes?) Uses a format that considers text overflows to represent this column in a view length: number
words: boolean
hellip: boolean
@view.overflow
@view.overflow({ length 10 words true hellip true})
@view.phone(attributes?) Uses a phone format to represent this column in a view label: string @view.phone
@view.phone({ label "Call Me Maybe" })
@view.rating(attributes?) Uses a rating format to represent this column in a view max: number
remainder: boolean
round: round|ceil|floor
spacing: number
@view.rating
@view.rating({ max 5 remainder true round "floor" spacing 10 })
@view.separated(attributes?) Uses a separator format to represent this column in a view. Ideally for an array of strings. separator: string @view.separated
@view.separated({ separator ", " })
@view.table(attributes?) Uses a tablular format to represent this column in a view. Ideally for an array of objects. top: boolean
left: boolean
right: boolean
padding: number
align: left|right|center
background: color
border: color
header: color
stripe: color
@view.table
@view.table({ align "left" top true padding 100 background "blue" header "#CCC" })
@view.taglist(attributes?) Uses a tag list format to represent this column in a view. Ideally for an array of strings. curved: boolean
rounded: boolean
pill: boolean
info: boolean
warning: boolean
success: boolean
error: boolean
muted: boolean
primary: boolean
color: boolean
secondary: boolean
outline: boolean
solid: boolean
transparent: boolean
@view.taglist
@view.taglist({ curved true info true outline true })
@view.template(attributes?) Uses a template to generate a text to represent this column in a view template: string @view.template({ template "{{foo}} and {{bar}}" })
@view.text(attributes?) Uses a text format to represent this column in a view upper: boolean
lower: boolean
capital: boolean
@view.text
@view.text({ upper true })
@view.yesno(attributes?) Converts a boolean to a string representation to represent this column in a view yes: string
no: string
@view.yesno
@view.yesno({ yes "Yep" no "Nah" })