@opengis/fcore 0.0.1-beta.22 → 0.0.1-beta.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/LICENSE +3 -3
  2. package/README.md +71 -71
  3. package/dist/config.js +1 -1
  4. package/dist/context.js +1 -1
  5. package/dist/errors.js +1 -1
  6. package/dist/fastify.d.ts.map +1 -1
  7. package/dist/fastify.js +1 -1
  8. package/dist/fcore.js +1 -1
  9. package/dist/migrations/cli.js +1 -1
  10. package/dist/migrations/runner.js +1 -1
  11. package/dist/modules/auth/adduser-cli.js +1 -1
  12. package/dist/modules/auth/passwd-cli.js +1 -1
  13. package/dist/modules/auth/permission-cli.js +1 -1
  14. package/dist/modules/auth/route.js +1 -1
  15. package/dist/modules/auth/schema.js +1 -1
  16. package/dist/modules/auth/services/change-password.js +1 -1
  17. package/dist/modules/auth/services/get-current-user.js +1 -1
  18. package/dist/modules/auth/services/registration.js +1 -1
  19. package/dist/modules/auth/services/verify-two-factor.js +1 -1
  20. package/dist/modules/file/mime.js +1 -1
  21. package/dist/modules/file/route.js +1 -1
  22. package/dist/modules/file/schema.js +1 -1
  23. package/dist/modules/file/services/get-file.js +1 -1
  24. package/dist/modules/file/services/resize-file.js +1 -1
  25. package/dist/modules/file/services/upload-file.js +1 -1
  26. package/dist/modules/resource/route.js +1 -1
  27. package/dist/modules/resource/schema.d.ts +1 -0
  28. package/dist/modules/resource/schema.d.ts.map +1 -1
  29. package/dist/modules/resource/schema.js +1 -1
  30. package/dist/modules/resource/services/add-note.js +1 -1
  31. package/dist/modules/resource/services/add-resource-file.js +1 -1
  32. package/dist/modules/resource/services/create-resource-relation.js +1 -1
  33. package/dist/modules/resource/services/create-resource.js +1 -1
  34. package/dist/modules/resource/services/delete-resource-relation.js +1 -1
  35. package/dist/modules/resource/services/delete-resource.js +1 -1
  36. package/dist/modules/resource/services/export-resource.js +1 -1
  37. package/dist/modules/resource/services/get-resource.js +1 -1
  38. package/dist/modules/resource/services/list-resource-relation.js +1 -1
  39. package/dist/modules/resource/services/list-resources.d.ts.map +1 -1
  40. package/dist/modules/resource/services/list-resources.js +1 -1
  41. package/dist/modules/resource/services/search-resource.js +1 -1
  42. package/dist/modules/resource/services/suggest-resource.js +1 -1
  43. package/dist/modules/resource/services/update-resource-relation.js +1 -1
  44. package/dist/modules/resource/services/update-resource.js +1 -1
  45. package/dist/modules/resource/services/upload-resource-file.js +1 -1
  46. package/dist/modules/system/route.js +1 -1
  47. package/dist/modules/system/schema.js +1 -1
  48. package/dist/modules/system/services/check-system.js +1 -1
  49. package/dist/modules/system/services/get-access.js +1 -1
  50. package/dist/modules/system/services/get-api-list.js +1 -1
  51. package/dist/modules/system/services/get-audit-log.js +1 -1
  52. package/dist/modules/system/services/get-dictionary.js +1 -1
  53. package/dist/modules/system/services/get-system-log.js +1 -1
  54. package/dist/modules/system/services/get-system-settings.js +1 -1
  55. package/dist/modules/system/services/list-dictionaries.js +1 -1
  56. package/dist/modules/system/services/set-access.js +1 -1
  57. package/dist/modules/system/services/update-dictionary.js +1 -1
  58. package/dist/modules/system/services/update-system-settings.js +1 -1
  59. package/dist/modules/utils/require-admin.js +1 -1
  60. package/dist/modules/utils/safe-user.js +1 -1
  61. package/dist/modules/utils/unsupported.js +1 -1
  62. package/dist/plugins/audit/audit.js +1 -1
  63. package/dist/plugins/audit/services/write-audit.js +1 -1
  64. package/dist/plugins/auth/get-user-permissions.js +1 -1
  65. package/dist/plugins/auth/index.js +1 -1
  66. package/dist/plugins/auth/verifyUser.js +1 -1
  67. package/dist/plugins/dictionary.js +1 -1
  68. package/dist/plugins/file.js +1 -1
  69. package/dist/plugins/jwt.js +1 -1
  70. package/dist/plugins/logger/index.js +1 -1
  71. package/dist/plugins/logger/transport.js +1 -1
  72. package/dist/plugins/pg.js +1 -1
  73. package/dist/plugins/redis.js +1 -1
  74. package/dist/plugins/resource/resource.js +1 -1
  75. package/dist/plugins/resource/resource.registry.js +1 -1
  76. package/dist/plugins/resource/resource.types.d.ts +22 -0
  77. package/dist/plugins/resource/resource.types.d.ts.map +1 -1
  78. package/dist/plugins/resource/services/add-dictionary-lookup-data.js +1 -1
  79. package/dist/plugins/resource/services/add-file-token.js +1 -1
  80. package/dist/plugins/resource/services/add-table-lookup-data.js +1 -1
  81. package/dist/plugins/resource/services/create-relation.d.ts +1 -1
  82. package/dist/plugins/resource/services/create-relation.d.ts.map +1 -1
  83. package/dist/plugins/resource/services/create-relation.js +1 -1
  84. package/dist/plugins/resource/services/create.js +1 -1
  85. package/dist/plugins/resource/services/delete-relation.d.ts +1 -1
  86. package/dist/plugins/resource/services/delete-relation.d.ts.map +1 -1
  87. package/dist/plugins/resource/services/delete-relation.js +1 -1
  88. package/dist/plugins/resource/services/delete.js +1 -1
  89. package/dist/plugins/resource/services/find-one.d.ts.map +1 -1
  90. package/dist/plugins/resource/services/find-one.js +1 -1
  91. package/dist/plugins/resource/services/find-relation.d.ts.map +1 -1
  92. package/dist/plugins/resource/services/find-relation.js +1 -1
  93. package/dist/plugins/resource/services/find.d.ts.map +1 -1
  94. package/dist/plugins/resource/services/find.js +1 -1
  95. package/dist/plugins/resource/services/get-table-columns.d.ts +8 -0
  96. package/dist/plugins/resource/services/get-table-columns.d.ts.map +1 -0
  97. package/dist/plugins/resource/services/get-table-columns.js +1 -0
  98. package/dist/plugins/resource/services/update-relation.js +1 -1
  99. package/dist/plugins/resource/services/update.js +1 -1
  100. package/dist/plugins/resource/utils/auto-index.js +1 -1
  101. package/dist/plugins/resource/utils/fields.js +1 -1
  102. package/dist/plugins/resource/utils/filters.d.ts +2 -1
  103. package/dist/plugins/resource/utils/filters.d.ts.map +1 -1
  104. package/dist/plugins/resource/utils/filters.js +1 -1
  105. package/dist/plugins/resource/utils/permissions.js +1 -1
  106. package/dist/plugins/resource/utils/sort.js +1 -1
  107. package/dist/plugins/resource/utils/sql.js +1 -1
  108. package/dist/plugins/resource/utils/summary.d.ts +3 -0
  109. package/dist/plugins/resource/utils/summary.d.ts.map +1 -0
  110. package/dist/plugins/resource/utils/summary.js +1 -0
  111. package/dist/shared/getIP.js +1 -1
  112. package/migrations/20260903120000_core_schema.sql +1 -1
  113. package/migrations/20260903130000_move_notes_files_to_admin.sql +17 -17
  114. package/migrations/20260903140000_settings_nulls_not_distinct.sql +18 -18
  115. package/migrations/20260905120000_add_user_foreign_keys.sql +42 -42
  116. package/migrations/20260910170000_core_schema.sql +22 -0
  117. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../../src/plugins/resource/utils/summary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAuB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAQ/G,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,YAAY,UA8CjG"}
