- Node/Express/TypeScript API under /api/v1 with JWT auth (login, refresh, logout, /me) - Prisma schema: vendors, users, roles, products, categories, taxes, transactions - SQLite for local dev; Postgres via docker-compose for production - Full CRUD routes for vendors, users, categories, taxes, products with Zod validation and RBAC - Paginated list endpoints scoped per vendor; refresh token rotation - React/TypeScript admin SPA (Vite): login, protected routing, sidebar layout - Pages: Dashboard, Catalog (tabbed Products/Categories/Taxes), Users, Vendor Settings - Shared UI: Table, Modal, FormField, Btn, PageHeader components - Multi-stage Dockerfile; docker-compose with Postgres healthcheck - Seed script with demo vendor and owner account - INSTRUCTIONS.md, ROADMAP.md, .claude/launch.json for dev server config Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
30 lines
683 B
JavaScript
30 lines
683 B
JavaScript
'use strict';
|
|
|
|
var inspect = require('../');
|
|
var test = require('tape');
|
|
var hasToStringTag = require('has-tostringtag/shams')();
|
|
var forEach = require('for-each');
|
|
|
|
test('fakes', { skip: !hasToStringTag }, function (t) {
|
|
forEach([
|
|
'Array',
|
|
'Boolean',
|
|
'Date',
|
|
'Error',
|
|
'Number',
|
|
'RegExp',
|
|
'String'
|
|
], function (expected) {
|
|
var faker = {};
|
|
faker[Symbol.toStringTag] = expected;
|
|
|
|
t.equal(
|
|
inspect(faker),
|
|
'{ [Symbol(Symbol.toStringTag)]: \'' + expected + '\' }',
|
|
'faker masquerading as ' + expected + ' is not shown as one'
|
|
);
|
|
});
|
|
|
|
t.end();
|
|
});
|