| adapterPackageFile |
Type : unknown
|
Default value : readFileSync(adapterPackagePath)
|
| adapterPackageFileJson |
Type : unknown
|
Default value : JSON.parse(adapterPackageFile)
|
| adapterPackagePath |
Type : unknown
|
Default value : resolve(
__dirname,
'..',
'node_modules',
'@sasjs',
'adapter',
'package.json'
)
|
| file |
Type : unknown
|
Default value : resolve(__dirname, '..', 'src', 'environments', 'version.ts')
|
| gitDescribeSync |
Default value : require('git-describe')
|
| gitInfo |
Type : unknown
|
Default value : gitDescribeSync({
dirtyMark: false,
dirtySemver: false
})
|
| momentObj |
Type : unknown
|
Default value : require('moment')
|
| readFileSync |
Default value : require('fs')
|
| relative |
Default value : require('path')
|
| resolve |
Default value : require('path')
|
| writeFileSync |
Default value : require('fs-extra')
|
| addDarkClass |
Type : unknown
|
Default value : (td: any) => {
if (!td.classList.contains('htDark')) {
td.classList.add('htDark')
}
}
|
|
Adds a htDark class to a TD element if not existing |
| BaseTextEditor |
Type : unknown
|
Default value : Handsontable.editors.getEditor('text') as any
|
| baseTextRenderer |
Type : unknown
|
Default value : Handsontable.renderers.getRenderer('text')
|
| isoPassthrough |
Type : unknown
|
Default value : (value: any): any => value
|
|
Identity formatter — display the stored ISO string as-is (no localization). |
| SPACE_ISO |
Type : unknown
|
Default value : /^(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}(?::\d{2})?)$/
|
| blobToFile |
Type : unknown
|
Default value : (blob: Blob, fileName: string): File => {
const file = new File([blob], fileName, {
lastModified: new Date().getTime()
})
return file
}
|
| clearAutoEscaped |
Type : unknown
|
Default value : (
map: AutoEscapedCellMap,
rowKey: string,
colName: string
): void => {
map.get(rowKey)?.delete(colName)
}
|
| getRowKey |
Type : unknown
|
Default value : (row: any, headerPks: string[]): string =>
headerPks.map((pk) => String(row[pk])).join(' ')
|
| isAutoEscaped |
Type : unknown
|
Default value : (
map: AutoEscapedCellMap,
rowKey: string,
colName: string
): boolean => map.get(rowKey)?.has(colName) ?? false
|
| markAutoEscaped |
Type : unknown
|
Default value : (
map: AutoEscapedCellMap,
rowKey: string,
colName: string
): void => {
if (!map.has(rowKey)) map.set(rowKey, new Set())
map.get(rowKey)!.add(colName)
}
|
| COMBINED_KEY_PREFIX |
Type : string
|
Default value : 'DCKEY1:'
|
|
Format produced by dckey's own encodeCombinedKey() (main.js): "DCKEY1:" + base64(gzip(licenceKey + " " + activationKey)). The prefix is plain ASCII, not itself compressed/encoded - base64's alphabet never contains ":", so it can never collide with the start of a legacy licence key or activation key, making format detection unambiguous. |
| isCombinedLicenceKey |
Type : unknown
|
Default value : (text: string): boolean =>
text.trim().startsWith(COMBINED_KEY_PREFIX)
|
| compareSasNumericOrder |
Type : unknown
|
Default value : (
a: [number, number],
b: [number, number]
): number => (a[0] !== b[0] ? a[0] - b[0] : a[1] - b[1])
|
| DATETIME_REGEX |
Type : unknown
|
Default value : /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/
|
| DEBUG_STATE_KEY |
Type : string
|
Default value : 'dc-debug-state'
|
|
Where the debug toggle state is kept. The |
| DEFAULT_HOT_LICENCE_KEY |
Type : string
|
Default value : 'non-commercial-and-evaluation'
|
|
Handsontable licence key used until a licence is loaded from the backend.
The decrypted licence carries the customer's own key ( |
| DEFAULT_VALUE_RULE_TYPES |
Type : DQRuleTypes[]
|
Default value : [
'NOTNULL',
'READONLY',
'HIDDEN'
]
|
|
Rule types whose RULE_VALUE supplies the default value inserted into a cell when a new row is added. Checked in priority order. |
| defaultWait |
Type : unknown
|
Default value : (ms: number): Promise<void> =>
new Promise((resolve) => setTimeout(resolve, ms))
|
| DELETE_RECORD_COLUMN_LABEL |
Type : string
|
Default value : 'Delete?'
|
|
Display label editor.component.ts renames the delete-flag column's headerColumns entry to (see initSetup) - the actual Handsontable column data prop stays DELETE_RECORD_COLUMN_RULE.data, so by the time headerColumns reaches this function the raw name is already gone from it and only this label is left to match against. |
| DELETE_RECORD_COLUMN_NAME |
Type : string
|
Default value : '_____DELETE__THIS__RECORD_____'
|
|
Its rule can never travel via |
| DELETE_RECORD_COLUMN_RULE |
Type : DcValidation
|
Default value : {
data: DELETE_RECORD_COLUMN_NAME,
type: 'dropdown',
source: ['No', 'Yes']
}
|
| EDIT_STATUS_COLUMN_NAME |
Type : string
|
Default value : 'dc.row_status'
|
|
EDIT_STATUS is a purely client-synthesized column (M/A/D/U from classifyRow), added so DC.ROW_STATUS has a real, HyperFormula-addressable cell to point at. It never comes from COLHEADERS, is always hidden (see DcValidator's constructor) and is stripped before the submit payload leaves the browser (see editor.component.ts's saveTable()). Named with a period rather than decorated with underscores (like
DELETE_RECORD_COLUMN_RULE) - a SAS variable name can never contain a
period, so this makes a collision with a real dataset column structurally
impossible, not just unlikely. Handsontable's own datamap.get()/set() only
treat a dot in a |
| EDIT_STATUS_COLUMN_RULE |
Type : DcValidation
|
Default value : {
data: EDIT_STATUS_COLUMN_NAME,
type: 'text',
readOnly: true
}
|
| environment |
Type : object
|
Default value : {
production: true,
commitId: 'to be updated' // process.env.CI_COMMIT_ID
}
|
| environment |
Type : object
|
Default value : {
production: false,
commitId: 'to be updated' // process.env.CI_COMMIT_ID
}
|
| escapeRegExpMetacharacters |
Type : unknown
|
Default value : (text: string): string =>
text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
|
| quoteLiteral |
Type : unknown
|
Default value : (value: string | number | undefined): string =>
`"${String(value ?? '').replace(/"/g, '""')}"`
|
| EVENTS_TO_ISOLATE |
Type : unknown
|
Default value : [
'mousedown',
'mouseup',
'contextmenu',
'selectstart'
] as const
|
| excelDateToJSDate |
Type : unknown
|
Default value : (serial: number) => {
return new Date(Math.round((serial - 25569) * 86400 * 1000))
}
|
|
Converts excel date serial number to JS date |
| isBlankRow |
Type : unknown
|
Default value : (row: any) => {
for (const key in row) {
if (key !== '__rowNum__') {
return false
}
}
return true
}
|
|
Checks if an excel row is blank or not |
| file |
Type : unknown
|
Default value : resolve(__dirname, '..', 'src', 'environments', '_eula.ts')
|
| licenceFilePath |
Type : unknown
|
Default value : resolve(__dirname, '..', '..', 'LICENCE.md')
|
| readFileSync |
Default value : require('fs')
|
|
Recreate _eula.ts based on LICENCE.md an put it in environments folder so it can be used in the angular components |
| relative |
Default value : require('path')
|
| resolve |
Default value : require('path')
|
| writeFileSync |
Default value : require('fs-extra')
|
| freeTierConfig |
Type : LicenceState
|
Default value : {
users_allowed: 1,
viewer_rows_allowed: 15,
editor_rows_allowed: 15,
stage_rows_allowed: Infinity,
history_rows_allowed: 15,
submit_rows_limit: 5,
viewbox_limit: 1,
lineage_daily_limit: 3,
tables_in_library_limit: 35,
viewbox: true,
fileUpload: false,
editRecord: true,
addRecord: true
}
|
|
These properties Will be applied when NO KEY FREE TIER is active and when key is FREE TIER it is used for limit values that are not set props from the LICENCE KEY is will be used to override these values |
| SASJS_TAG_STEP |
Type : number
|
Default value : 3
|
|
Index of the |
| initFilter |
Type : { filter: FilterCache }
|
Default value : {
filter: {
cols: <any[]>[],
vals: <any[]>[],
groupLogic: <string>'',
whereClause: <string>'',
libds: <string>'',
clauses: <any>[],
query: <QueryClause[]>[]
}
}
|
|
Initial values when no cached values stored |
| HASHES |
Type : []
|
Default value : [
'md4',
'md5',
'ripemd160',
'sha1',
'sha224',
'sha256',
'sha384',
'sha512'
]
|
| isStringDecimal |
Type : unknown
|
Default value : (str: string) => {
if (/^\d+\.\d+$/.test(str)) {
return true
} else {
return false
}
}
|
| isStringNumber |
Type : unknown
|
Default value : (str: string) => {
if (/^-{0,1}\d+$/.test(str)) {
return true
} else {
return false
}
}
|
| librariesToShow |
Type : number
|
Default value : 50
|
| sasMonths |
Type : []
|
Default value : [
'JAN',
'FEB',
'MAR',
'APR',
'MAY',
'JUN',
'JUL',
'AUG',
'SEP',
'OCT',
'NOV',
'DEC'
]
|
|
Month names used by a SAS date literal, eg 20APR2042. |
| moment |
Type : unknown
|
Default value : require('moment')
|
| ROUTES |
Type : Routes
|
Default value : [
{ path: '', redirectTo: 'home', pathMatch: 'full' },
{
path: 'view',
loadChildren: () => ViewerModule
},
{
/**
* Load review module (approve, history, submitted)
*/
path: 'review',
component: ReviewRouteComponent,
children: [
{ path: '', pathMatch: 'full', redirectTo: 'toapprove' },
{
path: '',
loadChildren: () => ReviewModule
}
]
},
{
path: 'licensing',
loadChildren: () => LicensingModule
},
{
path: 'home',
loadChildren: () => HomeModule
},
{
/**
* Load editor module with subroutes
*/
path: 'editor',
loadChildren: () => EditorModule
},
{
path: 'stage',
loadChildren: () => StageModule
},
{
path: 'system',
loadChildren: () => SystemModule
},
{
path: 'deploy',
loadChildren: () => DeployModule
},
{ path: '**', component: NotFoundComponent }
]
|
|
Defining routes |
| ROUTING |
Type : ModuleWithProviders<RouterModule>
|
Default value : RouterModule.forRoot(
ROUTES,
{ useHash: true }
)
|
|
Exporting routes |
| schemaTypeMap |
Type : { }
|
Default value : {
numeric: '',
default: ''
}
|
| VERSION |
Type : object
|
Default value : {
"dirty": false,
"raw": "dd482c4",
"hash": "dd482c4",
"distance": null,
"tag": null,
"semver": null,
"suffix": "dd482c4",
"semverString": null,
"timestamp": "1793153169099",
"adapterVersion": "5.1.2"
}
|