@@ -0,0 +1 @@
1
+ function n(s,J){s=s-0x1c2;const N=W();let O=N[s];return O;}const D=n;function W(){const o=['count','sql','(COUNT(*)\x20FILTER\x20(where\x20','where','countDistinct','(COUNT(DISTINCT\x20t.','true',')\x20AS\x20\x22','scopes','filter','FROM\x20','\x20t\x20'];W=function(){return o;};return W();}import{buildFilters}from'./filters.js';import{qt}from'./sql.js';const defaultSummary={'count':{'aggregate':D(0x1c2)}};export function buildSummary(s,J,N){const v=D,O={...defaultSummary,...s['summary']??{}},E=Object['entries'](O)['map'](([g,p])=>{const R=n;if('sql'in p)return'('+p[R(0x1c3)]+')\x20AS\x20\x22'+g+'\x22';switch(p['aggregate']){case R(0x1c2):return R(0x1c4)+(p[R(0x1c5)]??'true')+'))::int\x20AS\x20\x22'+g+'\x22';case R(0x1c6):return R(0x1c7)+qt(p['field'])+')\x20FILTER\x20(where\x20'+(p['where']??R(0x1c8))+'))::int\x20AS\x20\x22'+g+'\x22';case'sum':return'SUM('+p['field']+')\x20FILTER\x20(where\x20'+(p[R(0x1c5)]??R(0x1c8))+R(0x1c9)+g+'\x22';case'avg':return'AVG('+p['field']+')\x20FILTER\x20(where\x20'+(p[R(0x1c5)]??'true')+R(0x1c9)+g+'\x22';case'min':return'MIN('+p['field']+')\x20FILTER\x20(where\x20'+(p[R(0x1c5)]??'true')+')\x20AS\x20\x22'+g+'\x22';case'max':return'MAX('+p['field']+')\x20FILTER\x20(where\x20'+(p[R(0x1c5)]??'true')+R(0x1c9)+g+'\x22';}}),S=buildFilters(s,J['filter']);s['where']&&(S['sql']+=(S[v(0x1c3)]?'\x20AND\x20':'\x20WHERE\x20')+('('+s[v(0x1c5)]+')'));const T=J['scope']||(s['scopes']?.['default']?'default':undefined);T&&(S['sql']+=(S['sql']?'\x20AND\x20':'\x20WHERE\x20')+('('+(s[v(0x1ca)]?.[T]||'true')+')'));const f=s['joins']?.[v(0x1cb)](g=>g['scope']!=='item')['map'](g=>g[v(0x1c3)]+'\x20')['join']('\x20')||'',a='SELECT\x20'+E['join'](',\x20')+'\x20'+(v(0x1cc)+qt(s['table'])+v(0x1cd))+(f+'\x20'+S[v(0x1c3)]['replace'](/:uid/g,'\x27'+(N?.['id']??'NULL')+'\x27'));return a;}
@@ -1 +1 @@
1
- const K=d,getIP=B=>(B['headers']?.[K(0x8b)]||B['headers']?.['x-forwarded-for']||B['ip']||B['connection']?.[K(0x8c)]||'')[K(0x8d)](':')['pop']();function E(){const T=['x-real-ip','remoteAddress','split'];E=function(){return T;};return E();}function d(B,K){B=B-0x8b;const T=E();let L=T[B];return L;}export default getIP;
1
+ function W(){const N=['headers'];W=function(){return N;};return W();}const J=n,getIP=s=>(s['headers']?.['x-real-ip']||s[J(0x9d)]?.['x-forwarded-for']||s['ip']||s['connection']?.['remoteAddress']||'')['split'](':')['pop']();function n(s,J){s=s-0x9d;const N=W();let O=N[s];return O;}export default getIP;
@@ -186,7 +186,7 @@ CREATE TABLE IF NOT EXISTS admin.files (
186
186
  tags text[],
187
187
  file_path text,
188
188
  field_name text,
189
- status text DEFAULT 'pending', // File processing status, e.g., 'pending', 'attached'
189
+ status text DEFAULT 'pending', -- File processing status, e.g., 'pending', 'attached'
190
190
  expires_at timestamptz DEFAULT now() + interval '1 day',
191
191
  verified boolean DEFAULT false,
192
192
  resized boolean,
@@ -1,18 +1,18 @@
1
- CREATE SCHEMA IF NOT EXISTS admin;
2
-
3
- DO $$
4
- BEGIN
5
- IF to_regclass('crm.notes') IS NOT NULL
6
- AND to_regclass('admin.notes') IS NULL THEN
7
- ALTER TABLE crm.notes SET SCHEMA admin;
8
- END IF;
9
-
10
- IF to_regclass('crm.files') IS NOT NULL
11
- AND to_regclass('admin.files') IS NULL THEN
12
- ALTER TABLE crm.files SET SCHEMA admin;
13
- END IF;
14
- END
15
- $$;
16
-
17
- ALTER INDEX IF EXISTS crm_notes_resource_idx RENAME TO admin_notes_resource_idx;
1
+ CREATE SCHEMA IF NOT EXISTS admin;
2
+
3
+ DO $$
4
+ BEGIN
5
+ IF to_regclass('crm.notes') IS NOT NULL
6
+ AND to_regclass('admin.notes') IS NULL THEN
7
+ ALTER TABLE crm.notes SET SCHEMA admin;
8
+ END IF;
9
+
10
+ IF to_regclass('crm.files') IS NOT NULL
11
+ AND to_regclass('admin.files') IS NULL THEN
12
+ ALTER TABLE crm.files SET SCHEMA admin;
13
+ END IF;
14
+ END
15
+ $$;
16
+
17
+ ALTER INDEX IF EXISTS crm_notes_resource_idx RENAME TO admin_notes_resource_idx;
18
18
  ALTER INDEX IF EXISTS crm_notes_uid_idx RENAME TO admin_notes_uid_idx;
@@ -1,19 +1,19 @@
1
- CREATE SCHEMA IF NOT EXISTS admin;
2
-
3
- CREATE TABLE IF NOT EXISTS admin.settings (
4
- id text PRIMARY KEY DEFAULT next_id(),
5
- resource text NOT NULL DEFAULT 'system',
6
- resource_id text,
7
- key text NOT NULL,
8
- value jsonb,
9
- updated_by text,
10
- updated_at timestamptz NOT NULL DEFAULT now(),
11
- created_by text,
12
- created_at timestamptz NOT NULL DEFAULT now()
13
- );
14
-
15
- DROP INDEX IF EXISTS settings_resource_key_uidx;
16
-
17
- CREATE UNIQUE INDEX settings_resource_key_uidx
18
- ON admin.settings (resource, resource_id, key)
1
+ CREATE SCHEMA IF NOT EXISTS admin;
2
+
3
+ CREATE TABLE IF NOT EXISTS admin.settings (
4
+ id text PRIMARY KEY DEFAULT next_id(),
5
+ resource text NOT NULL DEFAULT 'system',
6
+ resource_id text,
7
+ key text NOT NULL,
8
+ value jsonb,
9
+ updated_by text,
10
+ updated_at timestamptz NOT NULL DEFAULT now(),
11
+ created_by text,
12
+ created_at timestamptz NOT NULL DEFAULT now()
13
+ );
14
+
15
+ DROP INDEX IF EXISTS settings_resource_key_uidx;
16
+
17
+ CREATE UNIQUE INDEX settings_resource_key_uidx
18
+ ON admin.settings (resource, resource_id, key)
19
19
  NULLS NOT DISTINCT;
@@ -1,43 +1,43 @@
1
- ALTER TABLE admin.users
2
- ADD CONSTRAINT users_created_by_fkey
3
- FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
4
- ADD CONSTRAINT users_updated_by_fkey
5
- FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
6
-
7
- ALTER TABLE admin.user_roles
8
- ADD CONSTRAINT user_roles_created_by_fkey
9
- FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
10
- ADD CONSTRAINT user_roles_updated_by_fkey
11
- FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
12
-
13
- ALTER TABLE admin.role_access
14
- ADD CONSTRAINT role_access_user_uid_fkey
15
- FOREIGN KEY (user_uid) REFERENCES admin.users(uid) ON DELETE CASCADE,
16
- ADD CONSTRAINT role_access_created_by_fkey
17
- FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
18
- ADD CONSTRAINT role_access_updated_by_fkey
19
- FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
20
-
21
- ALTER TABLE admin.dictionaries
22
- ADD CONSTRAINT dictionaries_created_by_fkey
23
- FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
24
- ADD CONSTRAINT dictionaries_updated_by_fkey
25
- FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
26
-
27
- ALTER TABLE admin.notes
28
- ADD CONSTRAINT notes_created_by_fkey
29
- FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
30
- ADD CONSTRAINT notes_updated_by_fkey
31
- FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
32
-
33
- ALTER TABLE admin.files
34
- ADD CONSTRAINT files_created_by_fkey
35
- FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
36
- ADD CONSTRAINT files_updated_by_fkey
37
- FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
38
-
39
- ALTER TABLE admin.settings
40
- ADD CONSTRAINT settings_created_by_fkey
41
- FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
42
- ADD CONSTRAINT settings_updated_by_fkey
1
+ ALTER TABLE admin.users
2
+ ADD CONSTRAINT users_created_by_fkey
3
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
4
+ ADD CONSTRAINT users_updated_by_fkey
5
+ FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
6
+
7
+ ALTER TABLE admin.user_roles
8
+ ADD CONSTRAINT user_roles_created_by_fkey
9
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
10
+ ADD CONSTRAINT user_roles_updated_by_fkey
11
+ FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
12
+
13
+ ALTER TABLE admin.role_access
14
+ ADD CONSTRAINT role_access_user_uid_fkey
15
+ FOREIGN KEY (user_uid) REFERENCES admin.users(uid) ON DELETE CASCADE,
16
+ ADD CONSTRAINT role_access_created_by_fkey
17
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
18
+ ADD CONSTRAINT role_access_updated_by_fkey
19
+ FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
20
+
21
+ ALTER TABLE admin.dictionaries
22
+ ADD CONSTRAINT dictionaries_created_by_fkey
23
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
24
+ ADD CONSTRAINT dictionaries_updated_by_fkey
25
+ FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
26
+
27
+ ALTER TABLE admin.notes
28
+ ADD CONSTRAINT notes_created_by_fkey
29
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
30
+ ADD CONSTRAINT notes_updated_by_fkey
31
+ FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
32
+
33
+ ALTER TABLE admin.files
34
+ ADD CONSTRAINT files_created_by_fkey
35
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
36
+ ADD CONSTRAINT files_updated_by_fkey
37
+ FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
38
+
39
+ ALTER TABLE admin.settings
40
+ ADD CONSTRAINT settings_created_by_fkey
41
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
42
+ ADD CONSTRAINT settings_updated_by_fkey
43
43
  FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
@@ -0,0 +1,22 @@
1
+ CREATE TABLE IF NOT EXISTS admin.gallery (
2
+ id text PRIMARY KEY DEFAULT next_id(),
3
+ resource text,
4
+ resource_id text,
5
+ uploaded_name text,
6
+ file_type text,
7
+ file_status numeric,
8
+ file_name text,
9
+ size numeric,
10
+ mime_type text check (mime_type = any(array['image/png','image/jpeg','image/webp']) ),
11
+ tags text[],
12
+ file_path text,
13
+ field_name text,
14
+ status text DEFAULT 'pending', -- File processing status, e.g., 'pending', 'attached'
15
+ expires_at timestamptz DEFAULT now() + interval '1 day',
16
+ verified boolean DEFAULT false,
17
+ resized boolean,
18
+ created_by text REFERENCES admin.users(uid) ,
19
+ created_at timestamptz DEFAULT now(),
20
+ updated_by text REFERENCES admin.users(uid) ,
21
+ updated_at timestamptz default now()
22
+ );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengis/fcore",
3
- "version": "0.0.1-beta.22",
3
+ "version": "0.0.1-beta.24",
4
4
  "description": "Reusable backend foundation for OpenGIS Node.js applications",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -90,4 +90,4 @@
90
90
  "vitest": "4.1.11"
91
91
  },
92
92
  "license": "UNLICENSED"
93
- }
93
+ }